public class JabbixProtocol
extends java.lang.Object
Базовый протокол Zabbix для связи между агентом и сервером представляет собой разновидность простого бинарного протокола и используется для передачи произвольных порций данных между Zabbix-совместимым агентом (например основанной на Jabbix-программой) и Zabbix-сервером.
Каждая такая передача называется сообщением. Каждое сообщение имеет следующую форму (структуру):
| 4 Байта | 1 Байт | 8 Байтов | ДЛИНА Байтов | ЗАГОЛОВОК ВЕРСИЯ ДЛИНА ДАННЫЕ СООБЩЕНИЯ
Поле ЗАГОЛОВОК
это 4-байтовая последовательность 4 символов ASCII, в настоящее время определённая как ZBXD
. Следующее поле ВЕРСИЯ
шириной в один байт определяет версию протокола. В настоящее время поддерживаемая версия протокола равняется 1 (т.е. 01h).
Следующее 8-байтовое поле ДЛИНА
содержит 64-битное целое число (младший байт первым) определяющее длину следующей за ним части ДАННЫЕ СООБЩЕНИЯ
. Все числовые данные также представляются в виде с младшим байтом в начале.
Для целей совместимости и для того, чтобы упростить программы-агенты, используется и другой протокол, основанный на разделителях. В этом протоколе сообщения не имеют предустановленной структуры. Вместо этого, один из символов-разделителей используется для обозначения конца каждого сообщения. Поскольку перевод строки (0Ah) также входит в набор разделителей, простые текстовые сообщения могут быть переданы как есть.
Основное использование передачи простых текстовых сообщений посредством неструктурированного протокола ведётся при взаимодействии Zabbix-сервера с пассивным агентом: сервер отправляет имя метрикри пассивному агенту как простой текст, без всякого заголовка. Однако агент не ограничен в ответе протым текстом и может использовать структурированную версию протокола если это удобно.
Кроме того, неструктурированные ответы могут отправляться сервером Zabbix в некоторых случаях.
AgentServer
Modifier and Type | Field and Description |
---|---|
static int |
AGENT_PORT
Номер порта агента по умолчанию (10050).
|
static java.lang.String |
HEADER
Четырёхбуквенный заголовок протокола.
|
static java.lang.String |
SEPARATORS
Набор разделителей сообщений.
|
static int |
SERVER_PORT
Порт Zabbix-сервера по умолчанию (10051).
|
static java.lang.String |
VERSION
Версия протокола (один байт).
|
Constructor and Description |
---|
JabbixProtocol() |
Modifier and Type | Method and Description |
---|---|
static JabbixReader |
getReader(java.io.InputStream in)
Возвращает объект, инкапсулирующий процесс чтения из указанного канала.
|
static JabbixWriter |
getWriter(java.io.OutputStream out)
Возвращает объект, инкапсулирующий процесс записи в указанный канал.
|
static boolean |
isSeparator(char c)
Определяет, является ли указанный символ разделителем сообщений.
|
static java.lang.String |
removeSeparators(java.lang.String str)
Возвращает указанную строку, из которой были удалены все символы-разделители.
|
public static java.lang.String HEADER
Для указания на Zabbix используется последовательность ZBXD
.
public static java.lang.String VERSION
В настоящее время поддерживается протокол версии 1 (01h).
public static java.lang.String SEPARATORS
В том случае, если длина сообщения не указана явно в заголовке, конец сообщения определяется посредством символа разделителя. Данная строка содержит последовательность символов этой категории.
В настоящее время символами-разделителями являются:
public static int AGENT_PORT
public static int SERVER_PORT
public static JabbixReader getReader(java.io.InputStream in)
in
- входной канал для чтенияpublic static JabbixWriter getWriter(java.io.OutputStream out)
out
- выходной канал для записиpublic static boolean isSeparator(char c)
c
- символ для проверкиJabbixProtocol.SEPARATORS
public static java.lang.String removeSeparators(java.lang.String str)
str
- строка