3 Пассивные и активные проверки агента

Обзор

Этот раздел описывает детали пассивных и активных проверок, которые выполняются Zabbix агентом.

Zabbix использует протокол на основе JSON для взаимодействия с Zabbix агентом.

Имеется несколько определений используемых в параметрах протокола, используемом в Zabbix:

<HEADER> - "ZBXD\x01" (5 байт)
       <DATALEN> - размер данных (8 байт). число 1 отформатируется в 01/00/00/00/00/00/00/00 (восемь байт в HEX, 64-битное число)
Copy
✔ Copied

Чтобы не израсходовать память полностью (в теории) 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
Copy
✔ Copied

Ответ агента

<HEADER><DATALEN><DATA>
Copy
✔ Copied

Например:

  1. Сервер открывает TCP соединение
  2. Сервер отправляет agent.ping\n
  3. Агент читает запрос и отвечает с <HEADER><DATALEN>1
  4. Сервер обрабатывает данные, чтобы извлечь значение, в нашем случае 1
  5. TCP соединение закрывается

Активные проверки

Активные проверки требуют более сложной обработки. Агент должен сначала получить с сервера список элементов данных для независимой обработки.

Сервера, которые отдают активные проверки, перечислены в параметре "ServerActive" файла конфигурации агента. Частота запросов проверок настраивается параметром 'RefreshActiveChecks' в том же файле конфигурации. Однако, если обновление активных проверок завершится с ошибкой, запрос повторится через, жестко задано в коде, 60 секунд. Затем, агент периодически отправлять новые значения на сервер(а).

Получение списка элементов данных

Запрос агента

<HEADER><DATALEN>{
          "request":"active checks",
          "host":"<имя хоста>"
       }
Copy
✔ Copied

Ответ сервера

{
           "response":"success",
           "data":[
           {
               "key":"log[\/home\/zabbix\/logs\/zabbix_agentd.log]",
               "delay":"30",
               "lastlogsize":"0"
           },
           {
               "key":"agent.version",
               "delay":"600"
           }
           ]
       }
Copy
✔ Copied

Сервер должен ответить положительно. У каждого полученного элемента данных обязательно должны быть указаны параметры key и delay. Для элементов данных, которые имеют тип "Журнал (Log)", также должен быть параметр lastlogsize.

Например:

  1. Агент открывает TCP соединение
  2. Агент запрашивает список проверок
  3. Севрер отвечает списком элементов данных (ключ элемента данных, интервал обновления)
  4. Агент анализирует ответ
  5. TCP соединение закрывается
  6. Агент начинает периодический сбор данных
Отправка собранных данных

Отправка агента

<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
       }
Copy
✔ Copied

Ответ сервера

<HEADER><DATALEN>{
           "response":"success",
           "info":"Processed 2 Failed 0 Total 2 Seconds spent 0.002070"
       }
Copy
✔ Copied

Если отправка некоторых значений завершилась неудачей на сервере (например, по причине того, что узел сети или элемент данных был деактивирован или удален), агент не будет повторять отправку этих элементов данных

Например:

  1. Агент открывает TCP соединение
  2. Агнет отправляет список значений
  3. Сервер обрабатывает данные и отправляет статус обратно
  4. TCP соединение закрывается

Более старый XML протокол

Zabbix воспринимает до 16 МВ XML данных закодированных в Base64, но одиночное декодированное значение должно быть не длиннее 64 КБ, в противном случае значение будет обрезано до 64 КБ в процессе декодирования.

Смотрите также

  1. Подробные сведения о протоколе Zabbix агента
To toggle search highlight, press Ctrl+Alt+H
Have an improvement suggestion for this page? Select the text that could be improved and press Ctrl+Enter to send it to the editors.