了解了触发器设置,我们接着来为触发器添加事件处理动作(Action)。
Action可以响应以下4种不同的事件:
Trigger events:触发器状态从OK=>Problem或者反过来
Discovery events:当network discovery触发的时候(后面再介绍)
Auto registration event:当新的agent自动注册的时候
Internal events:当监控项变为unsupported或触发器变成未知状态
先创建一个Action看一下配置情况,我们为Trigger创建一个Action:
Action一共分为三个部分,第一个部分是Action的名称,以及触发条件的配置:
其中Name指定Action的名字,Conditions可以添加多个,并且Condition之间可以使用and或者or来进行组合,例如:
针对响应不同Trigger的Action的Condition配置,可以详细参考下面的官网连接:
https://www.zabbix.com/documentation/3.2/manual/config/notifications/action/conditions
Operations和Recovery Operations分别是达到Action条件的时候(即认为是出现问题的情况)Action应该采取的operation,以及当问题恢复后应该采取的operation:
由于Recovery operation和Operations几乎一样,所以这里只针对Operations做一下说明,看一下Operation的基本配置:
Defaultoperation step duration中定义了默认一个Operation步骤的时间间隔(即过多久会执行下一个步骤)。
Default subject和Default message定义了发送消息(邮件)的主题和消息内容。
Pauseoperations while in maintenance这个选项用于配合维护时间的设置,如果设置了维护时间,那么在维护时间窗口内,不会执行Action。
Action中的Operation一共有两种,一种是发送消息(Send message),一种是执行远端命令(Remote command)。点击"New"我们来看一下发送消息的Operation的配置:
Steps定义了这个Operation包含的步骤,如果右侧的数字指定0的话,表示无限次执行。
Stepduration表示每个Step的执行间隔,如果指定0表示使用前面Action选项卡中指定的Default值。
Operationtype指定是要发送消息还是执行远端命令。
Conditions中定义了Operation的执行条件。
对于发消息类型的Operation:
Sendto User groups和Send to Users分别指定要发送消息的目标(后面我们会介绍如何定义User和User Group)。
Sendonly to定义了要发送给哪一类介质(Media)。
Defaultmessage这个Checkbox如果勾选,则会使用默认的Message模板,否则,可以自定义模板。
对于执行远端命令类型的Operation:
Target list中可以添加Host或者Host group,用于指定命令执行的目标机器。
Type指定要执行的命令的类型,如Custom script,SSH,Telnet等。
根据Type指定不同,下面会弹出针对这种命令的一些参数。
如果要使用Zabbix agent执行远端命令,需要修改zabbix agent的配置文件,将EnableRemoteCommands的值修改为1。
针对Discoveryevents创建的Action,Operations里面有一些额外的可选项:
Operation名称都比较容易理解,其中自动注册事件的可用Operation有Add host/Disable host/Add to hostgroup/Link to template/Set host inventory mode
关于主机的inventorymode可以参考:
https://www.zabbix.com/documentation/3.0/manual/config/hosts/inventory
我们再来简单看一下subject和message的写法,subject和message中主要使用宏来进行编写。下面几个例子译自官网(https://www.zabbix.com/documentation/3.2/manual/config/notifications/action/operation/macros):
- 消息的Subject:{TRIGGER.NAME}: {TRIGGER.STATUS}
当收到消息时,消息Subject会被替换成类似下面的内容:
Processor load is too high on server zabbix.zabbix.com: PROBLEM
- 消息内容:Processor load is: {zabbix.zabbix.com:system.cpu.load[,avg1].last()}
当收到消息时,消息会被替换成类似下面的内容:
Processor load is: 1.45
- 消息内容:
Latest value: {{HOST.HOST}:{ITEM.KEY}.last()}
MAX for 15 minutes: {{HOST.HOST}:{ITEM.KEY}.max(900)}
MIN for 15 minutes: {{HOST.HOST}:{ITEM.KEY}.min(900)}
当收到消息时,消息会被替换成类似下面的内容:
Latest value: 1.45
MAX for 15 minutes: 2.33
MIN for 15 minutes: 1.01
- 消息内容:http://<server_ip_or_name>/zabbix/events.php?triggerid={TRIGGER.ID}&filter_set=1
收到的消息会包含一个链接,链接指向问题触发器的事件。
- 消息内容:
Trigger: {TRIGGER.NAME}
Trigger expression: {TRIGGER.EXPRESSION}
1. Item value on {HOST.NAME1}: {ITEM.VALUE1} ({ITEM.NAME1})
2. Item value on {HOST.NAME2}: {ITEM.VALUE2} ({ITEM.NAME2})
当收到消息时,消息会被替换成类似下面的内容:
Trigger: Processor load is too high on a local host
Trigger expression:{Myhost:system.cpu.load[percpu,avg1].last()}>5 |{Myotherhost:system.cpu.load[percpu,avg1].last()}>5
1. Item value on Myhost: 0.83 (Processor load (1 min average percore))
2. Item value on Myotherhost: 5.125 (Processor load (1 min averageper core))
- 消息内容:
Problem:
Event ID: {EVENT.ID}
Event value: {EVENT.VALUE}
Event status: {EVENT.STATUS}
Event time: {EVENT.TIME}
Event date: {EVENT.DATE}
Event age: {EVENT.AGE}
Event acknowledgement: {EVENT.ACK.STATUS}
Event acknowledgement history: {EVENT.ACK.HISTORY}
Recovery:
Event ID: {EVENT.RECOVERY.ID}
Event value: {EVENT.RECOVERY.VALUE}
Event status: {EVENT.RECOVERY.STATUS}
Event time: {EVENT.RECOVERY.TIME}
Event date: {EVENT.RECOVERY.DATE}
当收到消息时,消息会被替换成类似下面的内容:
Problem:
Event ID: 21874
Event value: 1
Event status: PROBLEM
Event time: 13:04:30
Event date: 2014.01.02
Event age: 5m
Event acknowledgement: Yes
Event acknowledgement history: 2014.01.02 13:05:51 "John Smith(Admin)"
-acknowledged-
Recovery:
Event ID: 21896
Event value: 0
Event status: OK
Event time: 13:10:07
Event date: 2014.01.02
关于Zabbix中支持的全部宏的列表,可以参考下面的链接:
https://www.zabbix.com/documentation/3.0/manual/config/hosts/inventory
前面提到的发送消息的目标User和User Group可以在Administration标签下面找到并创建:
创建User Group:
创建User:
为用户配置消息介质:
在Administration下面创建消息介质:
限于篇幅,我们在下一小节中举两个报警配置的具体例子。