- #1 Zabbix агент
Zabbix для связи с агентом Zabbix использует протокол обмена данными основанный на формате JSON.
- Пассивные проверки
Пассивная проверка это упрощенный запрос данных. Zabbix сервер (или прокси) запрашивает данные, например загрузка ЦПУ, и агент Zabbix отправляет результат обратно серверу.
** Запрос сервера **
<ключ элемента данных>\n
** Ответ агента **
<HEADER><DATALEN><DATA>
Например:
- Сервер открывает TCP соединение
- Сервер отправляет agent.ping\n
- Агент получает запрос и отвечает <HEADER><DATALEN>1
- Серверные процессы обрабатывают данные полученного значения, в нашем случае '1'.
- TCP соединение закрывается
- Активные проверки
Активные проверки требуют более сложной обработки. Сначала агент должен запросить список элементов данных для независимой обработки. Потом агент периодически направляет новые значения серверу.
- Получение списка элементов
** Запрос агента **
<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.
Например:
- Агент открывает TCP соединение
- Агент запрашивает список элементов данных
- Сервер отвечает списком элементов данных (ключ элемента, задержка)
- Агент обрабатывает ответ
- TCP соединение закрывается
- Агент начинает периодический сбор данных
- Отправка собранных данных
** Агент оправляет **
<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"
}
Например:
- Агент открывает TCP соединение
- Агент отправляет список значений
- Сервер обрабатывает полученные данные и отправляет обратно результат обработки
- TCP соединение закрывается