Zabbix後端源碼解析一
src\zabbix_agent\zabbix_agentd.c為Zabbix客戶端入口int main(int argc, char **argv)
參數解析 parse_commandline(argc, argv, &t);
針對不同參數,將task賦值t->task = ZBX_TASK_PRINT_SUPPORTED;
返回main函數,針對task進行相關操作switch (t.task)
其中case ZBX_TASK_PRINT_SUPPORTED:
為
-p --print Print known items and exit
通過test_parameters();
打印items
void test_parameters()
位於src\libs\zbxsysinfo\sysinfo.c
test_parameters()函數中通過test_parameter(key);
對commands[i].key
進行打印
static ZBX_METRIC *commands = NULL;
通過void init_metrics()
進行初始化
其中例如parameters_agent[i].key
,通過add_metric(&meters_agent[i], error, sizeof(error))
添加parameters_agent item
parameters_agent 位於src\libs\zbxsysinfo\agent\agent.c中
ZBX_METRIC parameters_agent[] =
/* KEY FLAG FUNCTION TEST PARAMETERS */
{
{"agent.hostname", 0, AGENT_HOSTNAME, NULL},
{"agent.ping", 0, AGENT_PING, NULL},
{"agent.version", 0, AGENT_VERSION, NULL},
{NULL}
};