Zabbix本身已经带有很多的监控项(items),而且这些监控项之间还可以数值加减乘除,这样的结果已经更加灵活丰富。但是毕竟zabbix的自带items还是有限,而我们在实际生产中也有一些额外需要的监控项目,比如说商品套餐价格、网站点击量、开发人员殴打产品经理次数(囧~)这样的数字或者文本也带进监控范围里,所以说,“自定义key值”就显得很重要了,不过zabbix在这一段做的是很不错的。


举个例子,还是看门狗。由于本公司广大模块服务器是只有内网权限没有外网权限的,所以想直接走服务器内的python邮件脚本发邮件已经不可能了,于是乎,我们罪恶的主管要求要通过zabbix来实现这个功能。但是zabbix如何能判断出来这个程序是经历重启的呢?只能从pid号码的变换这一条证据来实现,而zabbix本身不会直接监控pid这个数字,所以我们就要写一下这个简单的命令。


假设这里有一台运行着pms程序的服务器,我们要得到pms的pid值,这很简单。#ps -ef|grep pms|grep -v grep|awk '{print $2}'

zabbix 键值配置 zabbix自定义键值_zabbix 键值配置

可以看出现在的进程号是10634,然后我们登陆这台被监控机的agentd.conf文件里去修改一些东西。


这里插上一句话,agent.conf是用超级服务(xinetd)的方式来启动的,而agentd.conf是以独立进程的方式来启动的。这是他俩的一个区别点。


好,我们现在来到了这台pms-002的agentd.conf里,做了如下的修改:

zabbix 键值配置 zabbix自定义键值_开发人员_02

这里我们先开启了UnsafeUserParameters,这是因为在下面的语句里我们用到了特殊符号$。


其次就是我们看到UserParameter的格式是“<key值>,<远程命令〉”的格式。其中远程命令可以是一句话也可以是一个脚本,我下面写的memfree就是一个脚本,这个脚本要注意权限,可以是无脑777。修改完毕之后,保存退出。


重启zabbix_agentd客户端。


这个时候我们可以先来zabbix_server去get一下这个key,看一下能否得到这个值。

zabbix 键值配置 zabbix自定义键值_zabbix 键值配置_03

如期得到10634这个值,实验成功!


剩下的就是在zabbix web界面添加对应的item了,这个就不多赘述了。trigger这里多说一句,既然是pid值发生了变化,那么对应的expression应该这么写:{js-online-pms-002:pid.diff(0)}>0。




转载于:https://blog.51cto.com/chenx1242/1839829