zbx版本:3.0.19
agent.ping这个键值所在的文件是zabbix-3.0.19\src\libs\zbxsysinfo\agent\agent.c
首先看一下ZBX_METRIC这个结构体,所在的文件是zabbix-3.0.19\include\module.h
4个结构成员说明如下:
第1个成员:监控项的键值(例如agent.ping)
第2个成员:标志, 可以是CF_HAVEPARAMS或0(取决于监控项是否接受参数)
第3个成员:函数,实现这个监控项的函数
第4个成员:测试参数,当zbx客户端带有"-p"标志启动时,这个参数列表会被用到
由上可知,agent.ping键值的功能就是由AGENT_PING函数实现的。AGENT_PING函数里就2行,其中SET_UI64_RESULT所在的文件是zabbix-3.0.19\include\module.h
SET_UI64_RESULT的功能就是把右边值赋给左边变量。所以我们知道了,agent.ping这个键值会始终返回1。
zbx自带模板里有对应描述,说明对源码的分析是正确的。
再多说几句parameters_agent,这个数组被用到的文件是zabbix-3.0.19\src\libs\zbxsysinfo\sysinfo.c
主要就是调用了add_metric函数,parameters_agent数组是add_metric函数的参数。add_metric函数的作用就是向zbx系统中注册一个新监控项键值。
commands是在sysinfo.c开头定义的一个ZBX_METRIC结构体变量,初始值是NULL。
add_metric函数中,把metric的成员值赋给commands的成员,除了第一次(commands初始值是NULL)之外,还要做内容比较,防止键值重复。
commands结构哪里使用?以后再分析。:)