Процесс конфигурирования Zabbix сервера, опираясь на показатели нагрузки на сервер.
Это незаконченная статья и не является инструкцией к действиям. Тут я описываю как разбираюсь с нагрузкой на zabbix server, меняя параметры конфигурации. Всё это есть в интернете, но как-то разрозненно и неполно. Собираю всю информацию воедино.
Периодически zabbix сервер присылает оповещения о том, что ему не хватает каких-то ресурсов. В сети много рецептов как заставить zabbix молчать (даже есть профессионалы своего дела, которые просто отключают неугодные триггеры и типа всё хорошо становится, раз оповещений нет). Но я так и не нашёл вариантов, где кто-то вдумчиво и аргументированно редактировал параметры. В основном все просто «бомбят» увеличением значений параметров, пока zabbix не наестся.
Итак, конкретно моя ситуация. Часто вижу срабатывание триггеров:
Zabbix housekeeper processes more than 75% busy Zabbix history syncer processes more than 75% busy
В моём случае срабатывание вышеупомянутых триггеров вызывается удалением ненужных item. Вполне логично, что заббикс согласно настройкам раз в час начинает подчищать ненужные данные. Но превращается это в подвешивание веб-морды в лучшем случае и в отвал кучи хостов в худшем, что вызывает штормовое почтовое мессенджеровое оповещения.
Обвешавшись графиками и замониторив MySql заббикса, я принялся аккуратно менять параметры zabbix_server.conf. Начал с:
CacheSize=256M
Данный параметр редактируют многие, у кого начинаются те или иные проблемы с нагрузкой на zabbix. После перезагрузки смотрю по графикам что поменялось.
Параметр configuration cache вышел из крутого пике. Стало полегче и value cache. Следовательно, для этих параметров надо менять значение конфига CacheSize.
Слегка повысилась нагрузка на процессор. Судя по графику, ранее процессор вообще иногда простаивал, будто ждал чего-то (по типу как ждёт отклика от жёсткого диска). Следовательно, хоть и было всё в целом нормально с работой заббикс сервера, всё равно он начал работать эффективнее. Но это не точно.
Казалось бы, что я хотел тут узнать или доказать и в чём разобраться. Данный рецепт есть на форуме того же заббикса минимум с 2013-го года. Однако, вот первый побочный эффект. Использование оперативной памяти увеличились многим больше, чем значение, на которое был увеличен параметр. У меня заббикс находится в контейнере и показатели по самому контейнеру зафиксировали рост потребления озу на ~1Гб. На самом сервере использование оперативной памяти увеличилось на 360мб (видимо контейнер заранее под себя уже подмял какой-то объём памяти в виду чего не могу на 100% утверждать, на сколько больше на самом деле начало есть оперативной памяти, но однозначно заметный скачок присутствует). На загрузке процессора вышеописанные действия не повлияли.
Я пронаблюдал за работой сервера несколько дней и потом намечено принялся за zabbix value cache. Про него написано тут — https://www.zabbix.com/documentation/4.0/ru/manual/config/items/value_cache.
Так я выхожу на элемент данных zabbix[vcache,cache,<параметр>], который связан с zabbix value cache. В конфигурационном файле сервера за это дело отвечает параметр ValueCacheSize. По умолчанию он 8мб. А у меня как раз при эпилепсиях заббикс сервера веб-морда тормозит, а тянет она значения из истории. По сему завожу пару графиков, чтобы понаблюдать за этими параметрами, если вдруг начнётся шторм.
Ещё при перезагрузке заббикс сервера я заметил, что poller processes загрузились под 100%, но триггер не успел сработать. Чтобы избежать такой загрузки в принципе, надо увеличивать значение StartPollers. Однако, ни в одной статье, где «учат» балансировать нагрузку на заббикс сервер не упоминают вот что.
Обратите внимание, что слишком большое количество процессов обработки данных… [] …заставит Zabbix сервер остановиться. (подробнее тут — https://www.zabbix.com/documentation/4.2/ru/manual/appendix/config/zabbix_server#примечания). Выходит, что на абы какое значение увеличивать параметр, наверное, нежелательно.
Второй параметр, который я решил поменять — ValueCacheSize. По умолчанию он 8мб, как уже я упоминал выше (и как написано в доке), по графику свободно от него у меня 21%. Теоретически, если подниму значение параметра ещё на 8мб, то график должен показать кардинальные изменения.
ValueCacheSize=16
После перезагрузки значение value cache выросло до 61%, что по расчётам абсолютно сходится.
Вторая перезагрузка стала менее тяжёлой для history syncer processes. Судя по графикам он напрягся заметно меньше. Замониториный мною параметр vcache наоборот показал большее кол-во непопаданий в кэш, чем прошлая перезагрузка: 3400vps до 906vps.
После перезагрузки снова было замечено потребление оперативной памяти. Прошлая перезагрузка тоже это показала, но потом постепенно заббикс сервер «вернул» гигабайт обратно.
После двух изменённых параметров вроде веб-интерфейс заббикса начал шевелиться веселее. Я решил устроить очередное удаление данных на хостах и посмотреть поменяется ли что-то с загрузкой. Сервер по режнему получил расколбас, а я — массу оповещений. Копаем дальше.
Обильное кол-во недоступности хостов вызвано нагрузкой на инстансы poller processes.
StartPollers=7 StartPollersUnreachable=2
Для busy icmp pinger processes меняю параметр:
StartPingers=2
Для busy history syncer processes:
HistoryCacheSize=32M
После перезагрузки сервера графики заббикса показали улучшение ситуации. Ресурсов больше есть не стало, параметры запросов к mysql не изменились.
Про партицирование — https://youtu.be/O6ncD7ivewY
https://www.zabbix.org/wiki/Docs/howto/mysql_partition
#Полезные заметки, которые нашёл в сети по теме
Если указать в настройках агента не ip адрес сервера, а его DNS имя, то агент будет каждый раз его запрашивать у DNS сервера. Если DNS отвечает быстро, то проблем нет. А если как у меня, то пулеры на сервере заканчиваются — агенты медленно отдают данные.
grep -P ‘zabbix_server: poller #’ /proc/*/cmdline
Хорошая презентация на тему производительности заббика, правда старая =(( — https://docplayer.net/21600317-Abc-of-zabbix-performance-tuning.html
Zabbix Performance Tuning (книга)- https://books.google.ru/books?id=We0RCgAAQBAJ&pg=PA107&lpg=PA107&dq=housekeeper+%5Bdeleted+history/trends&source=bl&ots=jpB21dekG-&sig=ACfU3U1YreMK90_ooWeqcsUdoFk4YQZy1w&hl=ru&sa=X&ved=2ahUKEwiPhaf_05bmAhUIYlAKHTCnA-4Q6AEwBXoECAoQAQ#v=onepage&q=housekeeper%20%5Bdeleted%20history%2Ftrends&f=false
#Оптимизация mysql
http://alyubimov.blogspot.com/2015/11/mysql-zabbix.html
https://raw.githubusercontent.com/major/MySQLTuner-perl/master/mysqltuner.pl