本节目录大纲

  • 通知条件

  • 实战添加一个动作(告警方式Medias《自定义脚本发媒介》)

  • zabbix脚本报警介质自定义

zabbix专题:第六章 动作Actions、告警方式Medias

我们前面花了大量时间去讲解item、trigger、event都是为发送报警做准备的,什么是事件通知呢?简单的说故障发生了,zabbix会发邮件或者短信给你,告诉你服务器的一些状况。如果没有通知这块内容,你要盯着zabbix的事件才知道服务器发生什么状况了。这和保安有什么区别?

通知条件

发送通知,需要有如下步骤

  • 定义一个通知介质 
    这个介质包含email、shell脚本、sms短信网关(用得比较少)。zabbix将需要发送的内容传递给这些介质,然后这些介质把事件放到对应的终端。例如通知内容发给email,email介质将内容发送到报警邮箱中。

  • 配置action 
    Action由conditions(条件)和operations(操作)组成。当满足指定的条件,然后执行操作。这就是一个action。

实战添加一个动作(告警方式Medias《自定义脚本发媒介》)

1、创建动作 
action支持如下事件

触发器事件 – 触发器状态在OK和PROBLEM之间变化 
发现事件 
自动注册时间 – 新的客户端注册进来 
内部事件 – item转变为unsupported状态,触发器转变为unknown状态

1、选择触发项,点击创建动作

wKiom1gccx2QVaXgAAB9g8RCvzg519.png

2、按照表格填写好信息,包括这个动作的名称,邮件方面都是用的内建的宏,如果不满足我们的需求可以自定义脚本,现在网上面很多zabbix微信报警的文档

wKioL1gccy-QJmJ8AAC54RiJfIA265.png

3、设置条件,就是符合我们要求了,我们就执行动作或者操作

wKiom1gcc0CgUgvdAACBMInFViU834.png

4、创建操作,当我们条件满足了,我们可以选择发送消息或者执行命令

1
2
我添加两个操作,第一个是执行动作,当80端口down后,先去客户端主机上面 ssh 登录执行重启httpd服务
如果还没有恢复,就给管理发送故障消息邮件

4.1、设置远程命令

wKiom1gcc1iRw6m_AACLr9Vsy_g787.png

4.2、设置发送消息

wKioL1gcc4iDOZ52AAC8Ga27CrE104.png

5、我们默认的设置是发布出去邮件的,因为媒介里面没有设置邮件服务器地址,以及发件人的用户名和密码

wKiom1gcc5zBYTWNAAC3Vzd-6Gc678.png

6、现在我们停止服务,看远程命令能不能帮我们执行成功

[root@localhost ~]# service httpd stop
Stopping httpd:                                            [  OK  ]

7、返回我们zabbix的web界面看下时间,因为时间短,只能到时间里面看执行动作(下图,故障就几秒会恢复了)

wKioL1gcc62xrx5QAACPAjh9GyA639.png

8、当我们重启服务也没有用时候,需要人工智能介入了,(为了演示效果,我把客户端的httpd监听地址改成了8080,这样服务器监听tcp80端口不成功,重启也无法监听80端口,就会去执行第二步,给管理员发送故障邮件消息)(看下图,已经提示执行了我们第二步操作了)

wKioL1gcc8rCgu32AACS-ewtjLI593.png

9、进入服务器查看有没有收到报警的邮件信息(看下图,都是邮件)因为我设置5秒触发一次

wKiom1gcc9vibw43AAGmRyzKsNk906.png

邮件内容

wKioL1gcc-izfc1QAACqQqVzfug654.png

zabbix脚本报警介质自定义

zabbix媒介类型包括mail、sms、自定义脚本,我们用的最多的还是脚本媒介,再次我们就不讲另外两个媒介了。当事件通知到脚本,会传递三个参数它,

zabbix调用脚本时会向其传递参数;3.0之前的版本通过 
$1:消息接收人; 
$2:消息主题; 
$3:消息主体; 
3.x之后的版本,此三个参数默认不再传递,需自行定义; 可以使用宏来模拟此前的行为: 
{ALERT.SENDTO} 
{ALERT.SUBJECT} 
{ALERT.MESSAGE}

例如发送邮件给zabbix@localhost.com,标题为nginx离线,内容是IP地址:1.1.1.1,nginx离线,请立即处理。

媒介配置

1、添加媒介

wKiom1gcc_-hIcZ4AACPKMAEOrs639.png

2、设置媒介的名称和脚本的路径,已经需要传递的宏

wKioL1gcdM_QMz-2AACXRkSlnKc132.png

3、添加脚本文件

配置AlertScriptsPath  //脚本存放的路径

[root@localhost ~]# vim /etc/zabbix/zabbix_server.conf
AlertScriptsPath=/usr/lib/zabbix/alertscripts

脚本编写

[root@localhost alertscripts]# cat sendmail.sh 
#!/bin/bash
#
to=$1
subject=$2
body=$3
echo "$body" | mail -s "$subject" "$to"

4、给用户添加我们新建的媒介

wKiom1gcdCny1Z3GAABhdwj6goA469.png

5、选择需要使用的媒介,设置好对方收件人地址

wKioL1gcdD-yOeLgAABV9-y8Jg0467.png

6、在动作的操作里面也添加选择我们新建的媒介

wKiom1gcdE_w0bOmAACczR0s92Y730.png

7、我把原来的第二步删了,这里才会显示只有两步的(下图里面有已经执行完两步的,还有正在发送的,因为我设置的频率很快,所以有很多)

wKiom1gcdLigCQEQAACo6aTYXdI433.png

8、已经收到了邮件

wKiom1gcdISzIeCwAADiAihck04102.png

wKioL1gcdIXjtlnWAACqIipKpl4166.png