zabbix3.4配置邮件告警

zabbix3.4配置邮件告警
使用zabbix配置邮件告警,当系统资源到达触发器设定阈值,邮件报警

触发器

添加监控项

测试用模板是zabbix自带的Template OS Linux模板,模板中原先就有监控CPU的监控项,这边测试就用CPU idle time(获取服务器空闲CPU百分比),如果当前安装的zabbix没有该监控项,就新建一个:

1
2
3
4
5
6
7
名称: CPU $2 time
类型:Zabbix 客户端
键值:system.cpu.util[,idle]
信息类型:浮点数
单位:%
更新间隔:1m
自定义时间间隔:灵活

保存即可

添加触发器

添加完监控项之后,就要为该监控项添加触发器,当达到设定的阈值时,报警。
配置-模板-找到Template OS Linux,点击触发器,创建新触发器。测试想要监控服务器的空闲CPU,当空闲CPU小于50%,时就会告警(为了效果明显,设大点。。)触发器信息如下:

1
2
3
名称:CPU usr% gt 50%
严重性:严重
表达式:{Template OS Linux:system.cpu.util[,idle].avg(1m)}<50(表达式可以自己写,也可以用构造器,格式挺简单)

其他默认即可

添加图形

为了方便观察,添加一个cpu空闲率的图形:
配置-模板-选择Template OS Linux-图形,创建图形;

1
2
3
4
名称:CPU空闲百分比
纵轴Y最小值MIN:可计算的
纵轴最大值:可计算的
监控项:Template OS Linux:CPU idle time

保存,完成。
可以试验下:

1
echo "scale=5000; 4*a(1)" | bc -l -q

计算圆周率后5000位,手工在服务器top可以看到cpu使用率到80%以上(小破虚拟机,纯试验用,1C),在监测中-仪表板-问题可以看见该问题告警。

邮件配置

sendmail

邮件发送需要安装几个小工具(可能本地装系统就已经装完了)

1
2
yum -y install sendmail
systemctl start sendmail.service

mailx

安装邮件发送工具

1
yum -y install mailx

配置zabbix服务外部邮箱

编辑文件/etc/mail.rc(没有就新建),添加以下内容(以163邮箱为例):

1
2
3
4
5
set from=xxx@163.com               #邮箱账号
set smtp=smtp.163.com #smtp服务器
set smtp-auth-user=xxx@163.com #邮箱帐号
set smtp-auth-password=xxx #邮箱密码(163邮箱密码是你客户端登录的密码,不是mail.163.com登录的密码)
set smtp-auth=login

配置完成,测试一下:

1
echo "zabbix test..." |mail -s "zabbixssss" xxx@163.com

进入邮箱,可以看见收到一封测试邮件~

文件发送脚本

zabbix提供了几种方式来发送告警信息,这边选择用脚本,在zabbix_server.conf文件中有定义脚本保存路径,例如我的测试服务器上的/etc/zabbix_server.conf中大约在第490行有定义(你也可以注释掉,自己加):AlertScriptsPath=/usr/lib/zabbix/alertscripts

进入/usr/lib/zabbix/alertscripts文件夹,创建邮件发送脚本sendmail.sh,内容如下:

1
2
3
4
#!/bin/bash
messages=`echo $3 | tr '\r\n' '\n'`
subject=`echo $2 | tr '\r\n' '\n'`
echo "${messages}" | mail -s "${subject}" $1 >>/tmp/sendmail.log 2>&1

需要注意的是/tmp/sendmail.log这个日志文件,需要有写和执行的权限,如果不放心,直接chmod 777 /tmp/sendmail.log即可。

可以用脚本测试一下邮件发送:sh sendmail.sh xxxx@163.com "zabbix cesscdssss" "这是内容。。。"

告警设置

报警媒介类型

进入zabbix web,管理-报警媒介类型,点击创建媒体类型,内容如下:

1
2
3
4
5
6
7
8
名称: sendmail
类型:脚本
脚本名称:sendmail.sh
脚本参数:
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
勾选已启用

点击新增。

用户添加媒介

管理-用户,可以使用原来的管理员账号,也可以创建一个用户:

1
2
别名:user
群组:zabbix administrators

报警媒介,点击添加:

1
2
3
4
类型:sendmail
收件人:xxxx@163.com
当启用时:1-7,00:00-24:00(24小时全年无休~)
剩下全勾上结束

点击添加,保存用户。

创建动作

配置-动作,创建动作:
动作:

1
名称:自己起,monitor cpu

操作:

1
2
3
4
5
6
7
8
9
10
11
12
默认操作步骤持续时间:1h
默认标题:故障{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}
操作,新增发送消息给用户,选择之前创建的user,点击新增

恢复操作(系统恢复之后的邮件提示):

1
2
3
4
5
6
7
8
9
10
11
默认标题:恢复{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}
操作,添加发送消息给用户,选择创建的user,点击新增

这样就完工了!!!

测试

在服务器,执行:

1
echo "scale=10000; 4*a(1)" | bc -l -q

配置的邮箱就会收到邮件告警:

1
2
3
4
5
6
7
8
9
10
故障PROBLEM,服务器:Zabbix server发生: CPU user% gt 50故障!

告警主机:Zabbix server
告警时间:2018.06.28 10:23:19
告警等级:High
告警信息: CPU user% gt 50
告警项目:system.cpu.util[,idle]
问题详情:CPU idle time:3.64 %
当前状态:PROBLEM:3.64 %
事件ID:110

报表-动作日志,可以看见报警日志;
服务器恢复之后,会收到恢复的邮件:

1
2
3
4
5
6
7
8
9
10
恢复OK, 服务器:Zabbix server: CPU user% gt 50已恢复!

告警主机:Zabbix server
告警时间:2018.06.28 10:23:19
告警等级:High
告警信息: CPU user% gt 50
告警项目:system.cpu.util[,idle]
问题详情:CPU idle time:90.08 %
当前状态:OK:90.08 %
事件ID:110

参考链接

zabbix配置监控项,触发器
zabbix3.2.6部署邮件报警

文章目录
  1. 触发器
    1. 添加监控项
    2. 添加触发器
    3. 添加图形
  2. 邮件配置
    1. sendmail
    2. mailx
    3. 配置zabbix服务外部邮箱
    4. 文件发送脚本
  3. 告警设置
    1. 报警媒介类型
    2. 用户添加媒介
    3. 创建动作
  4. 测试
  5. 参考链接
|