org.altlinux.jabbix
Class AgentServer

java.lang.Object
  extended by org.altlinux.jabbix.AgentServer
All Implemented Interfaces:
Runnable

public class AgentServer
extends Object
implements 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

AgentServer

public AgentServer(ThreadPoolExecutor pool)
Создаёт новый экземпляр сервера агентов, использующий указанный пул потоков для обработки входящих запросов.

Parameters:
pool - интерфейс пула потоков
Method Detail

getPort

public int getPort()
Возвращает номер порта серверного сокета.

Returns:
номер порта серверного сокета

setPort

public void setPort(int port)
Устанавливает номер порта серверного сокета. В том случае, если сервер уже работает, одификация данного значения не изменит номер порта уже открытого сокета.

Parameters:
port - номер порта, на котором ожидать подключения

run

public void run()
Производит запуск рабочего цикла. Сервер ожидает входящего соединения, принимает его если текущий менеджер безопасности не препятствует этому, добавляет новый запрос на выборку метрики (JabbixRequest) в очередь задач (см. AgentServer.getPool()) и начинает новую итерацию.

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

Specified by:
run in interface Runnable

getMetricAgentMap

public Map getMetricAgentMap()
Возвращает набор соответствий ключ метрики -> агент метрики.

Returns:
набор пар (ключ метрики, агент метрики)

setMetricAgentMap

public void setMetricAgentMap(Map map)
Устанавливает набор соответствий ключ метрики -> агент метрики.

Parameters:
map - набор пар (ключ метрики, агент метрики)

getMetricAgent

public MetricAgent getMetricAgent(String key)
Возвращает агент метрики зарегистрированный для указанного ключа метрики. Каждый ключ метрики -- это текстовая строка, которая может быть поставлена во взаимно однозначное соответствие с агентом метрики (MetricAgent). Однако проекция нескольких ключей в один агент также возможна, при этом делается предположение о том, что точка (.) является разделителем компонентов. Для заданного мультикомпонентного ключа выбирается наиболее длиное совпадение слева, если есть.

Parameters:
key - имя метрики
Returns:
агент, который может быть использован для получения значения метрики

setPool

public void setPool(ThreadPoolExecutor pool)
Установить пул потоков для обработки входящих запросов.

Parameters:
pool - интерфейс пула потоков

getPool

public ThreadPoolExecutor getPool()
Возвращает пул потоков, используемый для обработки входящих запросов.

Returns:
интерфейс пула потоков