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, setHostNamepublic 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.Runnablepublic 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()