zabbxi 邮件告警推送有两种方式:
1.使用外部邮箱指定为告警发送邮箱
2.使用zabbix服务端的本地邮箱账号发送,邮件名为:[email protected]。其中:
user为发送邮件的用户;
hostname为zabbix-server的主机名,该邮箱只能发送,不能接收外部邮件;
我就采用第一种告警方式:
yum -y install sendmail //邮件传送代理MTA
yum -y install mailx //邮件用户代理MUA
标注:实际企业公司中,如果有外部邮箱地址,就不需要上述步骤,直接进行第(2)步操作:
(1)有限授权码的获取
注:(这里我选择了qq邮箱,当然网易邮箱也行,只要能获取授权码的都行)
(2)配置外部邮箱:vim /etc/mail.rc
[root@anliu ~]# vim /etc/mail.rc
set sendcharset=iso-8859-1,utf-8
set from=*******@qq.com #注册的个人邮箱,用于zabbix服务端转发邮件到指定邮箱
set smtp=smtp.qq.com #smtp地址,如果选择网易邮箱,smtp=smtp.163.com
set smtp-auth-user==*******@qq.com #个人邮箱用户
set smtp-auth-password=****** #邮箱授权码(这里一定是你获取到的授权码,不是你邮箱登录的密码)
set smtp-auth=login
set nss-config-dir=/etc/pki/nssdb
set ssl-verify=ignore #ssl认证方式
(3)测试邮箱发送(查看邮箱是否收到邮件)
[root@anliu ~]# echo "This is a zabbix" |mail -s "zabbix" *******@qq.com
[root@zabbix-server ~]# cd /usr/lib/zabbix/alertscripts/ #进入zabbix默认存放脚本路径
[root@zabbix-server alertscripts ]# vim sendmail.sh #编写发送邮件脚本
#!/bin/bash
echo "$3" |mail -s "$2" $1 >> /tmp/sendmail.log 2>&1 #一定要把sendmail.log文件的属主属组改为zabbix
[root@zabbix-server alertscripts]# chown zabbix:zabbix sendmail.sh
[root@zabbix-server alertsctipts ]# chmod 755 sendmail.sh
[root@zabbix-server alertscripts ]# vim /etc/zabbix/zabbix_ server.conf
AlertScriptsPath=/usr/lib/zabbix/alertscripts
(1)创建报警媒介类型 (脚本参数分别对应:收件人地址、主题、详细内容)
(2)管理------>用户------->选择admin用户(自己创建一个也可以)
(3)用户媒介------>添加
(4)类型输入刚刚创建的报警媒介类型sendmail脚本 -------> 输入个人邮箱用于接收报警邮件------>启动打勾------> 添加
(5)选择更新
(6)权限设置(管理员用户不用修改,权限默认所有服务器,如果要分类权限需要在用户组进行控制)
(7)配置------>动作------>名称自定义------>设置------>条新的触发条件------>启用------>添加。(触发条件需要根据实际情况设置)
触发器类似:is unreachable for 5 minutes
#根据主机触发器Template, App Zabbix Agent: Zabbix agent on {HOST.NAME} is unreachable for 5minutes设置,主要监测zabbix_agentd客户端连接情况。
默认接收人:故障{TRIGGER.STATUS},服务器:{HOSTNAME1}发生: {TRIGGER.NAME}故障!
默认信息:
告警主机IP地址:{HOST.CONN}
告警主机:{HOSTNAME1}
告警时间: {EVENT.DATE}{EVENT.TIME}
告警等级: {TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目: {TRIGGER.KEY1}
问题详情: {ITEM.NAME}:{ITEM.VALUE}
当前状态: {TRIGGER.STATUS}:{ITEM.VALUE1}
(8)定义恢复操作
默认接收人:恢复{TRIGGER.STATUS},服务器:{HOSTNAME1}: {TRIGGER.NAME}已恢复!
恢复信息:
告警主机IP地址: {HOST.CONN}
告警主机: {HOSTNAME1}
告警时间: {EVENT.DATE} {EVENT.TIME}
告警等级: {TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目: {TRIGGER.KEY1}
问题详情: {ITEM.NAME}:{ITEM.VALUE} .
当前状态: {TRIGGER.STATUS}:{ITEM.VALUE1}
(9)测试
[root@zabbix-server alertscripts]# /etc/init.d/zabbix_agentd stop #暂停zabbix_ agentd客户端服务。
下载打开文件(tcmime.1409.1409.1805.bin):
因为在操作的过程中,当前状态的变量“ {TRIGGER.STATUS}:{ITEM.VALUE1}”中的{TRIGGER.STATUS}中少了一个“.” ,导致出错,最后显示应该为“PEOBLEM:Up(1)”。不过不影响邮件发送,修改后即可。
[root@zabbix-server alertscripts]# systemctl restart zabbix-agent #重启zabbix-agentd
下载打开文件(tcmime.1404.1404.1784.bin):
到此该项目就结束了,还可以使用企业微信进行告警,欢迎大家尝试