通知条件
实战添加一个动作(告警方式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,如需转载请自行联系原作者