Относительно недавно, используя UserParameter с PowerShell, что конечно не характеризует меня с лучшей стороны, я столкнулся с необъяснимым на тот момент ростом очереди.
Необъяснимость заключалась в том, что активные проверки - Zabbix agent (active) примененные в шаблоне для облегчения, как мне казалось, жизни заббиксу, всё только осложняли. Казалось бы, что всё очень логично - агент должен дергать скрипты, собирать что нужно, пачкой слать серверу, тот просто раскладывать значения по базе и не напрягаться. Однако очередь росла, графики пожирали лангольеры... Вобщем, что-то вроде этого: https://www.zabbix.com/forum/showpos...0&postcount=64
Диагностику и решение проблемы я начал классически - с анализа графиков нагрузок и кручения всяких там параметров типа размера буфера, подстройки SQL... Все было бесполезно. Но, решив взяться за дело серьёзно, я специально установил Zabbix Server на одной виртуалке, Zabbix Agent на другой, т.е. отсек нагрузку полностью. Дал им по несколько процессоров, тонны памяти. Применил шаблон, который обеспечил мне порядка 400 элементов данных, снимаемых в активном режиме со средним интервалом в 70 сек, подвесил на UserParameter простецкий скрипт - "sleep 1 && echo 1". И что же в итоге? Получил очередь в 330 элементов. Быстродействие - 1,5 элемента/сек.
Далее я провел эксперимент, подсовывая агенту разные варианты скрипта (в перловой обертке, в bash), выполняющиеся за разные периоды времени. Получилась такая картина:

Зеленые всплески и красные провалы (11:40) - установка sleep в 0.
Красный всплеск и зеленый горб (11:46) - установка sleep в 1.
Спад зеленого горба (11:50) - установка sleep в 3.
При этом atop никакой нагрузки не показывал ни на агентской, ни на серверной виртуалке. Т.е. все указывало на утерю данных агентом или отсутствие их сбора. Пришлось чертить пентаграмму и устанавливать DebugLevel в 4.
...и что? И ничего. Сервер принимает всё, что ему дают, агент отправляет всё, что насобирал, failed items отсутствуют. Агентский Buffersize выставил в 1000, Timeout в 30 - эффекта никакого,
Единственное, что нашел в логе, так это сообщение "active checks #1 [idle 1 sec]". Только #1, никогда #2. В один тред выполняются активные проверки. И этот тред умудряется их терять, если просрочен момент времени запуска (рабочая гипотеза).
А теперь вопрос: Кто-нибудь знает, что с этим попытаться сделать или, может, уже сделал? Или же я заслоупочил в каком-либо месте?
Необъяснимость заключалась в том, что активные проверки - Zabbix agent (active) примененные в шаблоне для облегчения, как мне казалось, жизни заббиксу, всё только осложняли. Казалось бы, что всё очень логично - агент должен дергать скрипты, собирать что нужно, пачкой слать серверу, тот просто раскладывать значения по базе и не напрягаться. Однако очередь росла, графики пожирали лангольеры... Вобщем, что-то вроде этого: https://www.zabbix.com/forum/showpos...0&postcount=64
Диагностику и решение проблемы я начал классически - с анализа графиков нагрузок и кручения всяких там параметров типа размера буфера, подстройки SQL... Все было бесполезно. Но, решив взяться за дело серьёзно, я специально установил Zabbix Server на одной виртуалке, Zabbix Agent на другой, т.е. отсек нагрузку полностью. Дал им по несколько процессоров, тонны памяти. Применил шаблон, который обеспечил мне порядка 400 элементов данных, снимаемых в активном режиме со средним интервалом в 70 сек, подвесил на UserParameter простецкий скрипт - "sleep 1 && echo 1". И что же в итоге? Получил очередь в 330 элементов. Быстродействие - 1,5 элемента/сек.
Далее я провел эксперимент, подсовывая агенту разные варианты скрипта (в перловой обертке, в bash), выполняющиеся за разные периоды времени. Получилась такая картина:

Зеленые всплески и красные провалы (11:40) - установка sleep в 0.
Красный всплеск и зеленый горб (11:46) - установка sleep в 1.
Спад зеленого горба (11:50) - установка sleep в 3.
При этом atop никакой нагрузки не показывал ни на агентской, ни на серверной виртуалке. Т.е. все указывало на утерю данных агентом или отсутствие их сбора. Пришлось чертить пентаграмму и устанавливать DebugLevel в 4.
...и что? И ничего. Сервер принимает всё, что ему дают, агент отправляет всё, что насобирал, failed items отсутствуют. Агентский Buffersize выставил в 1000, Timeout в 30 - эффекта никакого,
Единственное, что нашел в логе, так это сообщение "active checks #1 [idle 1 sec]". Только #1, никогда #2. В один тред выполняются активные проверки. И этот тред умудряется их терять, если просрочен момент времени запуска (рабочая гипотеза).
А теперь вопрос: Кто-нибудь знает, что с этим попытаться сделать или, может, уже сделал? Или же я заслоупочил в каком-либо месте?
Какая может быть связь между Discover-процессами на сервере и тем, что агент просто не запускает проверки - расскажите...

Comment