Main > Abyss | Linux | Notes | Servers > Zabbix очистка старых записей. Houskeeping

Zabbix очистка старых записей. Houskeeping

04.11.2023 0 comments » Views: 50

От Zabbix-а начали приходить уведомления о том, что заканчивается место на ноде где он работает. После проверки оказалось, что 80% места уже израсходавно..

Посмотрел что именно занимает место, оказалось history таблица zabbix-a

Начал разбираться с HousKeeper-ом. Для начала включил его в конфиге

Далее уменьшил время храенния логов до 90 дней в настройка панели управления

  • Zabbix > Administration > General > Housekeeping
    • Events and alerts > Trigger data storage period = 90d
    • Services > Data storage period = 90d
    • User sessions > Data storage period = 90d
    • History > Data storage period = 90d
    • Trends > Data storage period = 90d
  • Zabbix > Administration > General > Audit log
    • Data storage period = 90d

Перезапустил zabbix и на всякий случай тригернул запуск housekeeper-а вручную

после перезапуска, процесс houskeeper-а будет находиться в idle статусу, поэтому имеет смысл запустить его вручную

В логах увидел что housekeeper запущен

далее запустилд htop и увидел что процесс запущен и работает

заглянул что именно он делает через утилиту strace

как видим, вроде чистит аудит лог. Но, я обратил внимание что в select-ах, одни и теже auditid, что достаточно странно.

Посмотрел в таблицы auditlog и увидел что там всего пару сотен записей, что выглядело странно. Погуглив нашел, что было пару багов похожих на мою проблему, и они уже исправлены в более свежих версиях. Поэтому я решил попробовать обновиться

и повторив трюк с strace, я заметил что теперь zabbix не зависает на SQL связанных с auditlog, а начал чистить history

тк таблички достаточно большие, я поднял лимит по очистке до 500к записей за запуск, это опция

даже такой большой лимит, не почистил все что нужно за 1 запуск, поэтому я запустил тригер запуска housekeeper-а, через watch с инетрвалом в 15 секунд и оставил так поработать (время выполнения я смотрел через strace и знал что цикл заканчивается до 15 секунд)

далее я решил посмотреть как обстоят дела с размером таблиц

как видите изменений пока нет, history по прежнему весит очень много. Поэтому адо посмотреть кол-во записей в ней.

208 млн записей выглядит как очень большое значение для чистки, поэтому я решил поднять ставки и вместо 50к поставить 10 млн записей. К сожалению при перезапуске получил ошибку

  • Nov 04 12:50:32 zabbix zabbix_server[2442269]: zabbix_server [2442269]: wrong value of "MaxHousekeeperDelete" in config file "/etc/zabbix/zabbix_server.conf", line 438

Оказывается, максимальный лимит 1 млн, его и поставил.

К сожалению даже такой большой лимит не принес улучшения перформанса, по всей видимости логика очистки не использует его для зависимых SQL запросов. Спустя минут 30, я заметил разницу в кол-ве записей, но она составила всего 6 млн.

в логе zabbix-server, появлялось сообщение, что всего 150к записей было очищено за цикл выполнения

Поэтому как и раньше запустил триггер houskeeper-а через watch и оставил его в покое на какое-то время

Перепровкерив через часа 4-е, я заметил что активная чистка прекратилась и по zabbix_server.log, с каждым запуском чистилось всего 40-60 записей.

В таблице history осталось 40 млн записей, что составило пятую часть от того, что было раньше.

Размер таблиц сцущественно сократился

однако размер свободного места не уменьшился

так же видно, что всего свободного места осталось порядка 6,9 Гб. К счастью, этого будет достаточно чтобы сделать OPTIMIZE (при этой команде, таблица оптимизируется, но создается ее копия, т.е. для оптимизации history нужно как минимум 4949 Мб). Стопаем заббикс и запускаем оптимизацию поочередно.А заодно меняем в конфиге значение выборок для чистки с 1 млн на значение по-умолчанию 5000.

дальше логинимся в mysql и делаем оптимизацию таблиц начиная с меньших, чтобы освободить больше места для больших.

При выполнении видим сообщение вроде такого

в конце проверяем сколь появилось места, в моем случае диск был занят на 81% (29 Gb), а посл оптимизации занятого места стало всего 26% (9,2 Gb)

не забываем запустить заббикс серве обратно

На этом приключения не закончились и при попытке залогиниться получил ошибку

  • The Zabbix database version does not match current requirements. Your database version: 6000000. Required version: 5050072. Please contact your system administrator.

гугление помогло понять, что надо обновить и другие пакеты zabbix (тк обновил zabbix-server)

чтобы не разбираться, что там именно надо перезапускать, я решил ребутнуть весь сервер и выполнил reboot.

После обновления и загрузки, все запустилось как надо и я попал в панель управления и нотификация об оставке места пометилась как Resolved.

Вот такие получились приключения, освободил место, апдейтнулся и избавился от бага с чистилкой.

--[добавлено]--

Пока ходил по интернетам туда-сюда, в одном старом комментарии нашел скрипт очистки. Думаю, его выполнение будет более эффективным чем ожидание housekeeper-а, но сам не проверял

Author: | Rating: 4/5 | Tags:

Leave a Reply

Your email address will not be published. Required fields are marked *

Allowed HTML-tags: <a>, <code>, <i>, <em>, <strong>, <b>, <u>, <strike>