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的时候会显示
具体的邮件主题和邮件内容
步骤:configuration —- action,需要修改的内容在这里修改,发送邮件的时候,先触发执行action,事件套用这个模板,发送到指定的媒介通道中
指定admin用户的媒介通道为脚本,并指定adim的收邮件的地址
步骤:administration —- user —- admin —- media
设定用户组权限:
步骤:administration —- user groups —- zabbix administrators —- permissions
将全部设置为可以读写
设定action:
步骤:configuration —- actions 指定自己的action,具体的含义见前面的介绍,在operation中添加一个发邮件的操作,指定用户和发送消息的方式
解释:默认的步骤是3-3,也即是从3开始到3结束。一旦故障发生,就是执行sendEmail脚本发生报警邮件给Admin用户。
假如故障持续了1个小时,它也只发送一次。如果改成1-0,0是表示不限制.无限发送
间隔就是默认持续时间60秒。那么一个小时,就会发送60封邮件。
如果需要短信报警的话,可以再创建一条新的动作,选择短信脚本。
收到邮件的内容
可以看到邮件里面内容都堆到一起了,没有换行,有点不爽。可以修改动作日志的内容格式
点击 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/>
查看结果
接着修改,看英文有点不爽,我们还可以再改一下
默认信息和恢复信息是一样的
告警主机: {HOSTNAME1}<br/> 告警时间: {EVENT.DATE} {EVENT.TIME}<br/> 告警等级: {TRIGGER.SEVERITY}<br/> 告警信息: {TRIGGER.NAME}<br/> 告警项目: {TRIGGER.KEY1}<br/> 问题详情: {ITEM.NAME}: {ITEM.VALUE}<br/> 当前状态: {TRIGGER.STATUS}: {ITEM.VALUE1}<br/> 事件ID: {EVENT.ID}<br/>
查看结果
后来发现,有时候会显示拒收,不知道是程序问题还是被当成垃圾邮件了,需要修改下
1、将zabbix发件人添加到收件人邮箱的白名单中,这样不管zabbix发送什么邮件都不会被拒收
2、修改程序,如果发送失败,重新发送,失败后一直最多发送5次,保证能够成功发送,这样感觉就ok了
主题:zabbix通知:{TRIGGER.STATUS} 内容: 告警主机: {HOSTNAME1}<br/> 告警时间: {EVENT.DATE} {EVENT.TIME}<br/> 告警等级: {TRIGGER.SEVERITY}<br/> 告警状况: {TRIGGER.STATUS}<br/> 告警信息: {TRIGGER.NAME}<br/> 告警项目: {TRIGGER.KEY1}<br/> 问题详情: {ITEM.NAME}: {ITEM.VALUE}<br/> 当前状态: {TRIGGER.STATUS}: {ITEM.VALUE1}<br/> 事件ID: {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 告警主机: redis-14<br/> 告警时间: 2017.03.28 00:40:23<br/> 告警等级: High<br/> 告警状况: PROBLEM<br/> 告警信息: port 80 down<br/> 告警项目: net.tcp.listen[80]<br/> 问题详情: if port 80 ok: 0 1-ok<br/> 当前状态: PROBLEM: 0 1-ok<br/> 事件ID: 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 告警主机: redis-14<br/> 告警时间: 2017.03.28 00:40:23<br/> 告警等级: High<br/> 告警状况: OK<br/> 告警信息: port 80 down<br/> 告警项目: net.tcp.listen[80]<br/> 问题详情: if port 80 ok: 1 1-ok<br/> 当前状态: OK: 1 1-ok<br/> 事件ID: 1400<br/>
邮件
–
–
–
评论前必须登录!
注册