运维监控篇(8)_Zabbix Action(动作)配置浅析

Action(动作)可以基于Event的状态执行不同的操作(发送邮件、执行脚本、添加主机等),最常见的就是发送报警邮件和重启服务了。一个Action的配置分三大块Action(动作,此动作非比动作,哈哈)、Conditions(条件)、Operations(操作)。不同事件源(event source)的Action在配置时conditions和operations两块稍有区别,action那块都一样,下面慢慢说。
zabbix08a

1、Action 这一栏的设置比较简单,自定义一个唯一的Action名字一般就可以了,其它的一般不用需改太多。

1
2
3
4
5
6
7
Name:唯一的Aciton的名字(自定义)
Default subject: 报警的默认标题
Default message: 报警的默认内容
Recovery message: 是否在问题解决后发送信息
Recovery subject: 恢复信息的标题
Recovery message: 恢复信息中的内容
Enabled: 是否启用这个Action

2、Conditions 并不是每个trigger都要配置一个Action的(如果这样岂不是不能愉快的监控了),Conditions作用就是不用一个Trigger对应一个Action,做到了一类Trigger对应一个Action。当创建一个Action的时候,默认会有两个Condition,默认就好不用删除。
zabbix08b
关于计算方式的介绍

1
2
3
4
AND:       所有的Conditon同时满足 
OR: 所有的Conditon同时满足一个
AND/OR: 根据条件自动调整,相同类型的Condition时,它就变成了and,
如果是不同类型的Condition,它就变成or

不同的event source支持的condition不同
Trigger类型的Evnet可以使用的Condition:

1
2
3
4
5
6
7
8
9
10
11
12
13
Condition类型         支持的操作            说明(下同) 
Application =,like,not like Application指的是这个Event的Item的Trigger所关联的Application。
= 完全一致、like 包含、not like 不包含
Host group =,<> Host是否属于一个Host group
Template =,<> Trigger是否属于一个Template
Host =,<> Host是否是某一个Host
Trigger =,<> Trigger是否是某一个Trigger
Trigger name like,not like Trigger的名字是否和一个字符匹配
Trigger severity =,<>,<=,>= Trigger的严重等级范围
Trigger value = Trigger是OK还是problem
Time period in,not in Event生成的时间是否属于某一个范围
Maintenance status in,not in Host是否在Maintenance 状态。如果trigger中有多个Host,
至少其中一个是(或者不是)Maintenance状态

Discovery类型的Evnet可以使用的Condition:

1
2
3
4
5
6
7
8
Host IP             =,<>             IP是否在某个范围内 
Server type =,<> discovery是否属于某个服务,服务有SSH等,就是创建discovery规则时可选的那几个
Server port =,<> 服务端口是否在某个范围内
Discovery rule =,<> discovery规则是否在某一个特定的
Discovery status =,<> discovery属于那种状态,共有Up、Down、Discovered、Lost四种
Uptime/Downtime >=,=< Up状态或者Down状态超过或小于一个时间段
Receiver value =,<>,>=,<=,like,not like 收到的数据是否满足一定的条件
Proxy =,<> 是否使用某个Proxy监控

Active agent auto-registration 类型的Evnet可以使用的Condition:

1
2
3
4
5
6
7
8
9
Host metadata         like,not like        Host的元数据是否满足条件 
Host name like,not like Host的Hostanme是否满足条件
Proxy =,<> 是否被某个Proxy监控
Application =,like,not like 同trigger event
Event type = 事件类型
Host group =,<> Host group 是否是某一个Host group
Template =,<> Template是否是某一特定的
Host =,<> Host是否是某一个Host
Node =,<> Event是否属于一个Node

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
zabbix08c
Default operation step duration:最小60秒。默认3600秒,表明执行一个操作后要等待1小时后在执行下一个操作(比如每隔3600秒发一次报警)。
2)Action operations:设置Operations details后生成的简约信息
zabbix08d

1
2
3
4
Steps:     在escalation(报警扩散、升级)的时候,会按照Step的顺序来执行,从1开始 
Details: 操作类型和目标 Start in: 在Event发生多久后执行
Duration: step的持续时间(默认是0,即使用默认值“Default operation step duration”)
Action: 编辑或移除当前的Operation的操作

3)Operation details:设置一个具体的Operation。(一定记得要点击“add”和“save”,不然不会保存)
zabbix08e

1
2
3
4
5
6
7
From:              表明从哪一步开始 
To: 表明到那一步结束
Step duration: 每一步持续的时间,如果填0,就是用上面的“Default operation step duration”中的值
Operation type: 选择操作的类型(一般都有两种最重要的Send message和Remote command,对于discovery和
auto-registration事件有更多的选项)
——Send message: 给用户发送信息(如报警邮件)
——Remote command: 远程执行命令

在Zabbix中,“Send message”和“Remote command”是最重要的两个Operation,前者可以将问题通知到负债人或者可以执行相应的应急措施。
Send message:
zabbix08f

1
2
3
4
Send to User groups 添加用户组,将信息发个组内所有的用户 
Send to User 添加用户,将信息发给添加的用户
Send only to 选择发送消息的媒介(Media type
Default message 使用默认的消息格式发邮件,不勾选的话会出现自定义消息格式的文本框

Remote command:
zabbix08g

1
2
3
4
5
Target list         选择命令执行的Host,可以选择发生问题的Host、指定某个Host、Host group 
Type 选择执行的命令类型,其中“IPMI”“SSH”“Telnet“比较好懂,另外两个解释如下:
——Custom script 执行在 "Commands" 对话框中的shell命令
——Global script 执行在Administration-Scripts中定义的一些命令
Exexute on 选择在Zabbix server还是Zabbix agent上执行命令

Remote command的好处有这些:
1)应用无法响应时,自动重启某些应用
2)当服务器不响应时,使用IPMI的”reboot”命令重启服务器
3)在磁盘要满了的情况下,自动删除一些文件(比如/tmp)
4)根据CPU的负载,自动进行虚拟机的调配
5)弹性计算,根据系统情况,新整或删除云节点 在Agent上执行自定义脚本一定要在 zabbix_agentd.conf中将”EnableRemoteCommands”一项设置为1,然后重启Agent
还有权限也是个问题,zabbix用户想要这个权限,需要修改sudoer文件

1
2
3
4
5
$ visudo 
#允许"zabbix"用户不用密码就可以运行所有的root权限命令
zabbix ALL=NOPASSWD:ALL
#允许"zabbix"用户不用密码就可以运行 /etc/init.d/httpd restart重启apache服务
zabbix ALL=NOPASSWD:/etc/init.d/httpd restart

Send message和Remote command都有的Conditions,有两个选项 Not Ack, Ack。这里的 Not AckAck,表达的是在何种情况下需要执行Operation。如果选择 Not Ack,那么只有当Event没有被认领Ack的情况下需要执行。
该篇文章部分内容参考了《Zabbix监控系统深度实践》一书。

----------------本文结束 感谢阅读----------------