org.altlinux.jabbix
Class JabbixJSONProtocol

java.lang.Object
  extended by org.altlinux.jabbix.JabbixJSONProtocol

public class JabbixJSONProtocol
extends Object

Константы и функции для основанного на JSON протокола Zabbix-агента.


Field Summary
static String ZBX_PROTO_TAG_AVAILABLE
           
static String ZBX_PROTO_TAG_CLOCK
          Определяет время (обновления и/или создания) записи.
static String ZBX_PROTO_TAG_DATA
          Ключ записи, содержащей массив записей о метриках.
static String ZBX_PROTO_TAG_DCHECK
           
static String ZBX_PROTO_TAG_DELAY
          Определяет период обновления активной метрики, определяемой соответствующей записью.
static String ZBX_PROTO_TAG_DRULE
           
static String ZBX_PROTO_TAG_ERROR
           
static String ZBX_PROTO_TAG_HOST
          Определяет имя локального узла агента, ожидаемое сервером.
static String ZBX_PROTO_TAG_HOSTID
           
static String ZBX_PROTO_TAG_INFO
          Определяет комментарий к выполненной сервером операции обработки данных или сообщение об ошибке.
static String ZBX_PROTO_TAG_IP
           
static String ZBX_PROTO_TAG_IPMI_AVAILABLE
           
static String ZBX_PROTO_TAG_IPMI_ERROR
           
static String ZBX_PROTO_TAG_KEY
          Определяет имя записи.
static String ZBX_PROTO_TAG_KEY_ORIG
           
static String ZBX_PROTO_TAG_LOGEVENTID
           
static String ZBX_PROTO_TAG_LOGLASTSIZE
           
static String ZBX_PROTO_TAG_LOGSEVERITY
           
static String ZBX_PROTO_TAG_LOGSOURCE
           
static String ZBX_PROTO_TAG_LOGTIMESTAMP
           
static String ZBX_PROTO_TAG_MTIME
           
static String ZBX_PROTO_TAG_NODEID
           
static String ZBX_PROTO_TAG_PORT
           
static String ZBX_PROTO_TAG_PROXY
           
static String ZBX_PROTO_TAG_REGEXP
           
static String ZBX_PROTO_TAG_REQUEST
          Указывает, что данное сообщение является запросом к Zabbix-серверу.
static String ZBX_PROTO_TAG_RESPONSE
          Указывает, что данное сообщение является ответом от Zabbix-сервера.
static String ZBX_PROTO_TAG_SCRIPTID
           
static String ZBX_PROTO_TAG_SNMP_AVAILABLE
           
static String ZBX_PROTO_TAG_SNMP_ERROR
           
static String ZBX_PROTO_TAG_STATUS
           
static String ZBX_PROTO_TAG_TYPE
           
static String ZBX_PROTO_TAG_VALUE
          Определяет значение записи.
