Action(动作)可以基于Event的状态执行不同的操作(发送邮件、执行脚本、添加主机等),最常见的就是发送报警邮件和重启服务了。一个Action的配置分三大块Action(动作,此动作非比动作,哈哈)、Conditions(条件)、Operations(操作)。不同事件源(event source)的Action在配置时conditions和operations两块稍有区别,action那块都一样,下面慢慢说。
1、Action 这一栏的设置比较简单,自定义一个唯一的Action名字一般就可以了,其它的一般不用需改太多。
1 | Name:唯一的Aciton的名字(自定义) |
2、Conditions 并不是每个trigger都要配置一个Action的(如果这样岂不是不能愉快的监控了),Conditions作用就是不用一个Trigger对应一个Action,做到了一类Trigger对应一个Action。当创建一个Action的时候,默认会有两个Condition,默认就好不用删除。
关于计算方式的介绍
1 | AND: 所有的Conditon同时满足 |
不同的event source支持的condition不同
Trigger类型的Evnet可以使用的Condition:
1 | Condition类型 支持的操作 说明(下同) |
Discovery类型的Evnet可以使用的Condition:
1 | Host IP =,<> IP是否在某个范围内 |
Active agent auto-registration 类型的Evnet可以使用的Condition:
1 | Host metadata like,not like Host的元数据是否满足条件 |
3、Operations 不同的event source支持的operation不同,但都支持基本的发送消息(包含发送报警邮件)和执行命令的基本操作(iternal的只支持Send message)。
不同的是对于discovery事件,还有额外的一些操作
1)添加一个Host
2)移除一个Host
3)启用一个Host
4)禁用一个Host
5)Host添加到一个Host group
6)Host从一个Host group中删除
7)关联到一个Template
8)取消和一个Template的关联
对于auto-registration事件,也有额外的一些操作
1)添加一个Host
2)禁用一个Host
3)添加到一个Host group
4)关联到一个Template
一个新的Operation的设置分为3部分
1)Default operation step duration
Default operation step duration:最小60秒。默认3600秒,表明执行一个操作后要等待1小时后在执行下一个操作(比如每隔3600秒发一次报警)。
2)Action operations:设置Operations details后生成的简约信息
1 | Steps: 在escalation(报警扩散、升级)的时候,会按照Step的顺序来执行,从1开始 |
3)Operation details:设置一个具体的Operation。(一定记得要点击“add”和“save”,不然不会保存)
1 | From: 表明从哪一步开始 |
在Zabbix中,“Send message”和“Remote command”是最重要的两个Operation,前者可以将问题通知到负债人或者可以执行相应的应急措施。
Send message:
1 | Send to User groups 添加用户组,将信息发个组内所有的用户 |
1 | Target list 选择命令执行的Host,可以选择发生问题的Host、指定某个Host、Host group |
Remote command的好处有这些:
1)应用无法响应时,自动重启某些应用
2)当服务器不响应时,使用IPMI的”reboot”命令重启服务器
3)在磁盘要满了的情况下,自动删除一些文件(比如/tmp)
4)根据CPU的负载,自动进行虚拟机的调配
5)弹性计算,根据系统情况,新整或删除云节点 在Agent上执行自定义脚本一定要在 zabbix_agentd.conf中将”EnableRemoteCommands”一项设置为1,然后重启Agent
还有权限也是个问题,zabbix用户想要这个权限,需要修改sudoer文件
1 | $ visudo |
Send message和Remote command都有的Conditions
,有两个选项 Not Ack
, Ack
。这里的 Not Ack
和 Ack
,表达的是在何种情况下需要执行Operation。如果选择 Not Ack
,那么只有当Event没有被认领Ack
的情况下需要执行。
该篇文章部分内容参考了《Zabbix监控系统深度实践》一书。