See:
Description
Packages | |
---|---|
org.altlinux.jabbix | Классы библиотпеки Jabbix |
org.altlinux.jabbix.apps | Программа JabbixAgent. |
org.altlinux.jabbix.metric | Стандартный набор агентов метрик. |
Библиотека Jabbix это набор классов Java, которые могут быть использованы для того, чтобы добавить функцилналность агента системы мониторинга Zabbix в программы.
Основные характеристики библиотеки:
Отдельная программа JabbixAgent может быть использована в качестве входной точки для отслеживания параметров сложной системы, такой как вычислительный кластер. Посредством использования специализированных агентов метрик, которые могут быть настроены и связаны динамически, через параметры команд нной строки, данные могут собираться различными путями, включая протоколы JSON, SOAP, RMI и другие сетевые средства.
Copyright (C) 2010 Paul Wolneykien.
Библиотека Jabbix -- это свободное программное обеспечение: вы можете свободно распростанять и/или изменять её по собственному желанию в соответствии с требованиями Ослабленного Общественного лицензионного соглашения GNU (GNU Lesser General Public License) Фонда Свободного программного обеспечения (Free Software Foundation), версии 3 или (по вашему желанию) любой, более поздней версии.
Библиотека Jabbix распространяется в надежде, что она будет полезна но БЕЗ ВСЯЧЕСКИХ ГАРАНТИЙ, включая подразумеваемую гарантию КАЧЕСТВА либо ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЕННЫХ ЦЕЛЕЙ. Для дополнительных сведений, обращайтесь к полной версии Ослабленного Общественного лицензионного соглашения GNU.
Вы должны были получить копию Ослабленного Общественного лицензионного соглашения GNU вместе с библиотекой Jabbix. Если нет, то обращайтесь по адресу http://www.gnu.org/licenses/.
Проект располагается на сервере Git.Alt: http://git.altlinux.org/people/manowar/packages/jabbix.git
SMTP: Paul Wolneykien <wolneykien@altlinux.org>
URL:
ALT Linux, Ltd http://www.altlinux.ru/,
http://www.altlinux.org/.
Подробную информацию о системе мониторинга Zabbix можно получить по адресу http://zabbix.org/.
See:
Description
Interface Summary | |
---|---|
ConnectionPredicate |
Предикат для определения разрешения на установку соединения от или к
некоторому узлу и порту, предназначенный для использования совместно с
JabbixSecurityManager .
|
MetricAgent | Агент метрики предоставляет функцию для чтения текущего значения метрики. |
MetricTable |
Обновляемая таблица, содержащая записи класса JabbixActiveMetric .
|
Class Summary | |
---|---|
ActiveAgent | Клиетн Zabbix-сервера, реализующий протокол активных проверок. |
ActiveMetricTable |
Обновляемая таблица, содержащая записи об активных метриках (JabbixActiveMetric )
и снабжённая периодом устаревания для всего содержимого таблицы в
целом.
|
AgentServer | Сервер-агент для системы мониторигна Zabbix. |
JabbixActiveMetric | Метрика, снабжённая дополнительной информацией, позволяющей использовать её для активных проверок. |
JabbixJSONProtocol | Константы и функции для основанного на JSON протокола Zabbix-агента. |
JabbixMetric | Метрика -- именованное значение, представляющее какой-либо параметр системы. |
JabbixMetricAgent |
Реализация интерфейса MetricAgent
для получения некоторой информации о работе прогамммы, основанной на
Jabbix.
|
JabbixProtocol | Константы и функции для протокола Zabbix-агента. |
JabbixReader | Объект, инкапсулирующий процесс чтения из канала, и реализующий базовый протокол Jabbix. |
JabbixRequest | Объект-задача, который используется для асинхронного получения значения метрики. |
JabbixSecurityManager |
Реализация интерфейса SecurityManager
используемого для управления доступом к основанной на Jabbix программе
и от неё.
|
JabbixWriter | Объект, инкапсулирующий процесс записи в канал и реализующий базовый протокол Jabbix. |
MetricRequest | Задача, инкапсулирующая процесс получения значения метрики с использованием агента метрики, как синхронно, так и асинхронно. |
ResponseQueue | Клиент Zabbix-сервера, который отправляет значения метрик на сервер, когда истекает период обновления какой-либо метрики. |
WhitelistPredicate | Реализует предикат соединения, использующий регулярное выражение для проверки имени узла. |
ZabbixClient | Базовый класс для всех клиентов Zabbix-сервера. |
Exception Summary | |
---|---|
JabbixException | Исключение, указывающее на общий характер неожиданной ситуации, возникшей во время работы программы, основанной на Jabbix. |
JabbixProtocolException | Исключение, указывающее на не предусмотренную протоколом Jabbix ситуацию, возникшую в работающей программе, основанной на Jabbix. |
NoSuchMetricException | Исключение, указывающее что агент для получения значения указанной метрики не был найден. |
UnknownCommandException | Исключение, указывающее на то, что переданная команда не изместна агенту. |
Классы библиотпеки Jabbix
java.lang.Object
public class ActiveAgentextends ZabbixClientimplements Runnable
Клиетн Zabbix-сервера, реализующий протокол активных проверок. В первую очередь клиент запрашивает у сервера набор метрик в получении значений которых сервер заинтересован, а затем переодически отправляет на сервер свежие значения данных метрик. Переодическое обновление также может выполняться и для самого набора метрик.
Одним из преимиществ модели активных проверок является то, что она может работать и в том случае, если агент находится за файерволом и поэтому до него нельзя добраться из внешней сети.
Клиент использует (возможно не активный) экземпляр сервера агентов (AgentServer
) как
инструмент получения значений метрик. Получение каждого значения метрики
выполняется асинхронно посредством пула потоков.
Constructor Summary | |
---|---|
ActiveAgent(AgentServer agentServer,
ThreadPoolExecutor pool,
long refreshPeriod) Создаёт экземпляр активного агента с заданными параметрами. |
Method Summary | |
---|---|
ThreadPoolExecutor
|
getPool()
Возвращает пул потоков, который используется при асинхронном получении значений метрик |
long
|
getRefreshPeriod()
Возвращает значение периода обновления списка активных проверок. |
void
|
run()
Запускает цикл активных проверок. |
void
|
setPool(ThreadPoolExecutor pool)
Устанавливает пул потоков, используемый для ассинхронного выполнения задач по получению значений метрик |
void
|
setRefreshPeriod(long refreshPeriod)
Устанавливает период обновления списка активных проверок. |
Methods inherited from class org.altlinux.jabbix.ZabbixClient |
---|
getAddress,
getHostName,
setAddress,
setAddress,
setAddress,
setAddress,
setHostName
|
Methods inherited from class java.lang.Object |
---|
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
|
Constructor Detail |
---|
public ActiveAgent(AgentServer agentServer, ThreadPoolExecutor pool, long refreshPeriod)
agentServer
- интерфейс для получения значений метрик
pool
- пул потоков для асинхронного получения значений
метрик
refreshPeriod
- период обновления набора активных
проверок (метрик) в миллисекундах
Method Detail |
---|
public void run()
refreshPeriod
.
Все активные метрики помещаются в очередь в порядке их устаревания.
Каждый раз, когда проходит отрезок времени, равный периоду
обновления
какой-либо метрики, новое значение данной метрики
запрашивается ассинхронно с использованием нового экземпляра задачи MetricRequest
.
Задача настраивается таким образом, что обновлённое значение метрики
помещается в другую очередь ResponseQueue
. При
переносе в очередь, отсчёт времени устаревания метрики начинается снова,
и поэтому каждая обновлённая метрика может находится в очереди вплоть до
истечения значения её параметра refreshPeriod
, после чего
значение метрики посылается на сервер. После этого метрика возвращается
обратно в список активных метрик.
Когда же устаревает сам список активных проверок, обрабатывающий очередь процесс заверщается (после отправки значений всех ожидающих отправки метрик), и новый список автивных проверок запрашивается у сервера. Создаются новые экземпляры очереди активных проверок и очереди отправки. Таким образом содержащиеся в предыдущем экземпляре очереди устаревшие метрики не возвращаются в новую очередь активных проверок.
run
in interface
Runnable
public void setRefreshPeriod(long refreshPeriod)
refreshPeriod
- значение периода обновления в
миллисекундах
ActiveMetricTable.setRefreshPeriod(long)
public long getRefreshPeriod()
ActiveMetricTable.getRefreshPeriod()
public void setPool(ThreadPoolExecutor pool)
pool
- интерфейс пула потоков
public ThreadPoolExecutor getPool()
java.lang.Object
public class ActiveMetricTableextends Objectimplements MetricTable, Delayed
Обновляемая таблица, содержащая записи об активных метриках (JabbixActiveMetric
)
и снабжённая периодом устаревания для всего содержимого таблицы в целом.
Период
обновления
и функция ActiveMetricTable.getDelay(TimeUnit)
интерйейса Delayed
могут быть использованы для установки времени устаревания таблицы и
контроля за ним. Поскольку информация об активных проверках
поставляется сервером, имеет смысл переодически обновлять её для того,
чтобы набор активных метрик не устарел.
Constructor Summary | |
---|---|
ActiveMetricTable(long refreshPeriod)
Создаёт таблицу с указанным периодом устаревания. |
Method Summary | |
---|---|
int
|
compareTo(ActiveMetricTable a)
Показывает, является ли данная таблица меньшей, равной или большей, чем указанная таблица. |
int
|
compareTo(Delayed o)
Показывает, является ли данная таблица меньшей, равной или большей, чем указанный объект класса Delayed .
|
long
|
getDelay(TimeUnit unit)
Возвращает оставшееся время, в течение которого содержимое данной очереди считается свежим. |
Date
|
getNextRefresh()
Возвращает врямя и дату, когда истекает время действия данной очереди. |
DelayQueue
|
getQueue()
Возвращает очередь с активными метриками, разположенными в соответствии с порядком их устаревания. |
long
|
getRefreshPeriod()
Возвращает значение периода обновления очереди. |
boolean
|
isExpired()
Показывает истекло ли время действия данной очереди. |
void
|
setRefreshPeriod(long refreshPeriod)
Устанавливает указанное значение в качестве периода обновления для всей таблицы в целом. |
void
|
updateMetric(JabbixActiveMetric freshMetric)
Добавляет указанную метрику в таблицу. |
Methods inherited from class java.lang.Object |
---|
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
|
Constructor Detail |
---|
public ActiveMetricTable(long refreshPeriod)
refreshPeriod
- период устаревания очереди
Method Detail |
---|
public void updateMetric(JabbixActiveMetric freshMetric)
updateMetric
in interface MetricTable
freshMetric
- метрика, которую нужно добавить
JabbixMetric.equals(Object)
public void setRefreshPeriod(long refreshPeriod)
nextRefresh
также обновляется в соответствии со старым значением периода и текущим
системным временем.
Если указанное значение равно нулю, то параметр nextRefresh
устанавливается в null
и периодичесткого обновления
набора записей таблицы не производится.
refreshPeriod
- период обновления в миллисекундах
public long getRefreshPeriod()
public Date getNextRefresh()
public boolean isExpired()
public long getDelay(TimeUnit unit)
getDelay
in interface Delayed
public int compareTo(Delayed o)
Delayed
.
Таблицы сравниваются посредством ActiveMetricTable.compareTo(ActiveMetricTable)
.
Если указанный объект не является таблицой, то в этом случае таблица
считается меньшей (устареваущей раньше), чем указанный объект.
compareTo
in
interface Comparable
o
- объект с которым нужно выполнить сравнение
public int compareTo(ActiveMetricTable a)
nextCheck
двух таблиц.
a
- другая таблица, с которой необходмо выполнить
сравнение
public DelayQueue getQueue()
java.lang.Object
public class AgentServerextends Objectimplements Runnable
Сервер-агент для системы мониторигна Zabbix. Содержит набор соответствий
между множеством объектов класса MetricAgent
и
множеством ключей метрик. Действующий сервер агентов -- это пассивный
компонент системы мониторигна. Он обслуживает по сети запросы на
получение значений метрик с использованием протокола Zabbix (т.е.
JabbixProtocol
).
Каждый ключ метрики -- это текстовая строка, которая может быть поставлена
во взаимно однозначное соответствие с агентом метрики (MetricAgent
).
Однако проекция нескольких ключей в один агент также возможна, при этом
делается предположение о том, что точка (.) является разделителем
компонентов. Для заданного мультикомпонентного ключа выбирается наиболее
длиное совпадение слева, если есть.
Входящие запросы обрабатываются по возможности асинхронно, с
использованием пула потоков (см. ThreadPoolExecutor
).
Constructor Summary | |
---|---|
AgentServer(ThreadPoolExecutor pool)
Создаёт новый экземпляр сервера агентов, использующий указанный пул потоков для обработки входящих запросов. |
Method Summary | |
---|---|
MetricAgent
|
getMetricAgent(String key)
Возвращает агент метрики зарегистрированный для указанного ключа метрики. |
Map
|
getMetricAgentMap()
Возвращает набор соответствий ключ метрики -> агент метрики. |
ThreadPoolExecutor
|
getPool()
Возвращает пул потоков, используемый для обработки входящих запросов. |
int
|
getPort()
Возвращает номер порта серверного сокета. |
void
|
run()
Производит запуск рабочего цикла. |
void
|
setMetricAgentMap(Map map) Устанавливает набор соответствий ключ метрики -> агент метрики. |
void
|
setPool(ThreadPoolExecutor pool)
Установить пул потоков для обработки входящих запросов. |
void
|
setPort(int port)
Устанавливает номер порта серверного сокета. |
Methods inherited from class java.lang.Object |
---|
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
|
Constructor Detail |
---|
public AgentServer(ThreadPoolExecutor pool)
pool
- интерфейс пула потоков
Method Detail |
---|
public int getPort()
public void setPort(int port)
port
- номер порта, на котором ожидать подключения
public void run()
менеджер безопасности
не препятствует этому, добавляет новый запрос на выборку метрики (JabbixRequest
) в
очередь задач (см. AgentServer.getPool()
)
и начинает новую итерацию.
Если очередь задач является блокируемой, новая итерация может быть заблокирована до тех пор, пока некоторое количество предыдущих задач не будет выполнено.
run
in interface
Runnable
public Map getMetricAgentMap()
public void setMetricAgentMap(Map map)
map
- набор пар (ключ метрики, агент метрики)
public MetricAgent getMetricAgent(String key)
MetricAgent
).
Однако проекция нескольких ключей в один агент также возможна, при этом
делается предположение о том, что точка (.) является разделителем
компонентов. Для заданного мультикомпонентного ключа выбирается наиболее
длиное совпадение слева, если есть.
key
- имя метрики
public void setPool(ThreadPoolExecutor pool)
pool
- интерфейс пула потоков
public ThreadPoolExecutor getPool()
public interface ConnectionPredicate
Предикат для определения разрешения на установку соединения от или к
некоторому узлу и порту, предназначенный для использования совместно с JabbixSecurityManager
.
Method Summary | |
---|---|
boolean
|
isAllowed(String host, int port)
Указывает является ли соединение с определёнными параметрами допустимым. |
Method Detail |
---|
boolean isAllowed(String host, int port)
host
- узел от которого или к которому выполняется
соединение
port
- порт от которого или к которому выполняется
соединение
java.lang.Object
public class JabbixActiveMetricextends JabbixMetricimplements Delayed
Метрика, снабжённая дополнительной информацией, позволяющей использовать её для активных проверок.
Constructor Summary | |
---|---|
JabbixActiveMetric(String key, Class type, Object value, long period,
boolean active) Создаёт новый экземпляр активной метрики с указанными параметрами. |
Method Summary | |
---|---|
int
|
compareTo(Delayed o)
Указывает, яляется ли данная метрика меньшей, равной или большей указанного объекта класса Delayed .
|
int
|
compareTo(JabbixActiveMetric m)
Определяет, является ли данная метрика меньшей, равной или большей, по сравнению с указанной метрикой. |
long
|
getDelay(TimeUnit unit)
Возвращает оставшееся до ближайшего обновления метрики время. |
Date
|
getNextCheck()
Возвращает время и дату, когда значение данной метрики должно быть обновлено (на целевом сервере). |
long
|
getPeriod()
Возвращает значение периода обновления (в миллисекундах). |
Date
|
getUpdated()
Указывает когда была (и была ли) обновлена данная метрика. |
boolean
|
isActive()
Указывает, является ли данная метрика "активной". |
void
|
setActive(boolean active)
Устанавливает статус "активности" метрики. |
Methods inherited from class org.altlinux.jabbix.JabbixMetric |
---|
equals,
getKey,
getValue,
getValueType,
toString,
updateValue
|
Methods inherited from class java.lang.Object |
---|
getClass, hashCode, notify, notifyAll, wait, wait, wait
|
Constructor Detail |
---|
public JabbixActiveMetric(String key, Class type, Object value, long period, boolean active)
key
- имя метрики
period
- период обновления в миллисекундах
active
- статус обратного отсчёта
Method Detail |
---|
public boolean isActive()
JabbixActiveMetric.getNextCheck()
активной метрики не равен null
.
public void setActive(boolean active)
nextCheck
устанавливается сумма текущего времени и указанного для данной метрики
периода (JabbixActiveMetric.getPeriod()
).
Если статус меняется с активного на неактивный, то в качестве значения
параметра nextCheck
устанавливается null
.
Иначе значение параметра nextCheck
не изменяется.
active
- значение статуса, которое нужно установить
public Date getNextCheck()
public long getPeriod()
public int compareTo(JabbixActiveMetric m)
nextCheck
.
Иначе активная метрика всегда считается меньшей не активной (поэтому не
активные метрики всегда находятся в хвосте очереди).
m
- активная метрика для сравнения
ActiveMetricTable
public long getDelay(TimeUnit unit)
nextCheck
не установлен), тогда возвращается максимальное длинное целое число Long.MAX_VALUE
.
Иначе возвращается разница между текущим времением и nextCheck
,
выраженная в указанных единицах.
getDelay
in interface Delayed
public int compareTo(Delayed o)
Delayed
.
Активные метрики сравниваются посредством функции JabbixActiveMetric.compareTo(JabbixActiveMetric)
.
Если указанный объект не ясляется активной метрикой, то в этом случае
данная метрика считается меньшей (более ранней) чем объект.
compareTo
in
interface Comparable
o
- объект с которым нужно выполнить сравнение
public Date getUpdated()
null
, если значение метрики ещё не было обновлено
JabbixMetric.updateValue(java.lang.Object)
java.lang.Object
public class JabbixExceptionextends Exception
Исключение, указывающее на общий характер неожиданной ситуации, возникшей во время работы программы, основанной на Jabbix.
Field Summary | |
---|---|
static String
|
ERROR_TAG
Текстовая строка, представляющая код ошибки, в соответствии с протоколом Zabbix. |
Constructor Summary | |
---|---|
JabbixException(String msg)
Создаёт объект исключения с указанным сообщением. |
|
JabbixException(Throwable t)
Создаёт объект исключения с указанной причиной. |
Method Summary | |
---|---|
String
|
getErrorTag()
Возвращает текстовую строку, представляющую код ошибки в соответствии с протоколом Zabbix. |
Methods inherited from class java.lang.Throwable |
---|
fillInStackTrace, getCause, getLocalizedMessage, getMessage, getStackTrace, initCause, printStackTrace, printStackTrace, printStackTrace, setStackTrace, toString
|
Methods inherited from class java.lang.Object |
---|
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
|
Field Detail |
---|
public static String ERROR_TAG
Constructor Detail |
---|
public JabbixException(String msg)
msg
- комментарий к исключению
public JabbixException(Throwable t)
t
- причина, вызвавшая исключение
Method Detail |
---|
public String getErrorTag()
java.lang.Object
public class JabbixJSONProtocolextends 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 |
---|
public static String ZBX_PROTO_TAG_CLOCK
JabbixJSONProtocol.sendMetricList(JabbixWriter,
String, Collection)
, JabbixJSONProtocol.ZBX_PROTO_TAG_KEY
public static String ZBX_PROTO_TAG_DATA
JabbixJSONProtocol.receiveActiveCheckList(JabbixReader)
,
JabbixJSONProtocol.sendMetricList(JabbixWriter,
String, Collection)
public static String ZBX_PROTO_TAG_REGEXP
public static String ZBX_PROTO_TAG_DELAY
JabbixJSONProtocol.receiveActiveCheckList(JabbixReader)
,
JabbixJSONProtocol.ZBX_PROTO_TAG_KEY
,
JabbixActiveMetric
public static String ZBX_PROTO_TAG_DRULE
public static String ZBX_PROTO_TAG_DCHECK
public static String ZBX_PROTO_TAG_HOST
JabbixJSONProtocol.requestActiveCheckList(JabbixWriter,
String)
, JabbixJSONProtocol.sendMetricList(JabbixWriter,
String, Collection)
public static String ZBX_PROTO_TAG_INFO
JabbixJSONProtocol.receiveMetricListResponse(JabbixReader)
,
JabbixJSONProtocol.requestActiveCheckList(JabbixWriter,
String)
public static String ZBX_PROTO_TAG_IP
public static String ZBX_PROTO_TAG_KEY
JabbixJSONProtocol.receiveActiveCheckList(JabbixReader)
,
JabbixJSONProtocol.sendMetricList(JabbixWriter,
String, Collection)
, JabbixJSONProtocol.ZBX_PROTO_TAG_DELAY
,
JabbixJSONProtocol.ZBX_PROTO_TAG_CLOCK
,
JabbixJSONProtocol.ZBX_PROTO_TAG_VALUE
,
JabbixActiveMetric
public static String ZBX_PROTO_TAG_KEY_ORIG
public static String ZBX_PROTO_TAG_LOGLASTSIZE
public static String ZBX_PROTO_TAG_MTIME
public static String ZBX_PROTO_TAG_LOGTIMESTAMP
public static String ZBX_PROTO_TAG_LOGSOURCE
public static String ZBX_PROTO_TAG_LOGSEVERITY
public static String ZBX_PROTO_TAG_LOGEVENTID
public static String ZBX_PROTO_TAG_PORT
public static String ZBX_PROTO_TAG_PROXY
public static String ZBX_PROTO_TAG_REQUEST
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
public static String ZBX_PROTO_TAG_RESPONSE
JabbixJSONProtocol.ZBX_PROTO_TAG_REQUEST
,
JabbixJSONProtocol.receiveActiveCheckList(JabbixReader)
,
JabbixJSONProtocol.receiveMetricListResponse(JabbixReader)
,
JabbixJSONProtocol.ZBX_PROTO_VALUE_SUCCESS
,
JabbixJSONProtocol.ZBX_PROTO_VALUE_FAILED
public static String ZBX_PROTO_TAG_STATUS
public static String ZBX_PROTO_TAG_TYPE
public static String ZBX_PROTO_TAG_VALUE
JabbixJSONProtocol.sendMetricList(JabbixWriter,
String, Collection)
, JabbixJSONProtocol.ZBX_PROTO_TAG_KEY
,
JabbixActiveMetric
public static String ZBX_PROTO_TAG_SCRIPTID
public static String ZBX_PROTO_TAG_HOSTID
public static String ZBX_PROTO_TAG_NODEID
public static String ZBX_PROTO_TAG_AVAILABLE
public static String ZBX_PROTO_TAG_SNMP_AVAILABLE
public static String ZBX_PROTO_TAG_IPMI_AVAILABLE
public static String ZBX_PROTO_TAG_ERROR
public static String ZBX_PROTO_TAG_SNMP_ERROR
public static String ZBX_PROTO_TAG_IPMI_ERROR
public static String ZBX_PROTO_VALUE_FAILED
JabbixJSONProtocol.ZBX_PROTO_TAG_RESPONSE
,
JabbixJSONProtocol.receiveActiveCheckList(JabbixReader)
,
JabbixJSONProtocol.receiveMetricListResponse(JabbixReader)
public static String ZBX_PROTO_VALUE_SUCCESS
JabbixJSONProtocol.ZBX_PROTO_TAG_RESPONSE
,
JabbixJSONProtocol.receiveActiveCheckList(JabbixReader)
,
JabbixJSONProtocol.receiveMetricListResponse(JabbixReader)
public static String ZBX_PROTO_VALUE_GET_ACTIVE_CHECKS
JabbixActiveMetric
),
в которых заинтересован сервер.
JabbixJSONProtocol.ZBX_PROTO_TAG_REQUEST
,
JabbixJSONProtocol.requestActiveCheckList(JabbixWriter,
String)
public static String ZBX_PROTO_VALUE_PROXY_CONFIG
public static String ZBX_PROTO_VALUE_PROXY_HEARTBEAT
public static String ZBX_PROTO_VALUE_DISCOVERY_DATA
public static String ZBX_PROTO_VALUE_HOST_AVAILABILITY
public static String ZBX_PROTO_VALUE_HISTORY_DATA
public static String ZBX_PROTO_VALUE_AUTO_REGISTRATION_DATA
public static String ZBX_PROTO_VALUE_SENDER_DATA
public static String ZBX_PROTO_VALUE_AGENT_DATA
ActiveAgent
).
JabbixJSONProtocol.ZBX_PROTO_TAG_REQUEST
,
JabbixJSONProtocol.sendMetricList(JabbixWriter,
String, Collection)
Constructor Detail |
---|
public JabbixJSONProtocol()
Method Detail |
---|
public static void requestActiveCheckList(JabbixWriter writer, String hostName) throws IOException
JabbixJSONProtocol.receiveActiveCheckList(JabbixReader)
.
Сообщение JSON следующей структуры составляется и отправляется на сервер:
{"request": "active checks", "host": "<имя узла>"}
Параметр имя узла
(host) соответствует ожидаемому
сервером имени локального узла (см. ZabbixClient.getHostName()
).
writer
- объект, инкапсулирующий процесс записи в сокет
hostName
- имя локального узла
IOException
- если
во время отправки запроса произошло исключение ввода-вывода
JabbixJSONProtocol.ZBX_PROTO_TAG_REQUEST
,
JabbixJSONProtocol.ZBX_PROTO_VALUE_GET_ACTIVE_CHECKS
,
JabbixJSONProtocol.ZBX_PROTO_TAG_HOST
public static Collection receiveActiveCheckList(JabbixReader reader) throws IOException, JabbixException, JabbixProtocolException
Ожидается сообщение JSON следующей формы (структуры):
{ "response": "success", "data": [ { "key": "<ключ метрики>", "delay": "<период обновления>" }, { "key": "<ключ метрики>", "delay": "<период обновления>" }, ... ] }
Параметр ключ метрики
(key) для каждой записи определяет
имя метрики (см. JabbixActiveMetric
)
значение которой сервер ожидает получать периодически.
Период обновления значения метрики определятся соответствующим
параметром период обновления
.
В том случае, если сервер не в состоянии отправить запрошенный список
активных проверок, он отвечает сообщением с указанием статуса
неудачной операции и необязательным комметрарием (см. JabbixJSONProtocol.receiveMetricListResponse(JabbixReader)
).
reader
- объект, инкапсулирующий процесс чтения из
сокета
JabbixActiveMetric
)
представляющий список активных проверок
IOException
- если
во время приёма ответа возникло исключение ввода-вывода
JabbixException
-
если сервер отправил статус неудачной операции
JabbixProtocolException
- если протокол был нарушен (т.е. было принято неожиданное значение)
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
public static void sendMetricList(JabbixWriter writer, String hostName, Collection metrics) throws IOException
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)
используется для этой цели.
writer
- объект, инкапсулирующий процесс записи в сокет
hostName
- имя локального узла
metrics
- набор метрик
IOException
- если
во время отправки данных возникло исключение ввода-вывода
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
public static String receiveMetricListResponse(JabbixReader reader) throws IOException, JabbixException, JabbixProtocolException
Ожидается сообщение JSON следующей формы (структуры):
{ "response": "<статус>", "info": "<комментарий>" }
В случае успеха параметр статус
(response) указывается
как success
. А параметр комментарий
(info)
содержит комментарий к выполненной обработке данных в понятной для
человека форме.
В случае ошибки статус может быть установлен как failed
или в любое другое значение (отображающее неудачу). Переметр комментарий
может присутствовать или быть опущен.
reader
- объект, инкапсулирующий процесс чтения из
сокета
IOException
- если
во время приёма ответа возникло исключение ввода-вывода
JabbixException
-
если сервер отправил статус неудачной операции
JabbixProtocolException
- если протокол был нарушен (т.е. было принято неожиданное значение)
JabbixJSONProtocol.ZBX_PROTO_TAG_RESPONSE
,
JabbixJSONProtocol.ZBX_PROTO_VALUE_SUCCESS
,
JabbixJSONProtocol.ZBX_PROTO_TAG_INFO
,
JabbixJSONProtocol.ZBX_PROTO_VALUE_FAILED
java.lang.Object
public class JabbixMetricAgentextends Objectimplements MetricAgent
Реализация интерфейса MetricAgent
для
получения некоторой информации о работе прогамммы, основанной на Jabbix. В
настоящее время следующие параметры могут быть считаны: "jabbix.agent.freeMemory"
,
"jabbix.agent.maxMemory"
and "jabbix.agent.totalMemory"
.
Эти параметры представляют соответствующие параметры рабочего окружения
виртуальной машины Java.
Constructor Summary | |
---|---|
JabbixMetricAgent()
Создаёт новый экземпляр агента. |
Method Summary | |
---|---|
JabbixMetric
|
getMetric(String key)
Возвращает метрику, представляющую значение параметра основанной на Jabbix программы с соответствующим ключом. |
Methods inherited from class java.lang.Object |
---|
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
|
Constructor Detail |
---|
public JabbixMetricAgent()
Method Detail |
---|
public JabbixMetric getMetric(String key) throws JabbixException, NoSuchMetricException
getMetric
in interface MetricAgent
key
- ключ метрики -- имя метрики
JabbixMetric
содержащий текущее значение
метрики
NoSuchMetricException
- если метрики с указанным ключом не было обнаружено
JabbixException
- в
случае возникновения любой другой ошибки
java.lang.Object
public class JabbixMetricextends Object
Метрика -- именованное значение, представляющее какой-либо параметр системы.
Constructor Summary | |
---|---|
JabbixMetric(String key, Class type, Object value)
Строит новую метрику с указанными именем и типом значения. |
Method Summary | |
---|---|
boolean
|
equals(Object o)
Указывает является ли некоторый другой объект "равным" метрики. |
String
|
getKey()
Возвращает имя метрики. |
Object
|
getValue()
Возвращает значение метрики. |
Class
|
getValueType()
Возвращает класс типа значения метрики. |
String
|
toString()
Возвращает значения метрики в виде текстовой строки |
void
|
updateValue(Object value)
Обновляет значение метрики. |
Methods inherited from class java.lang.Object |
---|
getClass, hashCode, notify, notifyAll, wait, wait, wait
|
Constructor Detail |
---|
public JabbixMetric(String key, Class type, Object value)
key
- имя метрики
value
- значение метрики
Method Detail |
---|
public String getKey()
public Object getValue()
public void updateValue(Object value) throws ClassCastException
value
- новое значение
ClassCastException
- если тип данных нового значения не совместим с типом значения
метрики
MetricTable.updateMetric(JabbixMetric)
public String toString()
toString
in class
Object
public boolean equals(Object o)
equals
in class
Object
public Class getValueType()
java.lang.Object
public class JabbixProtocolExceptionextends JabbixException
Исключение, указывающее на не предусмотренную протоколом Jabbix ситуацию, возникшую в работающей программе, основанной на Jabbix.
Field Summary | |
---|---|
static String
|
ERROR_TAG
Текстовая строка, представляющая код ошибки, в соответствии с протоколом Zabbix. |
Constructor Summary | |
---|---|
JabbixProtocolException(String msg)
Создаёт объект исключения с указанным сообщением. |
|
JabbixProtocolException(Throwable t)
Создаёт объект исключения с указанной причиной. |
Method Summary | |
---|---|
String
|
getErrorTag()
Возвращает текстовую строку, представляющую код ошибки в соответствии с протоколом Zabbix. |
Methods inherited from class java.lang.Throwable |
---|
fillInStackTrace, getCause, getLocalizedMessage, getMessage, getStackTrace, initCause, printStackTrace, printStackTrace, printStackTrace, setStackTrace, toString
|
Methods inherited from class java.lang.Object |
---|
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
|
Field Detail |
---|
public static String ERROR_TAG
Constructor Detail |
---|
public JabbixProtocolException(String msg)
msg
- комментарий к исключению
public JabbixProtocolException(Throwable t)
t
- причина, вызвавшая исключение
Method Detail |
---|
public String getErrorTag()
getErrorTag
in class JabbixException
java.lang.Object
public class JabbixProtocolextends Object
Константы и функции для протокола Zabbix-агента.
Базовый протокол Zabbix для связи между агентом и сервером представляет собой разновидность простого бинарного протокола и используется для передачи произвольных порций данных между Zabbix-совместимым агентом (например основанной на Jabbix-программой) и Zabbix-сервером.
Каждая такая передача называется сообщением. Каждое сообщение имеет следующую форму (структуру):
| 4 Байта | 1 Байт | 8 Байтов | ДЛИНА Байтов | ЗАГОЛОВОК ВЕРСИЯ ДЛИНА ДАННЫЕ СООБЩЕНИЯ
Поле ЗАГОЛОВОК
это 4-байтовая последовательность 4 символов
ASCII, в настоящее время определённая как ZBXD
. Следующее
поле ВЕРСИЯ
шириной в один байт определяет версию протокола.
В настоящее время поддерживаемая версия протокола равняется 1 (т.е. 01h).
Следующее 8-байтовое поле ДЛИНА
содержит 64-битное целое
число (младший байт первым) определяющее длину следующей за ним части
ДАННЫЕ СООБЩЕНИЯ
. Все числовые данные также представляются в
виде с младшим байтом в начале.
Для целей совместимости и для того, чтобы упростить программы-агенты, используется и другой протокол, основанный на разделителях. В этом протоколе сообщения не имеют предустановленной структуры. Вместо этого, один из символов-разделителей используется для обозначения конца каждого сообщения. Поскольку перевод строки (0Ah) также входит в набор разделителей, простые текстовые сообщения могут быть переданы как есть.
Основное использование передачи простых текстовых сообщений посредством неструктурированного протокола ведётся при взаимодействии Zabbix-сервера с пассивным агентом: сервер отправляет имя метрикри пассивному агенту как простой текст, без всякого заголовка. Однако агент не ограничен в ответе протым текстом и может использовать структурированную версию протокола если это удобно.
Кроме того, неструктурированные ответы могут отправляться сервером Zabbix в некоторых случаях.
AgentServer
Field Summary | |
---|---|
static int
|
AGENT_PORT
Номер порта агента по умолчанию (10050). |
static String
|
HEADER
Четырёхбуквенный заголовок протокола. |
static String
|
SEPARATORS
Набор разделителей сообщений. |
static int
|
SERVER_PORT
Порт Zabbix-сервера по умолчанию (10051). |
static String
|
VERSION
Версия протокола (один байт). |
Constructor Summary | |
---|---|
JabbixProtocol()
|
Method Summary | |
---|---|
static JabbixReader
|
getReader(InputStream in)
Возвращает объект, инкапсулирующий процесс чтения из указанного канала. |
static JabbixWriter
|
getWriter(OutputStream out)
Возвращает объект, инкапсулирующий процесс записи в указанный канал. |
static boolean
|
isSeparator(char c)
Определяет, является ли указанный символ разделителем сообщений. |
static String
|
removeSeparators(String str)
Возвращает указанную строку, из которой были удалены все символы-разделители. |
Methods inherited from class java.lang.Object |
---|
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
|
Field Detail |
---|
public static String HEADER
Для указания на Zabbix используется последовательность ZBXD
.
public static String VERSION
В настоящее время поддерживается протокол версии 1 (01h).
public static String SEPARATORS
В том случае, если длина сообщения не указана явно в заголовке, конец сообщения определяется посредством символа разделителя. Данная строка содержит последовательность символов этой категории.
В настоящее время символами-разделителями являются:
public static int AGENT_PORT
public static int SERVER_PORT
Constructor Detail |
---|
public JabbixProtocol()
Method Detail |
---|
public static JabbixReader getReader(InputStream in)
in
- входной канал для чтения
public static JabbixWriter getWriter(OutputStream out)
out
- выходной канал для записи
public static boolean isSeparator(char c)
c
- символ для проверки
JabbixProtocol.SEPARATORS
public static String removeSeparators(String str)
str
- строка
java.lang.Object
public class JabbixReaderextends Object
Объект, инкапсулирующий процесс чтения из канала, и реализующий базовый протокол Jabbix.
Constructor Summary | |
---|---|
JabbixReader(InputStream in)
Создаёт объект, инкапсулирующий процесс чтения из указанного входного канала. |
Method Summary | |
---|---|
String
|
readAll()
Читает из канала все имеющиеся данные |
String
|
readMessage()
Читает сообщение из входного канала. |
String
|
readMessage(boolean untilEOF)
Читает сообщение из входного канала. |
Methods inherited from class java.lang.Object |
---|
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
|
Constructor Detail |
---|
public JabbixReader(InputStream in)
in
- канал для чтения
Method Detail |
---|
public String readMessage(boolean untilEOF) throws IOException, JabbixProtocolException
JabbixProtocol.isSeparator(char)
).
Если указан флаг untilEOF
, то в этом случае все имеющиеся в
канале данные будут прочитаны и возвращены как единое сообщение.
untilEOF
- флаг, уазывающий читать все имеющиеся данные
IOException
- если
во время операции чтения возникло исключение ввода-вывода
JabbixProtocolException
- если протокол был нарушен (т.е. было принято неожиданное значение)
JabbixProtocol.HEADER
public String readMessage() throws IOException, JabbixProtocolException
JabbixProtocol.isSeparator(char)
).
IOException
- если
во время операции чтения возникло исключение ввода-вывода
JabbixProtocolException
- если протокол был нарушен (т.е. было принято неожиданное значение)
JabbixReader.readMessage(boolean)
public String readAll() throws IOException, JabbixProtocolException
IOException
- если
во время операции чтения возникло исключение ввода-вывода
JabbixProtocolException
- если протокол был нарушен (т.е. было принято неожиданное значение)
JabbixReader.readMessage(boolean)
java.lang.Object
public class JabbixRequestextends Objectimplements Runnable
Объект-задача, который используется для асинхронного получения значения метрики.
Constructor Summary | |
---|---|
JabbixRequest(AgentServer srv, Socket sock)
Создаёт объект-задачу для выполнения запроса с указанными параметрами. |
Method Summary | |
---|---|
String
|
getCommand()
Возвращает команду, которая была установлена и должна быть обработана. |
boolean
|
isParsed()
Указывает, был ли запрос интерпретирован. |
void
|
run()
Запускает обработку запроса. |
void
|
setCommand(String cmd)
Устанавливает команду, которая должна быть обработана в рамках данного запроса. |
Methods inherited from class java.lang.Object |
---|
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
|
Constructor Detail |
---|
public JabbixRequest(AgentServer srv, Socket sock)
srv
- сервер агентов метрик, используемый для
получения подходящего для полученного ключа агента
sock
- подключённый сокет для приёма данный запроса и
для отправки полученного значения метрики
Method Detail |
---|
public boolean isParsed()
JabbixRequest.run()
public String getCommand()
public void setCommand(String cmd)
cmd
- команда
JabbixRequest.run()
public void run()
parsed
и command
.
После этого команда обрабатывается. Если команда была определена как ключ
метрики, тогда у сервера агентов запрашивается агент метрики
из которого извлекается свежее значение метрики. Новое значение метрики
отправляется запрашивающей стороне в виде ответного сообщения.
run
in interface
Runnable
RuntimeException
- если во время процесса обработки запроса возникло исключение
JabbixRequest.isParsed()
,
JabbixRequest.getCommand()
java.lang.Object
public class JabbixSecurityManagerextends SecurityManager
Реализация интерфейса SecurityManager
используемого для управления доступом к основанной на Jabbix программе и
от неё. Для проверки разрешений используется два набора предикатов.
Constructor Summary | |
---|---|
JabbixSecurityManager()
Создаёт экземпляр данного менеджера безопасности. |
Method Summary | |
---|---|
void
|
checkAccept(String host, int port)
Проверяет разрешение на приём соединения от указанного узла и порта используя набор предикатов. |
void
|
checkConnect(String host, int port)
Проверяет разрешение на установку соединения с указанным узлом и портом используя набор предикатов. |
Collection
|
getConnectionPredicates()
Возвращает набор предикатов, определяющих разрешение на соединение с удалёнными узлами. |
Collection
|
getListenPredicates()
Возвращает набор предикатов, определяющих разрешение на приём соединений от удалённых узлов. |
void
|
setConnectionPredicates(Collection connPreds)
Устанавливает набор предикатов, определяющих разрешение на соединение с удалёнными узлами. |
void
|
setListenPredicates(Collection listenPreds)
Устанавливает набор предикатов, определяющих разрашение на приём соединений от удалённых узлов. |
Methods inherited from class java.lang.Object |
---|
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
|
Constructor Detail |
---|
public JabbixSecurityManager()
Method Detail |
---|
public void checkAccept(String host, int port)
checkAccept
in
class SecurityManager
public void checkConnect(String host, int port)
checkConnect
in
class SecurityManager
public Collection getConnectionPredicates()
public void setConnectionPredicates(Collection connPreds)
connPreds
- набор предикатов для проверки исходящих
соединений
public void setListenPredicates(Collection listenPreds)
listenPreds
- набор предикатов для проверки входящих
соединений
public Collection getListenPredicates()
java.lang.Object
public class JabbixWriterextends Object
Объект, инкапсулирующий процесс записи в канал и реализующий базовый протокол Jabbix.
Для отправки сообщения использутся структурированный протокол Zabbix (см.
JabbixProtocol
).
JabbixReader
Constructor Summary | |
---|---|
JabbixWriter(OutputStream out)
Создаёт обект, инкапсулирующий просесс записи в указанный канал. |
Method Summary | |
---|---|
void
|
writeMessage(String msg)
Отправляет указанное сообщение с использованием протокола Zabbix. |
Methods inherited from class java.lang.Object |
---|
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
|
Constructor Detail |
---|
public JabbixWriter(OutputStream out)
out
- канал для записи
Method Detail |
---|
public void writeMessage(String msg) throws IOException
msg
- сообщение для отправки
IOException
- если
во время операции чтения возникло исключение ввода-вывода
JabbixProtocol.HEADER
,
JabbixReader.readMessage(boolean)
public interface MetricAgent
Агент метрики предоставляет функцию для чтения текущего значения метрики.
Method Summary | |
---|---|
JabbixMetric
|
getMetric(String key)
Возвращает объект класса JabbixMetric ,
содержащий текущее значение метрики с указанным ключём.
|
Method Detail |
---|
JabbixMetric getMetric(String key) throws JabbixException, NoSuchMetricException
JabbixMetric
,
содержащий текущее значение метрики с указанным ключём.
key
- ключ метрики -- имя метрики
JabbixMetric
содержащий текущее значение
метрики
NoSuchMetricException
- если метрики с указанным ключом не было обнаружено
JabbixException
- в
случае возникновения любой другой ошибки
java.lang.Object
public class MetricRequestextends Objectimplements Runnable
Задача, инкапсулирующая процесс получения значения метрики с использованием агента метрики, как синхронно, так и асинхронно.
Constructor Summary | |
---|---|
MetricRequest(AgentServer agentServer,
JabbixMetric metric, MetricTable table)
Создаёт новую задачу-запрос с указанными параметрами. |
Method Summary | |
---|---|
JabbixMetric
|
getFreshMetric()
Возвращает новый экземпляр метрики, содержащий свежее значние для указанной во время создания зспроса метрики |
void
|
run()
Используется для асинхронного получения и обновления значения метрики. |
void
|
setAgentServer(AgentServer agentServer)
Устанавливает сервер агентов метрик для выполнения запросов на получение новых значений. |
void
|
updateMetric(JabbixMetric metric)
Обновляет значение указанной метрики выполняя запрос к подходящему для этого агенту метрики. |
Methods inherited from class java.lang.Object |
---|
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
|
Constructor Detail |
---|
public MetricRequest(AgentServer agentServer, JabbixMetric metric, MetricTable table)
agentServer
- сервер агентов метрик используемый
для получения подходящего агента для запрошенной метрики
metric
- метрика, для которой нужно получить свежее
значение
table
- необязательная для указания таблица метрик в
которую нужно передать обновлённую метрику
Method Detail |
---|
public void run()
run
in interface
Runnable
public JabbixMetric getFreshMetric() throws JabbixException, NoSuchMetricException
JabbixException
- в
ответ на исключительную ситуацию во время получения значения
NoSuchMetricException
- если агент метрики не был найден для указанной метрики
public void updateMetric(JabbixMetric metric) throws JabbixException, NoSuchMetricException
metric
- метрика для обновления
JabbixException
- в
ответ на исключительную ситуацию во время получения значения
NoSuchMetricException
- если агент метрики не был найден для указанной метрики
public void setAgentServer(AgentServer agentServer)
agentServer
- сервер агентов метрик
public interface MetricTable
Обновляемая таблица, содержащая записи класса JabbixActiveMetric
.
Method Summary | |
---|---|
void
|
updateMetric(JabbixMetric freshMetric)
Обновляет значение той записи таблицы, которая равна (соответствует) указанной метрике, значением последней. |
Method Detail |
---|
void updateMetric(JabbixMetric freshMetric)
freshMetric
- метрика-образец с новым значением
JabbixMetric.equals(Object)
java.lang.Object
public class NoSuchMetricExceptionextends JabbixException
Исключение, указывающее что агент для получения значения указанной метрики не был найден.
Field Summary | |
---|---|
static String
|
ERROR_TAG
Текстовая строка, представляющая код ошибки, в соответствии с протоколом Zabbix. |
Constructor Summary | |
---|---|
NoSuchMetricException(String msg)
Создаёт объект исключения с указанным сообщением. |
Method Summary | |
---|---|
String
|
getErrorTag()
Возвращает текстовую строку, представляющую код ошибки в соответствии с протоколом Zabbix. |
Methods inherited from class java.lang.Throwable |
---|
fillInStackTrace, getCause, getLocalizedMessage, getMessage, getStackTrace, initCause, printStackTrace, printStackTrace, printStackTrace, setStackTrace, toString
|
Methods inherited from class java.lang.Object |
---|
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
|
Field Detail |
---|
public static String ERROR_TAG
Constructor Detail |
---|
public NoSuchMetricException(String msg)
msg
- комментарий к исключению
Method Detail |
---|
public String getErrorTag()
getErrorTag
in class JabbixException
java.lang.Object
public class ResponseQueueextends ZabbixClientimplements MetricTable, Runnable
Клиент Zabbix-сервера, который отправляет значения метрик на сервер, когда
истекает период обновления какой-либо метрики. Содержит обновляемую
очередь записей класса JabbixActiveMetric
,
которые отправляются на сервер и ссылку на другую очередь, в которую
возвращаются отправленные метрики.
Когда активная метрика добавляется к очереди счётчик её устаревания сбрасывается. По этой причине, отправка значения на сервер производится в том случае, когда истекает один полный период её устаревания, или когда это происходит для какой-либо другой метрики.
Constructor Summary | |
---|---|
ResponseQueue(InetSocketAddress addr,
MetricTable returnTable)
Создаёт очередь с указанными параметрами. |
Method Summary | |
---|---|
MetricTable
|
getReturnTable()
Возвращает очередь, в которую помещаются отправленные метрики |
boolean
|
isTerminated()
Возвращает признак завершения цикла ожидания-отправки. |
void
|
run()
Запускает цикл ожидания-отправки. |
void
|
terminate()
Завершает цикл ожидания-отправки для данной очереди. |
void
|
updateMetric(JabbixActiveMetric freshMetric)
Добавляет указанную метрику в очередь. |
Methods inherited from class org.altlinux.jabbix.ZabbixClient |
---|
getAddress,
getHostName,
setAddress,
setAddress,
setAddress,
setAddress,
setHostName
|
Methods inherited from class java.lang.Object |
---|
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
|
Constructor Detail |
---|
public ResponseQueue(InetSocketAddress addr, MetricTable returnTable)
addr
- адрес сокета удалённого сервера
returnTable
- таблица, в которую возвращаются
отправленные записи
Method Detail |
---|
public void run()
ResponseQueue.terminate()
,
процесс ожидает устаревания любой метрики в очереди, а затем отправляет
всё содержимое очереди в виде запроса "agent data". После этого набор
отправленных метрик добавляется в возвратную таблицу.
run
in interface
Runnable
JabbixJSONProtocol.sendMetricList(JabbixWriter,
String, Collection)
, ResponseQueue.getReturnTable()
public void updateMetric(JabbixActiveMetric freshMetric)
JabbixActiveMetric.setActive(boolean)
)
выключается и включается. Данная операция приводит к тому, что счётчик
устаревания метрики сбрасывается.
updateMetric
in interface MetricTable
freshMetric
- метрика, которую нужно добавить
JabbixMetric.equals(Object)
public MetricTable getReturnTable()
public boolean isTerminated()
ResponseQueue.run()
public void terminate()
ResponseQueue.run()
java.lang.Object
public class UnknownCommandExceptionextends JabbixException
Исключение, указывающее на то, что переданная команда не изместна агенту.
Field Summary | |
---|---|
static String
|
ERROR_TAG
Текстовая строка, представляющая код ошибки, в соответствии с протоколом Zabbix. |
Constructor Summary | |
---|---|
UnknownCommandException(String msg)
Создаёт объект исключения с указанным сообщением. |
Method Summary | |
---|---|
String
|
getErrorTag()
Возвращает текстовую строку, представляющую код ошибки в соответствии с протоколом Zabbix. |
Methods inherited from class java.lang.Throwable |
---|
fillInStackTrace, getCause, getLocalizedMessage, getMessage, getStackTrace, initCause, printStackTrace, printStackTrace, printStackTrace, setStackTrace, toString
|
Methods inherited from class java.lang.Object |
---|
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
|
Field Detail |
---|
public static String ERROR_TAG
Constructor Detail |
---|
public UnknownCommandException(String msg)
msg
- комментарий к исключению
Method Detail |
---|
public String getErrorTag()
getErrorTag
in class JabbixException
java.lang.Object
public class WhitelistPredicateextends Objectimplements ConnectionPredicate
Реализует предикат соединения, использующий регулярное выражение для проверки имени узла.
JabbixSecurityManager
Constructor Summary | |
---|---|
WhitelistPredicate(String addressPattern)
Создаёт новый экземпляр предиката на основе указанного шаблона. |
Method Summary | |
---|---|
boolean
|
isAllowed(String host, int port)
Проверяет, совпадает ли указанное имя узла с установленным шаблоном. |
Methods inherited from class java.lang.Object |
---|
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
|
Constructor Detail |
---|
public WhitelistPredicate(String addressPattern)
addressPattern
- регулярное выражение для проверки
имени узлов
Method Detail |
---|
public boolean isAllowed(String host, int port)
isAllowed
in interface ConnectionPredicate
host
- узел от которого или к которому выполняется
соединение
port
- порт от которого или к которому выполняется
соединение
java.lang.Object
public abstract class ZabbixClientextends Object
Базовый класс для всех клиентов Zabbix-сервера. Реализует полезные функции для соединения с сервером Zabbix.
Constructor Summary | |
---|---|
ZabbixClient()
Создаёт экземпляр клиента Zabbix-сервера. |
Method Summary | |
---|---|
InetSocketAddress
|
getAddress()
Возвращает установленный адрес Zabbix-сервера. |
String
|
getHostName()
Возвращает установленное имя локального узла. |
void
|
setAddress(byte[] ipBytes)
Устанавливает адрес серверного сокета используя указанный IP-адрес и порт Zabbix-сервера по умолчанию. |
void
|
setAddress(InetAddress serverAddress)
Устанавливает адрес серверного сокета используя указанный адрес узла и порт Zabbix-сервера по умолчанию. |
void
|
setAddress(InetSocketAddress addr)
Устанавливает адрес сокета Zabbix-сервера. |
void
|
setAddress(String serverHostName)
Устанавливает адрес серверного сокета используя указанное имя узла и порт Zabbix-сервера по умолчанию. |
void
|
setHostName(String hostName)
Устанавливает имя локального узла для маркировки отправляемых сообщений. |
Methods inherited from class java.lang.Object |
---|
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
|
Constructor Detail |
---|
public ZabbixClient()
Method Detail |
---|
public void setAddress(InetSocketAddress addr)
addr
- адрес сокета сервера
public InetSocketAddress getAddress()
public String getHostName()
public void setHostName(String hostName)
hostName
- имя узла
public void setAddress(String serverHostName)
serverHostName
- имя узла для настройки соединения
JabbixProtocol.SERVER_PORT
public void setAddress(InetAddress serverAddress)
serverAddress
- адрес для настройки соединения
JabbixProtocol.SERVER_PORT
public void setAddress(byte[] ipBytes) throws UnknownHostException
ipBytes
- набор байтов, составляющих IP-адрес для
настройки соединения
UnknownHostException
- в случае, если был указан IP-адрес неверной длины
JabbixProtocol.SERVER_PORT
java.lang.Object
public class JabbixAgentextends Object
Основанная на Jabbix программа, реализующая самостоятельный Zabbix-агент. Она может быть использована в качестве входной точки для отслеживания параметров сложной систмы, к примеру такой, как вычислительный кластер. Посредством специализированных агентов метрик, которые могут быть настроены и связаны динамически, через параметры команднной строки, данные могут собираться различными путями, включая протоколы JSON, SOAP, RMI и другие сетевые средства.
Для получения информации о возможностях программы используйте параметр командной строки --help.
Field Summary | |
---|---|
static String
|
VERSION
|
Constructor Summary | |
---|---|
JabbixAgent()
|
Method Summary | |
---|---|
static void
|
main(String[] args)
Разбирает параметры командной строки и запускает агент. |
Methods inherited from class java.lang.Object |
---|
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
|
Field Detail |
---|
public static String VERSION
Constructor Detail |
---|
public JabbixAgent()
Method Detail |
---|
public static void main(String[] args)
args
- аргументы командной строки
See:
Description
Class Summary | |
---|---|
JabbixAgent | Основанная на Jabbix программа, реализующая самостоятельный Zabbix-агент. |
Программа JabbixAgent.
See:
Description
Class Summary | |
---|---|
RandomNumberMetric | Агент метрики реализованный в качестве примера для библиотеки Jabbix, который запрашивает генератор псевдослучайных чисел для получения значения нормально-распределённой случайной величины. |
Стандартный набор агентов метрик.
java.lang.Object
public class RandomNumberMetricextends Objectimplements MetricAgent
Агент метрики реализованный в качестве примера для библиотеки Jabbix, который запрашивает генератор псевдослучайных чисел для получения значения нормально-распределённой случайной величины. Поскольку предполагается возврат только данной метрики, она возвращается для любого указанного ключа.
Constructor Summary | |
---|---|
RandomNumberMetric(long seed)
Создаёт новую случайную метрику с указанным зерном. |
Method Summary | |
---|---|
JabbixMetric
|
getMetric(String key)
Возвращает значение нормально-распределённой случайной величины. |
Random
|
getRandom()
Возвращает генератор псевдостучайных чисел. |
void
|
setRandom(Random random)
Устанавливает генератор псевдослучайных чисел. |
Methods inherited from class java.lang.Object |
---|
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
|
Constructor Detail |
---|
public RandomNumberMetric(long seed)
seed
- зерно генератора псевдослучайных чисел
Method Detail |
---|
public JabbixMetric getMetric(String key) throws JabbixException, NoSuchMetricException
getMetric
in interface MetricAgent
key
- ключ метрики -- имя метрики
JabbixMetric
, содержащий псевдослучайное
значение.
NoSuchMetricException
- если метрики с указанным ключом не было обнаружено
JabbixException
- в
случае возникновения любой другой ошибки
public void setRandom(Random random)
random
- генератор псевдослучайных чисел
public Random getRandom()
Package org.altlinux.jabbix |
---|
Class org.altlinux.jabbix.JabbixException extends Exception implements Serializable |
---|
serialVersionUID: -4613631465571127015L
Class org.altlinux.jabbix.JabbixProtocolException extends JabbixException implements Serializable |
---|
serialVersionUID: -2103738920257883564L
Class org.altlinux.jabbix.NoSuchMetricException extends JabbixException implements Serializable |
---|
serialVersionUID: 8658433030135158515L
Class org.altlinux.jabbix.UnknownCommandException extends JabbixException implements Serializable |
---|
serialVersionUID: -3226163690812745802L
JabbixActiveMetric
)
и снабжённая периодом устаревания для всего содержимого таблицы в целом.
Delayed
.
Delayed
.
JabbixSecurityManager
.
JabbixMetric
,
содержащий текущее значение метрики с указанным ключём.
MetricAgent
для получения некоторой информации о работе прогамммы, основанной на
Jabbix.
SecurityManager
используемого для управления доступом к основанной на Jabbix программе и
от неё.
JabbixActiveMetric
.
JabbixActiveMetric
),
в которых заинтересован сервер.
The Overview page is the front page of this API document and provides a list of all packages with a summary for each. This page can also contain an overall description of the set of packages.
Each package has a page that contains a list of its classes and interfaces, with a summary for each. This page can contain four categories:
- Interfaces (italic)
- Classes
- Enums
- Exceptions
- Errors
- Annotation Types
Each class, interface, nested class and nested interface has its own separate page. Each of these pages has three sections consisting of a class/interface description, summary tables, and detailed member descriptions:
Each summary entry contains the first sentence from the detailed description for that item. The summary entries are alphabetical, while the detailed descriptions are in the order they appear in the source code. This preserves the logical groupings established by the programmer.
- Class inheritance diagram
- Direct Subclasses
- All Known Subinterfaces
- All Known Implementing Classes
- Class/interface declaration
- Class/interface description
- Nested Class Summary
- Field Summary
- Constructor Summary
- Method Summary
- Field Detail
- Constructor Detail
- Method Detail
Each annotation type has its own separate page with the following sections:
- Annotation Type declaration
- Annotation Type description
- Required Element Summary
- Optional Element Summary
- Element Detail
Each enum has its own separate page with the following sections:
- Enum declaration
- Enum description
- Enum Constant Summary
- Enum Constant Detail
There is a Class Hierarchy page for all packages, plus a hierarchy for each package. Each hierarchy page contains a list of classes and a list of interfaces. The classes are organized by inheritance structure starting withjava.lang.Object
. The interfaces do not inherit fromjava.lang.Object
.
- When viewing the Overview page, clicking on "Tree" displays the hierarchy for all packages.
- When viewing a particular package, class or interface page, clicking "Tree" displays the hierarchy for only that package.
The Deprecated API page lists all of the API that have been deprecated. A deprecated API is not recommended for use, generally due to improvements, and a replacement API is usually given. Deprecated APIs may be removed in future implementations.
The Index contains an alphabetic list of all classes, interfaces, constructors, methods, and fields.
This help file applies to API documentation
generated using the standard doclet.