以前已经做出这个实验了,没有做记录现在线上环境要使用邮件告警,再次使用还是有好多地方没有很快定位到问题所在。所以还是决定要写这篇博客。
zabbix能通过邮件或者其他的通信方式告知server problem 或者ok状态的变化。
一、整体思路
items->trigger->actions->scripts->send email
当监控项的值触发了创建的触发器,触发器就会调用动作将(标题,状况)等信息调用配置好的scripts去发送邮件。
接下来思路是先在zabbix server配置好能发送邮件的工具。
二、配置邮件发送工具
1、安装mailx
yum install mailx
2、配置发送邮件用户
vim /etc/mail.rc
跳到最后一行添加
#能用邮件的用户例如[email protected]
#该邮箱的smtp服务器
smtp=smtp.sendcloud.net
#邮件的用户名
#邮箱密码(sendcloud工具),163或者qq邮箱都是该用户邮箱的授权码
smtp-auth-password=*********
set smtp-auth=login
保存退出
3、测试
echo “test”|mail -s “test”[email protected]
此时应该是收到邮件了,这就是是是用特定用户发送邮件的配置步骤。
三、配置zabbix server scripts
1、配置zabbix server
在二中配置邮件发送工具,接下来要让zabbix server能调用脚本发送邮件
vim /etc/zabbix/zabbix_server.conf
将此行注释去掉。
AlertScriptsPath=/usr/lib/zabbix/alertscripts/
保存退出
service zabbix-server restart
2、编写脚本
cd /usr/lib/zabbix/alertscripts/
安装这个命令,否则发送邮件内容里会有个附件.bin看不到真正的邮件内容。由于windows和linux的文件格式不同吧。
yum install dos2unix
vim scripts.sh
#!/bin/bash
#export LANG=zh_CN.UTF-8
to=$1
subject=$2
body=$3
FILE=/tmp/mailtmp.txt
echo "$3" >$FILE
dos2unix -k $FILE
/bin/mail -s "$2" $1 < $FILE
保存退出。
生成/tmp/mailtmp.txt
修改权限
chown zabbix:zabbix zabbix
修改脚本权限和属主,属组,否则zabbix没有权限调用脚本
chmod +x scripts
chown zabbix:zabbix scripts.sh
3、测试
./scripts [email protected] test test
同样,没有意外也会收到邮件,此时zabbix server 已经能够调用脚本发送邮件了。
接下来我们去zabbix server web界面 耍一耍,浪一浪。。。。
四、配置媒介方式
点击administration->Media types->create media type
1、就是刚写的脚本的名字
2、这是个比较大的坑,在zabbix 2.x没有这一项,这是给脚本传递参数,如果没有配置2这一项会出现显示已发送成功但是未成功收到邮件。
五、配置用户信息
这里配置的主要是要使用zabbix的哪个用户作为告警对象。配置该用户的media 填写要接收邮件的address,和media type
1、是在四中定义的media type
2、是接收邮件的email address
六、配置actions
点击 create action
(1)action
名字随意喽
default subject 是发送邮件的主题
服务器:{HOSTNAME1}:{TRIGGER.NAME}
default message 是脚本里的body也就是内容
告警主机:{HOSTNAME1}
告警信息: {TRIGGER.NAME}
当前状态:{TRIGGER.STATUS}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
recoerage message 是当问题恢复时发送的
和上边的一样只是trigger status 变了。
(2)Condions (条件)
红框那可以选择条件(例如当trigger里有包含此处的trigger名字就会发生这个动作)
Operations里添加收告警的用户组和用户。
step那一样默认就可以。如果限定前几次和后几次发给不通级别的人就不要使用默认的了。默认的意思是当告警触发邮件时就发一次而已。这看需求。。。
保存。
七、测试
万事俱备,只欠东风。可以找一台机器关掉zabbix agent
可以看dashboard 上的events 是不是有actions发生。如果status是sent说明已经发送成功。