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

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

zabbix08a

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

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
关于计算方式的介绍

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

不同的event source支持的condition不同

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

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:

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:

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

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

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

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

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

Remote command:
zabbix08g

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文件

[root@Zabbix-Server ~]#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 Ack” 和 “Ack”,表达的是在何种情况下需要执行Operation。如果选择 “Not Ack”,那么只有当Event没有被认领”Ack”的情况下需要执行。

该篇文章部分内容参考了《Zabbix监控系统深度实践》一书。

转载请注明出处:http://www.xiaomastack.com/2014/10/11/zabbix08/ 谢谢!

5 Comments

 Add your comment
  1. 博主您好

    大神您好,我在zabbix上测试一下远程命令(把日志文件夹里的多余文件删除掉),配置命令sudo find /mnt/hswx/mts/logs/ -name ‘mts_*.log’ -mtime +1 -exec rm -f {} \;

    我把sudoedit /etc/sudoers里添加了
    zabbix ALL=(ALL) NOPASSWD:ALL
    #Defaults:zabbix !requiretty

    现在状况是邮件触发了,但是远程命令无效。我看《Zabbix监控系统深度实践》,说active模式的agent是不支持远程命令的,请问我如何能判断我的机器是否是active?

  2. 你定义监控项item时,类型选择项里面就有主动或被动模式。

  3. 原来是这样,感谢您的解惑

  4. 博主,您好。又来麻烦您很抱歉。

    是这样的,我发现有一个小瑕疵
    因为公司所用的服务器比较多,我使用discovery功能去主动发现服务器.

    结果发现在confiiguration-hosts里,有些服务器的discovery是有值的,有2个监控项,有些则是没有的,还有些服务器的item里自带了Mounted filesystem discovery,请问这是怎么回事呢?

  5. 这个问题不太清楚

发表评论:

你的电子邮件地址将不会被公开.

66 − 65 =