Zabbix 配置邮件报警
2015-07-02 by dongnan
开始之前
zabbix 支持以下几种方式发送通知。
E-mail
:使用sendmail
发送邮件,由于会被认为是垃圾邮件被拒,所以不推荐。SMS
:需要短信猫,没有短信设备所以放弃。Jabber
:第三方插件,能让Jabber
用户和MSN
、YahooMessager
、ICQ
等 IM 用户相互通讯。 拜gwf
所赐无法使用。Ez Texting
:给用户手机发短信,貌似只支持美国和加拿大,放弃。Custom alertscripts
:自定义脚本,把信息传递给脚本,我们在脚本里使用sendEmail
、调用短信接口发送短信等,也是今天示例所使用的方式。
环境
操作系统: CentOS 6.6 amd64
软件版本: zabbix 2.4.x
脚本版本: sendEmail-1.56
操作步骤
准备脚本
使用自定义的脚本,zabbix 会将信息传递给脚本,你可以在脚本里面随意处理(如sendEmail
命令)。
脚本按顺序接受是$1,$2,$3
了,为了方便记忆,一般分别给他们赋值到 To\Subject\body
。
# 脚本目录
awk '/^AlertScriptsPath/' /etc/zabbix/zabbix_server.conf
AlertScriptsPath=/usr/lib/zabbix/alertscripts
# 脚本权限
ll /usr/lib/zabbix/alertscripts/mail.sh
-rwxr-xr-x 1 zabbix zabbix 293 Jun 30 16:46 /usr/lib/zabbix/alertscripts/mail.sh
# 脚本代码
cat /usr/lib/zabbix/alertscripts/mail.sh
#!/bin/bash
#script name:mail.sh
#20150611 by dongnan
to=$1
subject=$2
body=$3
/usr/local/bin/sendEmail -f monitor@ywwd.net -t "$to" -s smtp.exmail.qq.com:25 -u "$subject" -xu monitor@ywwd.net -xp dongnan -m "$body" 2 >>/tmp/sendEmail.log
自定义媒介
路径:Administration -> Media types -> 创建(类型:Script)
定义好了媒介之后需要把这媒介配置给指定给用户。
路径:Administration -> Users -> 用户名 -> media -> 添加创建的媒介。
Triggers 与 Actions
完成上3个步骤 zabbix
扔不能发送报警邮件,还需要定义 Triggers
(触发) 与 Actions
(动作):
- Triggers,可以使用模板中自带的,也可以自己定义。
- Actions,需要自己定义。
下面使用一个例子说明。
举个栗子
使用 ping
检测 ywwd.net
,如果无法ping
通则发送报警邮件,恢复再次发送邮件。
操作步骤
创建主机
使用模板:Template ICMP Ping
Triggers:模板中的triggers
action(动作),路径:在 Configuration -> Actions -> Create action
Recovery message
表示恢复发送邮件。Enabled
表示启用这条action。
condition(条件)
A
Maintenance status not in maintenance 表示机器不是在维护状态B
Trigger value = PROBLEM 表示触发值为非正常状态C
Trigger severity >= Warning
这里添加一个新的条件 Trigger severity >= Warning trigger
级别大于等于 warnning
的。
条件为"与" 就是说 A && B && C
3个条件都满足才可以。
operations(操作)
这里表示只发送一次,用户为 oma 。
验证
目标服务器禁止 icmp协议:
iptables -I INPUT -p icmp -j DROP
zabbix触发报警
zabbix发送邮件
Actions 重复报警
问题描述
使用自带的模板 Template App HTTP Service
,监控web服务器 80
端口,关闭nginx
服务 zabbix 持续报警。
解决方法
去掉 Tigger
中的 Multiple PROBLEM events generation
勾选项,如下图:
注意
- 如果是已经触发了报警后,去掉上面的选项,需要在下次触发报警时重新计算,否则还会持续报警。
- 猜测可能是该选项导致单位时间内,分次计算每次都能满足触发条件,导致重复报警。
Actions 定制规则
zabbix 触发报警后,前三次发送用户A ,以后发送给用户B ,间隔时间100秒:
步骤
验证
zabbix 3.2 报警配置
zabbix 3.2 配置报警有所不同
步骤
使用 sendEmail 脚本发送邮件,需要定义3个参数:
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
为用户指定媒介类型
配置action动作
启用并编辑默认的 action ,条件被拆分为默认操作与恢复操作,两项:
Operations
Recovery
验证
可以停止某个主机 zabbix-agent
验证报警。
Zabbix 3.2 on Docker
脚本文件
# 输入命令
cat mail.sh
#!/bin/bash
To=$1
Subject=$2
Body=$3
mail=/usr/local/bin/sendEmail
from="monitor@demo.com"
server="smtp.exmail.qq.com:25"
sender="monitor@demo.com"
$mail -f $from -t "$To" -s $server -u "$Subject" -xu $sender -xp 'YourPassword' -m "$Body" 2>&1 >> /var/log/mail.log
脚本目录
cd /usr/lib/zabbix/alertscripts/
脚本权限
# 输入命令
ls -la mail.sh
-rwxr-xr-x 1 zabbix zabbix 278 Jul 19 11:18 mail.sh
注意,脚本文件的属主与属组都是 zabbix
用户。
参考
- sendEmail
- zabbix action报警配置(36)