zabbix结合邮箱实现故障自动告警

个人环境

(1)Centos 7.4
(2)zabbix
(3)LNMP/LAMP

1.zabbix服务器配置

zabbxi 邮件告警推送有两种方式:
1.使用外部邮箱指定为告警发送邮箱
2.使用zabbix服务端的本地邮箱账号发送,邮件名为:[email protected]。其中:
user为发送邮件的用户;
hostname为zabbix-server的主机名,该邮箱只能发送,不能接收外部邮件;

我就采用第一种告警方式:

yum -y install sendmail    //邮件传送代理MTA
yum -y install mailx       //邮件用户代理MUA

标注:实际企业公司中,如果有外部邮箱地址,就不需要上述步骤,直接进行第(2)步操作:

(1)有限授权码的获取
zabbix结合邮箱实现故障自动告警_第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

zabbix结合邮箱实现故障自动告警_第2张图片
(4)编写邮件发送脚本

[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

zabbix结合邮箱实现故障自动告警_第3张图片

2.zabbix后台web界面配置

(1)创建报警媒介类型 (脚本参数分别对应:收件人地址、主题、详细内容)
zabbix结合邮箱实现故障自动告警_第4张图片
(2)管理------>用户------->选择admin用户(自己创建一个也可以)
zabbix结合邮箱实现故障自动告警_第5张图片
(3)用户媒介------>添加
zabbix结合邮箱实现故障自动告警_第6张图片
(4)类型输入刚刚创建的报警媒介类型sendmail脚本 -------> 输入个人邮箱用于接收报警邮件------>启动打勾------> 添加
zabbix结合邮箱实现故障自动告警_第7张图片
(5)选择更新
zabbix结合邮箱实现故障自动告警_第8张图片
(6)权限设置(管理员用户不用修改,权限默认所有服务器,如果要分类权限需要在用户组进行控制)
zabbix结合邮箱实现故障自动告警_第9张图片
(7)配置------>动作------>名称自定义------>设置------>条新的触发条件------>启用------>添加。(触发条件需要根据实际情况设置)
触发器类似:is unreachable for 5 minutes
#根据主机触发器Template, App Zabbix Agent: Zabbix agent on {HOST.NAME} is unreachable for 5minutes设置,主要监测zabbix_agentd客户端连接情况。
zabbix结合邮箱实现故障自动告警_第10张图片
zabbix结合邮箱实现故障自动告警_第11张图片
zabbix结合邮箱实现故障自动告警_第12张图片
默认接收人:故障{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)定义恢复操作
zabbix结合邮箱实现故障自动告警_第13张图片
zabbix结合邮箱实现故障自动告警_第14张图片
默认接收人:恢复{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客户端服务。

zabbix结合邮箱实现故障自动告警_第15张图片
下载打开文件(tcmime.1409.1409.1805.bin):

zabbix结合邮箱实现故障自动告警_第16张图片

因为在操作的过程中,当前状态的变量“ {TRIGGER.STATUS}:{ITEM.VALUE1}”中的{TRIGGER.STATUS}中少了一个“.” ,导致出错,最后显示应该为“PEOBLEM:Up(1)”。不过不影响邮件发送,修改后即可。

[root@zabbix-server alertscripts]# systemctl restart zabbix-agent	 #重启zabbix-agentd

zabbix结合邮箱实现故障自动告警_第17张图片
下载打开文件(tcmime.1404.1404.1784.bin):
zabbix结合邮箱实现故障自动告警_第18张图片
到此该项目就结束了,还可以使用企业微信进行告警,欢迎大家尝试

你可能感兴趣的:(实战案例,linux,运维)