org.altlinux.jabbix
Class ActiveAgent

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

public class ActiveAgent
extends ZabbixClient
implements 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

ActiveAgent

public ActiveAgent(AgentServer agentServer,
                   ThreadPoolExecutor pool,
                   long refreshPeriod)
Создаёт экземпляр активного агента с заданными параметрами.

Parameters:
agentServer - интерфейс для получения значений метрик
pool - пул потоков для асинхронного получения значений метрик
refreshPeriod - период обновления набора активных проверок (метрик) в миллисекундах
Method Detail

run

public void run()
Запускает цикл активных проверок. В первую очередь с сервера запрашивается список метрик. Затем в процессе работы полученный список обновляется в соответствии со значением параметра refreshPeriod. Все активные метрики помещаются в очередь в порядке их устаревания. Каждый раз, когда проходит отрезок времени, равный периоду обновления какой-либо метрики, новое значение данной метрики запрашивается ассинхронно с использованием нового экземпляра задачи MetricRequest. Задача настраивается таким образом, что обновлённое значение метрики помещается в другую очередь ResponseQueue. При переносе в очередь, отсчёт времени устаревания метрики начинается снова, и поэтому каждая обновлённая метрика может находится в очереди вплоть до истечения значения её параметра refreshPeriod, после чего значение метрики посылается на сервер. После этого метрика возвращается обратно в список активных метрик.

Когда же устаревает сам список активных проверок, обрабатывающий очередь процесс заверщается (после отправки значений всех ожидающих отправки метрик), и новый список автивных проверок запрашивается у сервера. Создаются новые экземпляры очереди активных проверок и очереди отправки. Таким образом содержащиеся в предыдущем экземпляре очереди устаревшие метрики не возвращаются в новую очередь активных проверок.

Specified by:
run in interface Runnable

setRefreshPeriod

public void setRefreshPeriod(long refreshPeriod)
Устанавливает период обновления списка активных проверок.

Parameters:
refreshPeriod - значение периода обновления в миллисекундах
See Also:
ActiveMetricTable.setRefreshPeriod(long)

getRefreshPeriod

public long getRefreshPeriod()
Возвращает значение периода обновления списка активных проверок.

Returns:
значение периода обновления в миллисекундах
See Also:
ActiveMetricTable.getRefreshPeriod()

setPool

public void setPool(ThreadPoolExecutor pool)
Устанавливает пул потоков, используемый для ассинхронного выполнения задач по получению значений метрик

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

getPool

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

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