Настройка Housekeeper в Zabbix: как работают параметры удаления строк
При администрировании Zabbix-сервера часто возникает вопрос о поведении параметров HousekeepingFrequency и HousekeeperDelete. Разберём их точное влияние на процесс очистки базы данных (БД).
Что такое Housekeeper в Zabbix?
Housekeeper - это встроенный механизм Zabbix, отвечающий за удаление устаревших данных (истории, трендов, событий) из базы данных, чтобы предотвратить её переполнение и сохранить производительность сервера мониторинга.
Как работают параметры HousekeepingFrequency и HousekeeperDelete?
Параметр HousekeepingFrequency=1 задаёт интервал запуска задачи очистки - 1 час. Это означает, что каждый час Housekeeper активируется и пытается удалить данные.
Параметр HousekeeperDelete=1000000 - это максимальное количество строк, которое может быть удалено за один цикл (за один запуск) по каждой таблице отдельно. То есть, если в Zabbix есть таблицы history, history_uint, trends и другие, то Housekeeper удалит до 1 миллиона строк из каждой такой таблицы за один часовой запуск. Это не общий лимит на всю базу данных, а именно пакетное ограничение на таблицу.
Пример работы Housekeeper
Предположим, в БД есть три таблицы с устаревшими данными: history (2 млн строк), history_uint (3 млн строк) и trends (500 тыс. строк). При запуске Housekeeper с параметром HousekeeperDelete=1000000:
- Из
historyбудет удалено 1 млн строк (остаток - 1 млн). - Из
history_uint- 1 млн строк (остаток - 2 млн). - Из
trends- все 500 тыс. строк (так как лимит не превышен).
Всего за один цикл будет удалено 2,5 млн строк, но лимит применяется к каждой таблице независимо. Если бы параметр был общим, удалилось бы только 1 млн строк суммарно.
Что будет, если данных больше, чем лимит?
Housekeeper не удалит больше указанного количества строк за один запуск. Оставшиеся устаревшие данные будут обработаны в следующем цикле (через час). Таким образом, параметр HousekeeperDelete защищает БД от слишком интенсивной нагрузки при массовом удалении.
Рекомендации по настройке
Для крупных инсталляций Zabbix с высокой интенсивностью сбора данных (более 10 000 новых записей в секунду) увеличьте HousekeeperDelete до 5-10 миллионов, чтобы Housekeeper успевал очищать БД за отведённое время. Однако следите за производительностью дисков - слишком высокие значения могут вызвать блокировки таблиц на время удаления.