天天看点

第六章 动作Actions、告警方式Medias

通知条件

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

zabbix脚本报警介质自定义

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

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

定义一个通知介质 

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

配置action 

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

1、创建动作 

<code>action支持如下事件</code>

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

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

<a href="http://s4.51cto.com/wyfs02/M00/89/CC/wKiom1gccx2QVaXgAAB9g8RCvzg519.png" target="_blank"></a>

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

<a href="http://s5.51cto.com/wyfs02/M00/89/C9/wKioL1gccy-QJmJ8AAC54RiJfIA265.png" target="_blank"></a>

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

<a href="http://s4.51cto.com/wyfs02/M01/89/CC/wKiom1gcc0CgUgvdAACBMInFViU834.png" target="_blank"></a>

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

<code>我添加两个操作,第一个是执行动作,当80端口down后,先去客户端主机上面</code><code>ssh</code><code>登录执行重启httpd服务</code>

<code>如果还没有恢复,就给管理发送故障消息邮件</code>

4.1、设置远程命令

<a href="http://s5.51cto.com/wyfs02/M02/89/CC/wKiom1gcc1iRw6m_AACLr9Vsy_g787.png" target="_blank"></a>

4.2、设置发送消息

<a href="http://s3.51cto.com/wyfs02/M02/89/C9/wKioL1gcc4iDOZ52AAC8Ga27CrE104.png" target="_blank"></a>

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

<a href="http://s5.51cto.com/wyfs02/M00/89/CC/wKiom1gcc5zBYTWNAAC3Vzd-6Gc678.png" target="_blank"></a>

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

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

<a href="http://s5.51cto.com/wyfs02/M01/89/C9/wKioL1gcc62xrx5QAACPAjh9GyA639.png" target="_blank"></a>

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

<a href="http://s5.51cto.com/wyfs02/M00/89/C9/wKioL1gcc8rCgu32AACS-ewtjLI593.png" target="_blank"></a>

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

<a href="http://s2.51cto.com/wyfs02/M01/89/CC/wKiom1gcc9vibw43AAGmRyzKsNk906.png" target="_blank"></a>

邮件内容

<a href="http://s3.51cto.com/wyfs02/M01/89/C9/wKioL1gcc-izfc1QAACqQqVzfug654.png" target="_blank"></a>

zabbix媒介类型包括mail、sms、自定义脚本,我们用的最多的还是脚本媒介,再次我们就不讲另外两个媒介了。当事件通知到脚本,会传递三个参数它, zabbix调用脚本时会向其传递参数;3.0之前的版本通过  <code>$1:消息接收人;</code>  <code>$2:消息主题;</code>  <code>$3:消息主体;</code>  3.x之后的版本,此三个参数默认不再传递,需自行定义; 可以使用宏来模拟此前的行为:  <code>{ALERT.SENDTO}</code>  <code>{ALERT.SUBJECT}</code>  <code>{ALERT.MESSAGE}</code> 例如发送邮件给[email protected],标题为nginx离线,内容是IP地址:1.1.1.1,nginx离线,请立即处理。

1、添加媒介

<a href="http://s3.51cto.com/wyfs02/M02/89/CC/wKiom1gcc_-hIcZ4AACPKMAEOrs639.png" target="_blank"></a>

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

3、添加脚本文件

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

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

<a href="http://s1.51cto.com/wyfs02/M02/89/CC/wKiom1gcdCny1Z3GAABhdwj6goA469.png" target="_blank"></a>

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

<a href="http://s3.51cto.com/wyfs02/M02/89/C9/wKioL1gcdD-yOeLgAABV9-y8Jg0467.png" target="_blank"></a>

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

<a href="http://s5.51cto.com/wyfs02/M01/89/CC/wKiom1gcdE_w0bOmAACczR0s92Y730.png" target="_blank"></a>

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

8、已经收到了邮件

<a href="http://s1.51cto.com/wyfs02/M01/89/CC/wKiom1gcdISzIeCwAADiAihck04102.png" target="_blank"></a>

<a href="http://s4.51cto.com/wyfs02/M01/89/C9/wKioL1gcdIXjtlnWAACqIipKpl4166.png" target="_blank"></a>

本文转自 好笔记运维 51CTO博客,原文链接:http://blog.51cto.com/zhang789/1869616,如需转载请自行联系原作者