记录一次zabbix邮件告警搭建过程和问题处理
(不是一天写成blog,有截图上的时间差)
流程:
1.配置zabbix-server服务端mailx,并在zabbix-server.conf配置文件的脚本路径中添加邮件脚本;
2.配置web界面选项的动作,报警媒介类型,
3.在用户中添加告警媒介,设置类型,收件人等选项
首先,在zabbix-server客户端安装mailx,先停掉postfix
systemctl stop postfix.service
yum install mailx -y
在配置文件最后面编写发送使用的配置邮件:
vim /etc/mail.rc
set bsdcompat set from=yourmail@163.com set smtp=smtp.163.com set smtp-auth-user=yourmail@163.com set smtp-auth-password=163邮箱授权码 set smtp-auth=login
163邮箱授权码获得方式:
需要手机发送短信收到之后网页163邮箱确定会会出现一次,记住在添加到配置中去。。
测试,自己给自己发一下吧:
echo "yourmail@163.com test" | mailx -s "zabbix-alert" yourmail@163.com
测试 成功了!!!
===
创建邮件发送脚本
先看下zabbix-server配置文件查看下发送脚本的目录
找到alertscripts目录,
编写脚本mail.sh,并赋予执行权限x,
#!/bin/bash
echo "use mailx to send mail"
echo "$3" | mail -s "$2" "$1"
OK,,
配置报警媒介回到zabbix-server 界面,在告警媒介添加新的告警
脚本名称要和配置文件中的一样,,点击测试
要添加发送的邮箱收告警信息,成功如下图,
配置动作
紧接着配置zabbix界面上的动作选项,
动作选项中,在子选项条件选项中添加对应的触发条件,我设置的是主机web1的nginx宕机为触发条件,也可以添加一个主机组,
操作选项中,消息内容要把需要的报警信息填进去,会在邮件中显示,操作细节必须填写,要设定发送邮件给定的主机或主机组,恢复操作细节也是,但也可以不写,不写在事故恢复时,不会发邮件告诉我事故已经没有了,,
操作-->消息内容:
故障{TRIGGER.STATUS},服务器:{HOSTNAME1}发生: {TRIGGER.NAME}故障!
告警主机:{HOSTNAME1}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}
恢复操作-->消息内容:
恢复故障{TRIGGER.STATUS},服务器:{HOSTNAME1}发生: {TRIGGER.NAME}故障!
恢复主机:{HOSTNAME1}
恢复时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
恢复告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}
看下演示:
然后在用户中添加告警媒介
当监控主机web1的nginx停掉后,zabbix-server会发送邮件通知。
===============================================================
报错集合:
1.碰到的错误如图,发送邮件的时候显示以失败,并报错No media defined for user.
原因如图,我在玩配置用户报警媒介的时候类型忘记选择自定义的邮件告警,将类型选择邮件告警,正常发送:
2.这个也不是错误
就是收到的邮件是个bin文件,需要下载之后改成txt类型查看,怎么解决?
解决了!!
mail.sh脚本配置文件:
#!/bin/bash #export LANG=zh_CN.UTF-8 #dos2unix -k "$3" #echo "use mailx to send mail" #echo "$3" | mail -s "$2" "$1" #export.UTF-8 ###解决发送的中文变成了乱码的问题 #FILE=/tmp/zabbix_mail.txt #echo "$3" >$FILE #dos2unix -k $FILE ###解决了发送的邮件内容变成附件的问题。 #/usr/bin/mail -s "$2" $1 < $FILE SENT_TO=$1 SENT_SUBJECT=$2 SENT_CONTENT="/tmp/alert_$$.tmp" echo "$3">$SENT_CONTENT dos2unix $SENT_CONTENT mailx -s "SENT_SUBJECT" $SENT_TO<$SENT_CONTENT