Это перевод страницы документации с английского языка. Помогите нам сделать его лучше.

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

Обзор

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

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

Смотрите также: Подробная информация о протоколе Zabbix агента 2.

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

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

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

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

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

Ответ агента

<ДАННЫЕ>[\0<ОШИБКА>]

Часть в квадратных скобках выше опциональна и отправляется только по неподдерживаемым элементам данных.

Например, для поддерживаемых элементов данных:

  1. Сервер открывает TCP-соединение
  2. Сервер отправляет <ЗАГОЛОВОК><ДЛИНАДАННЫХ>agent.ping
  3. Агент читает запрос и отвечает с <ЗАГОЛОВОК><ДЛИНАДАННЫХ>1
  4. Сервер обрабатывает данные, чтобы извлечь значение, в нашем случае '1'
  5. TCP-соединение закрывается

Для неподдерживаемых элементов данных:

  1. Сервер открывает TCP-соединение
  2. Сервер отправляет <ЗАГОЛОВОК><ДЛИНАДАННЫХ>vfs.fs.size[/nono]
  3. Агент читает запрос и отвечает с <ЗАГОЛОВОК><ДЛИНАДАННЫХ>ZBX_NOTSUPPORTED\0Cannot obtain filesystem information: [2] No such file or directory
  4. Сервер обрабатывает данные, меняет состояние элемента данных на неподдерживаемое с приведённым сообщением об ошибке
  5. TCP-соединение закрывается

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

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

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

Затем агент периодически отправляет новые значения на сервер(а).

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

In order to decrease network traffic and resources usage Zabbix server or Zabbix proxy will provide configuration only if Zabbix agent still hasn't received configuration or if something has changed in host configuration, global macros or global regular expressions.

The agent then periodically sends the new values to the server(s).

If an agent is behind the firewall you might consider using only Active checks because in this case you wouldn't need to modify the firewall to allow initial incoming connections.

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

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

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

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

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

Ответ сервера должен быть успешным. У каждого полученного элемента данных обязательно должны быть указаны свойства key, delay, lastlogsize и mtime, независимо от того является элемент данных журнальным или нет.

Например:

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

Возьмите на заметку, что (чувствительные) данные конфигурации могут стать доступными лицам, имеющим доступ к порту траппера Zabbix сервера, при использовании активных проверок. Это возможно так как любой может представиться активным агентом и запросить данные конфигурации элементов данных; аутентификация не производится, если вы не используете опции шифрования.

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

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

{
           "request":"agent data",
           "session": "12345678901234567890123456789012",
           "data":[
               {
                   "host":"<hostname>",
                   "key":"agent.version",
                   "value":"2.4.0",
                   "id": 1,
                   "clock":1400675595,            
                   "ns":76808644
               },
               {
                   "host":"<hostname>",
                   "key":"log[/home/zabbix/logs/zabbix_agentd.log]",
                   "lastlogsize":112,
                   "value":" 19845:20140621:141708.521 Starting Zabbix Agent [<hostname>]. Zabbix 2.4.0 (revision 50000).",
                   "id": 2,
                   "clock":1400675595,            
                   "ns":77053975
               },
               {
                   "host":"<hostname>",
                   "key":"vfs.fs.size[/nono]",
                   "state":1,
                   "value":"Cannot obtain filesystem information: [2] No such file or directory",
                   "id": 3,
                   "clock":1400675595,            
                   "ns":78154128
               }
           ],
           "clock": 1400675595,
           "ns": 78211329
       }

Виртуальный ID назначается каждому значению. Значением ID является простой счётчик с инкрементом, уникальный в пределах одной сессии передачи данных (идентифицируется при помощи токена сессии). Этот ID используется, чтобы отбрасывать дубликаты значений, которые могут быть отправлены в средах с плохой связью.

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

{
           "response":"success",
           "info":"processed: 3; failed: 0; total: 3; seconds spent: 0.003534"
       }

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

Например:

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

Обратите внимание на то, как в примере выше указывается неподдерживаемое состояние для vfs.fs.size[/nono] при помощи значения "state" равного 1 и сообщения об ошибке в свойстве "value".

Сообщение об ошибке будет обрезано до 2048 символов на стороне сервера.

Heartbeat message

The heartbeat message is sent by an active agent to Zabbix server/proxy every HeartbeatFrequency seconds (configured in the Zabbix agent configuration file).

It is used to monitor the availability of active checks.

{
         "request": "active check heartbeat",
         "host": "Zabbix server",
         "heartbeat_freq": 60
       }
Field Type Mandatory Value
request string yes active check heartbeat
host string yes The host name.
heartbeat_freq number yes The agent heartbeat frequency (HeartbeatFrequency configuration parameter).

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

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