March 06, 2014
JMX 就是 Java Management Extentions,为 Java 程序提供管理功能的框架。看了几个介绍,感觉这个说明比较通俗易懂。一句话说就是 JMX 为你提供了一个通过特定协议管理应用程序的方案,而我们这里主要用其查询配置和监控数据的功能。
通过主动调用自定义脚本来获取监控数据,脚本的输出即为该监控项的监控值,这种方式有更强的定制化。因为下午在这里踩到了坑,走了不少弯路,所以这里要对配置方法做个特殊说明。配置监控项时选择 external
chek,然后在 key 这一栏要指定运行脚本和参数。下边说下 1.8 和 2.0 之后的版本在 key 配置上的不同:
*
在 1.8 的版本里 key 的格式为scriptname[arg1 arg2 ...]
,参数以空格,Zabbix 实际执行的命令是scriptname server_hostname arg1 arg2
,详见这里
*
在 2.0 之后的版本 key 的格式为scriptname[arg1, arg2 ...]
,参数以逗号分隔,Zabbix 实际执行的命令是scriptname arg1 arg2 ...
,详见这里
所以,拿 1.8 的模板倒入到 2.0 之后的的 Zabbix
Server 是有问题的,这点需要特别注意。
trapper 也是 Zabbix 的一种获取监控数据的方式。我们知道常见的方式有 agent,snmp 和 jmx,这些监控方式都是 Zabbix Server 主动去问被监控设备要,而 trapper 是被动等着被监控设备把数据汇报(通过 zabbix_sender)上来,然后从汇报上来的数据中提取自己想要的。
注意 如果被监控端提供了接口可供外界获取其运行数据(不太安全),那么可配合 external check 调用脚本远程获取数据,然后再用 zabbix_sender 将获取的数据以 trapper 的形式发送给 Zabbix Server,这样既可以保证客户端零配置,而且能获取任意想要监控的数据。逻辑图如下:
zabbix server --> external check-->script --> monitored device
script--> zabbix_sender --> zabbx server
我是 xdays, 记录着我技术的成长,生活的点滴和感悟,能对你有所帮助那更好。