通常,一个报警的产生,是这样的一个过程。
如果某种条件符合,那么报警。
抽象成计算机语言,就是:
if (ConditionA == true){
Alet();
}
还可以选择给谁报警(哪个用户)、怎样报警(报警途径),具体如下:
if (ConditionA == true){
Alert(userA.email);
Alert(userB.sms);
}
如果处理问题不一定要报警,可以在服务器对于一些简单问题上运行一些命令的初步处理,比如Nginx挂了,自己就可以尝试的重启服务,则这又成了:
if (ConditionA == true){
Alert(email);
Alert(sms);
Excute(command);
}
再扩展一些,可能条件更复杂一些:
if (ConditionA == true && ConditionB != true){
Alert(email);
Alert(sms);
Excute(command);
}
这就是Zabbix的“报警”了,为什么这里的“报警”需要加上引号呢? 其实,发生问题后,去执行一些命令,这已经不是狭义上的“报警”了。在Zabbix 中,这个被定义为Action(动作) ,就是当某种Condition符合时,会进行一些操作,这些操作就叫做Action。 Condition译为“条件”,在Zabbix中,Action的触发是需要条件的,比如属于某个Host Group的Host,某个Trigger是Problem状态了,等等,,
在Zabbix中,报警的途径是依附于用户的。即不能直接将一个Action设置为给某个邮箱发邮件,一定要设置Action向某个用户发送报警,发送报警的途径是邮箱,那么就会发送到用户的预先设置邮箱地址。 这个邮箱地址叫做用户的Media ,即联系方式。
下面来介绍Action的设置。
1,Action
Action是Zabbix非常强大的功能,可以基于Event的不同状态,执行不同的操作。 最常见的就是报警时,将报警通过各种方式发送给对应的用户。
目前Zabbix支持Action动作根据下面所列出的Events触发。
- Trigger Events:当Trigger的状态变化,即从OK 到 Problem 或从 Problem 到OK时都会产生。
- Discovery Events:当发生网络Discovery的时候产生。
- Auto Registration Events: 当有新的Zabbix Agent自动注册到Zabbix的时候产生。
- Internal Events:当Item变为“异常”状态 或者Trigger变为“未知”状态时产生。
下面进入Action的配置。
- 从菜单栏的“Configuration” → “Actions” 进入界面。
- 在“Event source”下拉框中,可以选择只显示依赖于某种源头的Action。
- 单击Action条目后,可以看到三个标签:“Action”、“Condition”、“Operations”。 “Action”用来定义Action本身的一些属性和说明;“Condition”用来定义触发Action的各种条件组合关系;“Operations”定义的是Action触发后的一些操作。
默认是建立基于Trigger Events的Action,如果需要其他的,选择对应的选项即可。
Action”标签,有下面的属性可以设置。
- Name:唯一的Action名字。
- Default subject:报警的默认标题。
- Default message:报警的默认内容。
- Recovery message:恢复消息,是否在报警恢复正常后发送消息。 Zabbix将“OK”状态的Trigger认为是一个恢复recovery event。 注意:如果使用了Escalation机制,Recovery event只会触发一次。对已Recovery的报警,可以像发出报警的邮件一样,设置报警标题和内容。
以下几点需要注意:
1,自定义的恢复信息,只针对Condition,是“Trigger value is PROBLEM”的生效。
2,恢复信息只会发送给那些之前收到过关于这个Action报警信息的人。
3,恢复信息和Action 依赖PROBLEM生成的Evnet维护同一份ACK状态。
4,在Recovery信息中,EVENT.*Macro中的数据,都是基于出问题的Event,而不是Recovery。
5,在Recovery信息中,EVENT.RECOVERY.* 表示的是出自Recovery event的数据。
- Recovery subject:Recovery信息的标题。
- Recovery message:Recovery信息中的内容。
- Enabled: 是否启用这个Action。
2,Operation
Operation指的是Action触发以后具体的操作,在Zabbix中,可以定义下面这些操作:
- 发送一条信息。
- 执行一个命令(包括IPMI)。
对于discovery事件,还有额外的一些操作:
- 添加一个Host。
- 移除一个Host。
- 启用一个Host。
- 禁用一个Host。
- 将Host添加到一个Host group。
- 将Host从一个Host grou中删除。
- 关联到一个Template。
- 取消和一个Template的关联。
对于auto-registration事件,也有额外的一些操作:
- 添加一个Host。
- 禁用一个Host。
- 添加Host到一个Host group。
- 关联到一个Template。
在配置Action的Operation标签页时,可以看到目前配置的Operation,单击“New”按钮。