Недавно стало очевидно, что наш заббикс не справляется с нагрузкой. Появились частые ложные срабатывания, в графиках появились провалы. Причина оказалась простой, очередь в zabbix выросла до неприличных размеров и составляла порядка 2000. Было очевидное решение — увеличение инстансов, но ресурсы не позволяли сделать этого и как стало очевидно в дальнейшем это было бы плохим решением. О том как мы решили эту проблему ниже. Забегая вперед: проблема удачно решена и очередь сократилась до 30-40 в среднем.
Как видно на картинке было 3 переломных момента, собственно как и две проблемы. Вот о них подробнее:
1 проблема, это хосты которые уже давно не активны, но не удалены. Их опрос занимает время и ресурсы. Выявить их было несложно. У нас мониторятся хосты только с агентами. Все хосты у которых агент был недоступен, были помечены как проблемные. Дальше проведен анализ и удаленные хосты были удалены до конца, а для остальных исправлены правила firewall. Но оказалось не все так просто. В процессе поиска устаревших хостов было замечено несколько дублирующихся хостов. Под дублирующимися хостами мы понимаем, полностью идентичные хосты, с одним ID в базе. Причину дублирования так и не удалось выяснить, был создан баг в zabbix, но, к сожалению, реакции на момент написания статьи не последовало. А вот для поиска дублирующихся хостов был сделан запрос прямо в базу:
select host, Count(host) as Count from hosts group by host having count(host)>1;
Данный запрос возвращает список идентичных хостов, которых более одного.
2 проблема была из той же области. Она заключалась в большом количестве уже не актуальных items, оставшихся от старых шаблонов. Для решения этого момента, были проанализированы все items со статусом not supported и удалены лишние.
Ну и 3 финальный аккорд — это шаблон Linux. Типы проверок были настроены на использование zabbix active agent. Чем он отличается от обычных проверок хорошо описано в документации. Когда проверок очень много, они начинают потреблять ресурсы сервера. Для шаблона оперативно был изменен c zabbix agent (active) на zabbix agent.
В итоге этих трех простых действий очередь была сокращена с более чем 3 К до 30-40.
P.S.: Еще одним удобным инструментом анализа нагрузки на zabbix оказался встроенный в zabbix, анализатор времени получения данных. Посмотреть его можно: Администрирование -> Очередь. Логика простая: чем больше время получения данных, тем больше нагрузка на сервер.
В дальнейших планах есть изменение СУБД с mysql на postgresql. По результатам мы обязательно поделимся с вами, как мы это делали и какие результаты получили.
Автор: системный администратор компании Magvai69
Комментарии (14)
yosemity
18.11.2015 13:14Вообще непонятно о чем статья. «zabbix agent» и так выставлен по умолчанию. Т.е. вы сознательно изменили настройку на отличную от дефолной, потом начало тормозить и вы вернули обратно? Далее. В заббиксе гибкие правила дискавери. У меня хосты добавляются автоматически и удаляются тоже автоматически, если их давно (месяц) не видно.
Заббикс, как и любой инструмент нужно настраивать. В статье описаны очевидные вещи, которые выполняются в первую очередь. Про оптимизацию ни слова.
evg_krsk
18.11.2015 15:12Честно говоря, тоже немного разочарован. Ожидал увидеть, что вы проанализируете загрузку заббикса (данные внутренних проверок) и по результату расширите узкие места, а вы просто порядок навели. А заменой активного агента на пассивного, наоборот, как я понимаю, увеличили загрузку сервера.
Сколько у вас NVPS?
mobilesfinks
20.11.2015 11:57Данный запрос возвращает список идентичных хостов, которых более одного.
А как решили то проблему?
У меня тоже есть 2 копии одного хоста. Переехал на постгрес. Удалить эти хосты не получается. Отсоединить и очистить шаблон так же не получается. У вас были подобные проблемы?
martin74ua
Если не секрет — в чем заключалась оптимизация то? Все что вы сделали — просто навели порядок в конфигурации забикса. Это как бы подразумевается ;)