static String ZBX_PROTO_VALUE_AGENT_DATA
          Указывает, что агент отправляет список свежих значений метрик соответствующий ранее запрошенному набору активных проверок (см.
static String ZBX_PROTO_VALUE_AUTO_REGISTRATION_DATA
           
static String ZBX_PROTO_VALUE_DISCOVERY_DATA
           
static String ZBX_PROTO_VALUE_FAILED
          Указывает, что сервер не смог успешно произвести ранее запрошенную операцию.
static String ZBX_PROTO_VALUE_GET_ACTIVE_CHECKS
          Указывает, что агент запрашивает список активных проверок -- набор метрик (JabbixActiveMetric), в которых заинтересован сервер.
static String ZBX_PROTO_VALUE_HISTORY_DATA
           
static String ZBX_PROTO_VALUE_HOST_AVAILABILITY
           
static String ZBX_PROTO_VALUE_PROXY_CONFIG
           
static String ZBX_PROTO_VALUE_PROXY_HEARTBEAT
           
static String ZBX_PROTO_VALUE_SENDER_DATA
           
static String ZBX_PROTO_VALUE_SUCCESS
          Указывает, что сервер успешно выполнил ранее запрошенную операцию.
 
Constructor Summary
JabbixJSONProtocol()
           
 
Method Summary
static Collection receiveActiveCheckList(JabbixReader reader)
          Читает и возвращает список активных проверок.
static String receiveMetricListResponse(JabbixReader reader)
          Принимает информацию от сервера в ответ на переданные метрические данные.
static void requestActiveCheckList(JabbixWriter writer, String hostName)
          Запрашивает набор метрик для "активного" мониторинга.
static void sendMetricList(JabbixWriter writer, String hostName, Collection metrics)
          Отправляет набор значений метрик на Zabbix-сервер.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

ZBX_PROTO_TAG_CLOCK

public static String ZBX_PROTO_TAG_CLOCK
Определяет время (обновления и/или создания) записи.

See Also:
JabbixJSONProtocol.sendMetricList(JabbixWriter, String, Collection), JabbixJSONProtocol.ZBX_PROTO_TAG_KEY

ZBX_PROTO_TAG_DATA

public static String ZBX_PROTO_TAG_DATA
Ключ записи, содержащей массив записей о метриках.

See Also:
JabbixJSONProtocol.receiveActiveCheckList(JabbixReader), JabbixJSONProtocol.sendMetricList(JabbixWriter, String, Collection)

ZBX_PROTO_TAG_REGEXP

public static String ZBX_PROTO_TAG_REGEXP

ZBX_PROTO_TAG_DELAY

public static String ZBX_PROTO_TAG_DELAY
Определяет период обновления активной метрики, определяемой соответствующей записью.

See Also:
JabbixJSONProtocol.receiveActiveCheckList(JabbixReader), JabbixJSONProtocol.ZBX_PROTO_TAG_KEY, JabbixActiveMetric

ZBX_PROTO_TAG_DRULE

public static String ZBX_PROTO_TAG_DRULE

ZBX_PROTO_TAG_DCHECK

public static String ZBX_PROTO_TAG_DCHECK

ZBX_PROTO_TAG_HOST

public static String ZBX_PROTO_TAG_HOST
Определяет имя локального узла агента, ожидаемое сервером.

See Also:
JabbixJSONProtocol.requestActiveCheckList(JabbixWriter, String), JabbixJSONProtocol.sendMetricList(JabbixWriter, String, Collection)

ZBX_PROTO_TAG_INFO

public static String ZBX_PROTO_TAG_INFO
Определяет комментарий к выполненной сервером операции обработки данных или сообщение об ошибке.

See Also:
JabbixJSONProtocol.receiveMetricListResponse(JabbixReader), JabbixJSONProtocol.requestActiveCheckList(JabbixWriter, String)

ZBX_PROTO_TAG_IP

public static String ZBX_PROTO_TAG_IP

ZBX_PROTO_TAG_KEY

public static String ZBX_PROTO_TAG_KEY
Определяет имя записи. В том случае, если запись представляет метрику, её имя определяется посредством данного тега.

See Also:
JabbixJSONProtocol.receiveActiveCheckList(JabbixReader), JabbixJSONProtocol.sendMetricList(JabbixWriter, String, Collection), JabbixJSONProtocol.ZBX_PROTO_TAG_DELAY, JabbixJSONProtocol.ZBX_PROTO_TAG_CLOCK, JabbixJSONProtocol.ZBX_PROTO_TAG_VALUE, JabbixActiveMetric

ZBX_PROTO_TAG_KEY_ORIG

public static String ZBX_PROTO_TAG_KEY_ORIG

ZBX_PROTO_TAG_LOGLASTSIZE

public static String ZBX_PROTO_TAG_LOGLASTSIZE

ZBX_PROTO_TAG_MTIME

public static String ZBX_PROTO_TAG_MTIME

ZBX_PROTO_TAG_LOGTIMESTAMP

public static String ZBX_PROTO_TAG_LOGTIMESTAMP

ZBX_PROTO_TAG_LOGSOURCE

public static String ZBX_PROTO_TAG_LOGSOURCE

ZBX_PROTO_TAG_LOGSEVERITY

public static String ZBX_PROTO_TAG_LOGSEVERITY

ZBX_PROTO_TAG_LOGEVENTID

public static String ZBX_PROTO_TAG_LOGEVENTID

ZBX_PROTO_TAG_PORT

public static String ZBX_PROTO_TAG_PORT

ZBX_PROTO_TAG_PROXY

public static String ZBX_PROTO_TAG_PROXY

ZBX_PROTO_TAG_REQUEST

public static String ZBX_PROTO_TAG_REQUEST
Указывает, что данное сообщение является запросом к Zabbix-серверу. Соответствующее данному тегу значение должно определять тип соверщаемого запроса.

See Also:
JabbixJSONProtocol.ZBX_PROTO_TAG_RESPONSE, JabbixJSONProtocol.requestActiveCheckList(JabbixWriter, String), JabbixJSONProtocol.sendMetricList(JabbixWriter, String, Collection), JabbixJSONProtocol.ZBX_PROTO_VALUE_GET_ACTIVE_CHECKS, JabbixJSONProtocol.ZBX_PROTO_VALUE_AGENT_DATA

ZBX_PROTO_TAG_RESPONSE

public static String ZBX_PROTO_TAG_RESPONSE
Указывает, что данное сообщение является ответом от Zabbix-сервера. Соответствующее данному тегу значение должно определять статус ответа, т.е. статус запрошенной операции.

See Also:
JabbixJSONProtocol.ZBX_PROTO_TAG_REQUEST, JabbixJSONProtocol.receiveActiveCheckList(JabbixReader), JabbixJSONProtocol.receiveMetricListResponse(JabbixReader), JabbixJSONProtocol.ZBX_PROTO_VALUE_SUCCESS, JabbixJSONProtocol.ZBX_PROTO_VALUE_FAILED

ZBX_PROTO_TAG_STATUS

public static String ZBX_PROTO_TAG_STATUS

ZBX_PROTO_TAG_TYPE

public static String ZBX_PROTO_TAG_TYPE

ZBX_PROTO_TAG_VALUE

public static String ZBX_PROTO_TAG_VALUE
Определяет значение записи. В том случае, если запись представляет метрику, её значение определяется посредством данного тега.

See Also:
JabbixJSONProtocol.sendMetricList(JabbixWriter, String, Collection), JabbixJSONProtocol.ZBX_PROTO_TAG_KEY, JabbixActiveMetric

ZBX_PROTO_TAG_SCRIPTID

public static String ZBX_PROTO_TAG_SCRIPTID

ZBX_PROTO_TAG_HOSTID

public static String ZBX_PROTO_TAG_HOSTID

ZBX_PROTO_TAG_NODEID

public static String ZBX_PROTO_TAG_NODEID

ZBX_PROTO_TAG_AVAILABLE

public static String ZBX_PROTO_TAG_AVAILABLE

ZBX_PROTO_TAG_SNMP_AVAILABLE

public static String ZBX_PROTO_TAG_SNMP_AVAILABLE

ZBX_PROTO_TAG_IPMI_AVAILABLE

public static String ZBX_PROTO_TAG_IPMI_AVAILABLE

ZBX_PROTO_TAG_ERROR

public static String ZBX_PROTO_TAG_ERROR

ZBX_PROTO_TAG_SNMP_ERROR

public static String ZBX_PROTO_TAG_SNMP_ERROR

ZBX_PROTO_TAG_IPMI_ERROR

public static String ZBX_PROTO_TAG_IPMI_ERROR

ZBX_PROTO_VALUE_FAILED

public static String ZBX_PROTO_VALUE_FAILED
Указывает, что сервер не смог успешно произвести ранее запрошенную операцию.

See Also:
JabbixJSONProtocol.ZBX_PROTO_TAG_RESPONSE, JabbixJSONProtocol.receiveActiveCheckList(JabbixReader), JabbixJSONProtocol.receiveMetricListResponse(JabbixReader)

ZBX_PROTO_VALUE_SUCCESS

public static String ZBX_PROTO_VALUE_SUCCESS
Указывает, что сервер успешно выполнил ранее запрошенную операцию.

See Also:
JabbixJSONProtocol.ZBX_PROTO_TAG_RESPONSE, JabbixJSONProtocol.receiveActiveCheckList(JabbixReader), JabbixJSONProtocol.receiveMetricListResponse(JabbixReader)

ZBX_PROTO_VALUE_GET_ACTIVE_CHECKS

public static String ZBX_PROTO_VALUE_GET_ACTIVE_CHECKS
Указывает, что агент запрашивает список активных проверок -- набор метрик (JabbixActiveMetric), в которых заинтересован сервер.

See Also:
JabbixJSONProtocol.ZBX_PROTO_TAG_REQUEST, JabbixJSONProtocol.requestActiveCheckList(JabbixWriter, String)

ZBX_PROTO_VALUE_PROXY_CONFIG

public static String ZBX_PROTO_VALUE_PROXY_CONFIG

ZBX_PROTO_VALUE_PROXY_HEARTBEAT

public static String ZBX_PROTO_VALUE_PROXY_HEARTBEAT

ZBX_PROTO_VALUE_DISCOVERY_DATA

public static String ZBX_PROTO_VALUE_DISCOVERY_DATA

ZBX_PROTO_VALUE_HOST_AVAILABILITY

public static String ZBX_PROTO_VALUE_HOST_AVAILABILITY

ZBX_PROTO_VALUE_HISTORY_DATA

public static String ZBX_PROTO_VALUE_HISTORY_DATA

ZBX_PROTO_VALUE_AUTO_REGISTRATION_DATA

public static String ZBX_PROTO_VALUE_AUTO_REGISTRATION_DATA

ZBX_PROTO_VALUE_SENDER_DATA

public static String ZBX_PROTO_VALUE_SENDER_DATA

ZBX_PROTO_VALUE_AGENT_DATA

public static String ZBX_PROTO_VALUE_AGENT_DATA
Указывает, что агент отправляет список свежих значений метрик соответствующий ранее запрошенному набору активных проверок (см. ActiveAgent).

See Also:
JabbixJSONProtocol.ZBX_PROTO_TAG_REQUEST, JabbixJSONProtocol.sendMetricList(JabbixWriter, String, Collection)
Constructor Detail

JabbixJSONProtocol

public JabbixJSONProtocol()
Method Detail

requestActiveCheckList

public static void requestActiveCheckList(JabbixWriter writer,
                                          String hostName)
                                   throws IOException
Запрашивает набор метрик для "активного" мониторинга. Запрошенный набор может быть получен посредством функции JabbixJSONProtocol.receiveActiveCheckList(JabbixReader).

Сообщение JSON следующей структуры составляется и отправляется на сервер:

 {"request": "active checks",
  "host": "<имя узла>"}

Параметр имя узла (host) соответствует ожидаемому сервером имени локального узла (см. ZabbixClient.getHostName()).

Parameters:
writer - объект, инкапсулирующий процесс записи в сокет
hostName - имя локального узла
Throws:
IOException - если во время отправки запроса произошло исключение ввода-вывода
See Also:
JabbixJSONProtocol.ZBX_PROTO_TAG_REQUEST, JabbixJSONProtocol.ZBX_PROTO_VALUE_GET_ACTIVE_CHECKS, JabbixJSONProtocol.ZBX_PROTO_TAG_HOST

receiveActiveCheckList

public static Collection receiveActiveCheckList(JabbixReader reader)
                                         throws IOException,
                                                JabbixException,
                                                JabbixProtocolException
Читает и возвращает список активных проверок. Используется для чтения ранее запрошенной информации по метрикам для "активного" слежения.

Ожидается сообщение JSON следующей формы (структуры):

 {
     "response": "success",
     "data":
     [
         { "key": "<ключ метрики>",
           "delay": "<период обновления>" },
         { "key": "<ключ метрики>",
           "delay": "<период обновления>" },

         ...

     ]
  }

Параметр ключ метрики (key) для каждой записи определяет имя метрики (см. JabbixActiveMetric) значение которой сервер ожидает получать периодически.

Период обновления значения метрики определятся соответствующим параметром период обновления.

В том случае, если сервер не в состоянии отправить запрошенный список активных проверок, он отвечает сообщением с указанием статуса неудачной операции и необязательным комметрарием (см. JabbixJSONProtocol.receiveMetricListResponse(JabbixReader)).

Parameters:
reader - объект, инкапсулирующий процесс чтения из сокета
Returns:
набор активных метрик (JabbixActiveMetric) представляющий список активных проверок
Throws:
IOException - если во время приёма ответа возникло исключение ввода-вывода
JabbixException - если сервер отправил статус неудачной операции
JabbixProtocolException - если протокол был нарушен (т.е. было принято неожиданное значение)
See Also:
JabbixJSONProtocol.requestActiveCheckList(JabbixWriter,String), JabbixJSONProtocol.ZBX_PROTO_TAG_RESPONSE, JabbixJSONProtocol.ZBX_PROTO_VALUE_SUCCESS, JabbixJSONProtocol.ZBX_PROTO_TAG_DATA, JabbixJSONProtocol.ZBX_PROTO_TAG_KEY, JabbixJSONProtocol.ZBX_PROTO_TAG_DELAY, JabbixJSONProtocol.ZBX_PROTO_VALUE_FAILED

sendMetricList

public static void sendMetricList(JabbixWriter writer,
                                  String hostName,
                                  Collection metrics)
                           throws IOException
Отправляет набор значений метрик на Zabbix-сервер. Сервер отвечает посылкой статусного сообщения (см. JabbixJSONProtocol.receiveMetricListResponse(JabbixReader)).

Сообщение JSON следующей структуры составляется и отправляется на сервер:

 {
     "request": "agent data",
     "data":
     [
         { "host": "<имя узла>",
           "key": "<ключ метрики>",
           "value": "<значение метрики>",
           "clock": <время метрики>" },
         { "host": "<имя узла>",
           "key": "<ключ метрики>",
           "value": "<значение метрики>",
           "clock": <время метрики>" },

           ...

       ]
      "clock": <время сообщения>
 }

Параметр имя узла (host) соответствует ожидаемому сервером имени локального узла (см. ZabbixClient.getHostName()).

Параметр ключ метрики (key) для каждой записи определяет имя метрики (см. JabbixActiveMetric) значение которой сервер ожидает получать периодически.

Параметр значние метрики (value) определяет значение метрики, представляемое в виде текстовой строки. Поскольку значение метрики не отправляется непосредственно после ого обновления, специальный переметр врямя метрики (clock) в каждой записи используется для того, чтобы явно указать время его обновления (см. JabbixActiveMetric.getUpdated()).

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

Parameters:
writer - объект, инкапсулирующий процесс записи в сокет
hostName - имя локального узла
metrics - набор метрик
Throws:
IOException - если во время отправки данных возникло исключение ввода-вывода
See Also:
JabbixJSONProtocol.ZBX_PROTO_TAG_REQUEST, JabbixJSONProtocol.ZBX_PROTO_VALUE_AGENT_DATA, JabbixJSONProtocol.ZBX_PROTO_TAG_HOST, JabbixJSONProtocol.ZBX_PROTO_TAG_KEY, JabbixJSONProtocol.ZBX_PROTO_TAG_VALUE, JabbixJSONProtocol.ZBX_PROTO_TAG_CLOCK, JabbixJSONProtocol.ZBX_PROTO_TAG_DATA

receiveMetricListResponse

public static String receiveMetricListResponse(JabbixReader reader)
                                        throws IOException,
                                               JabbixException,
                                               JabbixProtocolException
Принимает информацию от сервера в ответ на переданные метрические данные.

Ожидается сообщение JSON следующей формы (структуры):

 { "response": "<статус>",
   "info": "<комментарий>" }

В случае успеха параметр статус (response) указывается как success. А параметр комментарий (info) содержит комментарий к выполненной обработке данных в понятной для человека форме.

В случае ошибки статус может быть установлен как failed или в любое другое значение (отображающее неудачу). Переметр комментарий может присутствовать или быть опущен.

Parameters:
reader - объект, инкапсулирующий процесс чтения из сокета
Returns:
ответное сообщение сервера
Throws:
IOException - если во время приёма ответа возникло исключение ввода-вывода
JabbixException - если сервер отправил статус неудачной операции
JabbixProtocolException - если протокол был нарушен (т.е. было принято неожиданное значение)
See Also:
JabbixJSONProtocol.ZBX_PROTO_TAG_RESPONSE, JabbixJSONProtocol.ZBX_PROTO_VALUE_SUCCESS, JabbixJSONProtocol.ZBX_PROTO_TAG_INFO, JabbixJSONProtocol.ZBX_PROTO_VALUE_FAILED