路漫漫其修远兮
吾将上下而求索

zabbix学习:邮件报警配置

sendEmail命令看另外的博文这里只使用

进入zabbix自定义的指定目录,可以查看zabbix_server.conf配置文件AlertScriptsPath变量是如何定义的。

AlertScriptsPath=/usr/lib/zabbix/alertscripts
cd /usr/lib/zabbix/alertscripts
[root@localhost /usr/lib/zabbix/alertscripts]#vim sendEmail.sh

重启zabbix-server服务,加载这个脚本文件

service zabbix-server restart

2、web界面配置

增加一个媒介通道,通过脚本来进行发送报警信息

步骤:administration —- media types —- create media type ,

        添加以下3个参数,分别对应sendEmail.sh脚本需要的3个参数:收件人地址、主题、详细内容,指定脚本的名称,zabbix会去配置里面设置的路径下面找对应的脚本

        {ALERT.SENDTO},在用户添加媒介的时候设置,这三个参数就像是中间联系人,联系邮件内容和发送邮件的方式

        {ALERT.SUBJECT},在设置action的时候会显示

        {ALERT.MESSAGE},在设置action的时候会显示

Image 001.jpg

具体的邮件主题和邮件内容

步骤:configuration —- action,需要修改的内容在这里修改,发送邮件的时候,先触发执行action,事件套用这个模板,发送到指定的媒介通道中

Image 002.jpg

指定admin用户的媒介通道为脚本,并指定adim的收邮件的地址

步骤:administration —- user —- admin —- media 

Image 003.jpg

设定用户组权限:

步骤:administration —- user groups —- zabbix administrators —- permissions

将全部设置为可以读写

Image 006.jpg

设定action:

步骤:configuration —- actions 指定自己的action,具体的含义见前面的介绍,在operation中添加一个发邮件的操作,指定用户和发送消息的方式

Image 004.jpg

    解释:默认的步骤是3-3,也即是从3开始到3结束。一旦故障发生,就是执行sendEmail脚本发生报警邮件给Admin用户。

    假如故障持续了1个小时,它也只发送一次。如果改成1-0,0是表示不限制.无限发送

    间隔就是默认持续时间60秒。那么一个小时,就会发送60封邮件。

    如果需要短信报警的话,可以再创建一条新的动作,选择短信脚本。

收到邮件的内容

Image 007.jpg

可以看到邮件里面内容都堆到一起了,没有换行,有点不爽。可以修改动作日志的内容格式

点击 configuration —- action —- Report problems to Zabbix administrators

在默认信息每一行后面添加<br/>

例如:

Trigger: {TRIGGER.NAME}<br/>
Trigger status: {TRIGGER.STATUS}<br/>
Trigger severity: {TRIGGER.SEVERITY}<br/>
Trigger URL: {TRIGGER.URL}<br/>

Item values:<br/>

1. {ITEM.NAME1} ({HOST.NAME1}:{ITEM.KEY1}): {ITEM.VALUE1}<br/>
2. {ITEM.NAME2} ({HOST.NAME2}:{ITEM.KEY2}): {ITEM.VALUE2}<br/>
3. {ITEM.NAME3} ({HOST.NAME3}:{ITEM.KEY3}): {ITEM.VALUE3}<br/>

Original event ID: {EVENT.ID}

因为我用sendEmail.sh脚本指定格式是html,所以换行就是<br/>

Image 001.jpg

查看结果

Image 002.jpg

接着修改,看英文有点不爽,我们还可以再改一下

        默认信息和恢复信息是一样的

告警主机:&nbsp;{HOSTNAME1}<br/>
告警时间:&nbsp;{EVENT.DATE} {EVENT.TIME}<br/>
告警等级:&nbsp;{TRIGGER.SEVERITY}<br/>
告警信息: &nbsp;{TRIGGER.NAME}<br/>
告警项目:&nbsp;{TRIGGER.KEY1}<br/>
问题详情:&nbsp;{ITEM.NAME}:&nbsp;{ITEM.VALUE}<br/>
当前状态:&nbsp;{TRIGGER.STATUS}:&nbsp;{ITEM.VALUE1}<br/>
事件ID:&nbsp;{EVENT.ID}<br/>

查看结果           

Image 003.jpg

后来发现,有时候会显示拒收,不知道是程序问题还是被当成垃圾邮件了,需要修改下

1、将zabbix发件人添加到收件人邮箱的白名单中,这样不管zabbix发送什么邮件都不会被拒收

2、修改程序,如果发送失败,重新发送,失败后一直最多发送5次,保证能够成功发送,这样感觉就ok了

Image 002.jpg

主题:zabbix通知:{TRIGGER.STATUS}
内容:

告警主机:&nbsp;{HOSTNAME1}<br/>
告警时间:&nbsp;{EVENT.DATE} {EVENT.TIME}<br/>
告警等级:&nbsp;{TRIGGER.SEVERITY}<br/>
告警状况:&nbsp;{TRIGGER.STATUS}<br/>
告警信息: &nbsp;{TRIGGER.NAME}<br/>
告警项目:&nbsp;{TRIGGER.KEY1}<br/>
问题详情:&nbsp;{ITEM.NAME}:&nbsp;{ITEM.VALUE}<br/>
当前状态:&nbsp;{TRIGGER.STATUS}:&nbsp;{ITEM.VALUE1}<br/>
事件ID:&nbsp;{EVENT.ID}<br/>

最后显示的日志,可以看到发送错误会再次发送,次数为2,我擦,为了保证邮件一定能够成功发送,我只能在这里用死循环来发送了,只要不成功,就一直继续下去。

Mar 28 00:40:54 localhost sendEmail[32242]: Email was sent successfully!
SendStatus: 0
SendCount: 1
contact@andblog.cn
zabbix通知:PROBLEM
告警主机:&nbsp;redis-14<br/>
告警时间:&nbsp;2017.03.28 00:40:23<br/>
告警等级:&nbsp;High<br/>
告警状况:&nbsp;PROBLEM<br/>
告警信息: &nbsp;port 80 down<br/>
告警项目:&nbsp;net.tcp.listen[80]<br/>
问题详情:&nbsp;if port 80 ok:&nbsp;0 1-ok<br/>
当前状态:&nbsp;PROBLEM:&nbsp;0 1-ok<br/>
事件ID:&nbsp;1400<br/>
--------------------------------------------------
Mar 28 00:41:15 localhost sendEmail[32244]: ERROR => Connection attempt to smtp.exmail.qq.com:25 failed: IO::Socket::INET: connect: Connection refused
Mar 28 00:41:17 localhost sendEmail[32249]: Email was sent successfully!
SendStatus: 0
SendCount: 2
contact@andblog.cn
zabbix通知:OK
告警主机:&nbsp;redis-14<br/>
告警时间:&nbsp;2017.03.28 00:40:23<br/>
告警等级:&nbsp;High<br/>
告警状况:&nbsp;OK<br/>
告警信息: &nbsp;port 80 down<br/>
告警项目:&nbsp;net.tcp.listen[80]<br/>
问题详情:&nbsp;if port 80 ok:&nbsp;1 1-ok<br/>
当前状态:&nbsp;OK:&nbsp;1 1-ok<br/>
事件ID:&nbsp;1400<br/>

邮件

Image 004.jpg

参考文章1

未经允许不得转载:江哥架构师笔记 » zabbix学习:邮件报警配置

分享到:更多 ()

评论 抢沙发

评论前必须登录!