1 Zabbix агент

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

1.1 Пассивные проверки

Пассивная проверка это упрощенный запрос данных. Zabbix сервер (или прокси) запрашивает данные, например загрузка ЦПУ, и агент Zabbix отправляет результат обратно серверу.

** Запрос сервера **

<ключ элемента данных>\n

** Ответ агента **

<HEADER><DATALEN><DATA>

Например:

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

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

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

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

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

<HEADER><DATALEN>{
          "request":"active checks",
          "host":"<hostname>"
       }

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

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

Сервер должен ответить с информацией об успешности. По каждому вернувшемуся элементу, должны существовать ключ и задержка. Также для элементов с типом информации "Журнал (лог)" должен существовать lastlogsize.

Например:

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

1.2.2 Отправка собранных данных

** Агент оправляет **

<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"
       }

Например:

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