Настраивал на днях мониторинг Zabbix с помощью HTTP агента. Мне нужно было довольно часто делать проверки, чем чаще, тем лучше. Взял для начала интервал в 20 секунд. И тут же получил затык. Реально проверки выполнялись гораздо дольше с разбросом между 1-2 минутами.
Начал разбираться. Первым делом заподозрил нехватку HTTP Pollers. Прибавил сразу с запасом:
StartHTTPPollers=20
Это вообще никак не помогло. Оно и понятно. Это была первая и единственная HTTP проверка на тот момент.
Посмотрел логи сервера в надежде увидеть там какие-то подсказки, но не помогло. Стал копать в сторону таймаутов и интервалов именно для http агента. Там же под капотом другие инструменты. Конкретно эти проверки реализуются с помощью curl. Думаю, может там кроются какие-то нюансы. В итоге ничего не придумал и не нашёл. Никаких особых настроек конкретно для http агента нет. Всё выполняется в рамках всех проверок.
💡И тут меня осенило. Зашёл и проверил очередь запросов в Zabbix — Администрирование ⇨ Очередь ⇨ Обзор очереди. А тут сотни запросов в ожидании от 30 секунд до 1 минуты. На сервере очень много simple check и icmp запросов. Нагрузку на сервер они особо не создают, поэтому не заметно, что их много и они тупят. Для этих проверок не критичны задержки, поэтому никто и не заметил, что они иногда не соблюдают заданный интервал.
Далее открыл стандартный дашборд Zabbix под названием Zabbix server health. На нём есть 2 нужных виджета: Utilization of data collectors и Queue size. На первом видно, каких именно обработчиков не хватает, чтобы не росла очередь. В моём случае это были poller data collector и icmp pinger data collector. Увеличил их количество в конфиге сервера:
StartPollers=25StartPingers=10
и всё поехало как надо. Очередь рассосалась, HTTP агент стал работать точно в заданных интервал в 20 секунд.
#zabbix