Этот раздел описывает детали пассивных и активных проверок, которые выполняются Zabbix агентом.
Zabbix использует протокол на основе JSON для взаимодействия с Zabbix агентом.
Имеется несколько определений используемых в параметрах протокола, используемом в Zabbix:
<HEADER> - "ZBXD\x01" (5 байт) <DATALEN> - размер данных (8 байт). число 1 отформатируется в 01/00/00/00/00/00/00/00 (восемь байт в HEX, 64-битное число)
Чтобы не израсходовать память полностью (в теории) Zabbix сервер ограничен на прием данных только 64МБ за одно соединение при использовании Zabbix протокола версий 2.2.0-2.2.2 (128МБ до 2.2.0, неограничено в версиях до Zabbix 2.0.3)
Начиная с версии Zabbix 2.2.3 лимит был изменен обратно до 128МБ, чтобы оставалась совместимость со старыми версиями Zabbix, когда процесс с лимитом отправки данных в 128МБ мог бы отправить данные другому процессу с лимитом в 64МБ, такое поведение могло послужить причиной отказа от приема данных приемником по причине выхода за лимит размера.
Пассивной проверкой является простой запрос данных. Zabbix сервер или прокси запрашивает какие-либо данные (к примеру, Загрузку CPU) и Zabbix агент отправляет обратно результат серверу.
Запрос сервера
<ключ элемента данных>\n
Ответ агента
<HEADER><DATALEN><DATA>
Например:
Активные проверки требуют более сложной обработки. Агент должен сначала получить с сервера список элементов данных для независимой обработки.
Сервера, которые отдают активные проверки, перечислены в параметре “ServerActive” файла конфигурации агента. Частота запросов проверок настраивается параметром 'RefreshActiveChecks' в том же файле конфигурации. Однако, если обновление активных проверок завершится с ошибкой, запрос повторится через, жестко задано в коде, 60 секунд. Затем, агент периодически отправлять новые значения на сервер(а).
Запрос агента
<HEADER><DATALEN>{ "request":"active checks", "host":"<имя хоста>" }
Ответ сервера
{ "response":"success", "data":[ { "key":"log[\/home\/zabbix\/logs\/zabbix_agentd.log]", "delay":"30", "lastlogsize":"0" }, { "key":"agent.version", "delay":"600" } ] }
Сервер должен ответить положительно. У каждого полученного элемента данных обязательно должны быть указаны параметры key и delay. Для элементов данных, которые имеют тип “Журнал (Log)”, также должен быть параметр lastlogsize.
Например:
Отправка агента
<HEADER><DATALEN>{ "request":"agent data", "data":[ { "host":"<hostname>", "key":"log[\/home\/zabbix\/logs\/zabbix_agentd.log]", "value":" 13039:20090907:184546.759 zabbix_agentd started. ZABBIX 1.6.6 (revision {7836}).", "lastlogsize":80, "clock":1252926015 }, { "host":"<hostname>", "key":"agent.version", "value":"1.6.6", "clock":1252926015 } ], "clock":1252926016 }
Ответ сервера
<HEADER><DATALEN>{ "response":"success", "info":"Processed 2 Failed 0 Total 2 Seconds spent 0.002070" }
Например: