public class ActiveAgent extends ZabbixClient implements java.lang.Runnable
Одним из преимиществ модели активных проверок является то, что она может работать и в том случае, если агент находится за файерволом и поэтому до него нельзя добраться из внешней сети.
Клиент использует (возможно не активный) экземпляр сервера агентов (AgentServer
) как инструмент получения значений метрик. Получение каждого значения метрики выполняется асинхронно посредством пула потоков.
Constructor and Description |
---|
ActiveAgent(AgentServer agentServer,
java.util.concurrent.ThreadPoolExecutor pool,
long refreshPeriod)
Создаёт экземпляр активного агента с заданными параметрами.
|
Modifier and Type | Method and Description |
---|---|
java.util.concurrent.ThreadPoolExecutor |
getPool()
Возвращает пул потоков, который используется при асинхронном получении значений метрик
|
long |
getRefreshPeriod()
Возвращает значение периода обновления списка активных проверок.
|
void |
run()
Запускает цикл активных проверок.
|
void |
setPool(java.util.concurrent.ThreadPoolExecutor pool)
Устанавливает пул потоков, используемый для ассинхронного выполнения задач по получению значений метрик
|
void |
setRefreshPeriod(long refreshPeriod)
Устанавливает период обновления списка активных проверок.
|
getAddress, getHostName, setAddress, setAddress, setAddress, setAddress, setHostName
public ActiveAgent(AgentServer agentServer, java.util.concurrent.ThreadPoolExecutor pool, long refreshPeriod)
agentServer
- интерфейс для получения значений метрикpool
- пул потоков для асинхронного получения значений метрикrefreshPeriod
- период обновления набора активных проверок (метрик) в миллисекундахpublic void run()
refreshPeriod
. Все активные метрики
помещаются в очередь в порядке их устаревания. Каждый раз, когда
проходит отрезок времени, равный периоду обновления
какой-либо метрики, новое значение данной метрики
запрашивается ассинхронно с использованием нового экземпляра задачи
MetricRequest
. Задача настраивается таким образом, что
обновлённое значение метрики помещается в другую очередь ResponseQueue
. При переносе в очередь, отсчёт времени устаревания
метрики начинается снова, и поэтому каждая обновлённая метрика может
находится в очереди вплоть до истечения значения её параметра refreshPeriod
, после чего значение метрики посылается на
сервер. После этого метрика возвращается обратно в список активных
метрик.Когда же устаревает сам список активных проверок, обрабатывающий очередь процесс заверщается (после отправки значений всех ожидающих отправки метрик), и новый список автивных проверок запрашивается у сервера. Создаются новые экземпляры очереди активных проверок и очереди отправки. Таким образом содержащиеся в предыдущем экземпляре очереди устаревшие метрики не возвращаются в новую очередь активных проверок.
run
in interface java.lang.Runnable
public void setRefreshPeriod(long refreshPeriod)
refreshPeriod
- значение периода обновления в миллисекундахActiveMetricTable.setRefreshPeriod(long)
public long getRefreshPeriod()
ActiveMetricTable.getRefreshPeriod()
public void setPool(java.util.concurrent.ThreadPoolExecutor pool)
pool
- интерфейс пула потоковpublic java.util.concurrent.ThreadPoolExecutor getPool()