Однажды обнаружил предупреждение в панели Zabbix:
Zabbix housekeeper processes more than 75% busy

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

Первое что можно оптимизировать, это интервал обновления, чем он реже, тем меньше данных заносится в базу данных и меньше потом придётся очищать. Все шаблоны я создавал сам, если есть существующие шаблоны, то их можно полностью клонировать и изменить. Например для клиентских коммутаторов на доступе я указывал интервал обновления 15m, период хранения истории 1d, период хранения трендов 60d. На серверах и прочем сетевом оборудовании в ядре естественно делал интервал обновления чаще по мере необходимости и больше период хранения трендов.

В конфигурации Zabbix сервера есть параметры для настройки housekeeper, откроем файл конфигурации в текстовом редакторе:

1

nano /etc/zabbix/zabbix_server.conf

Параметр HousekeepingFrequency определяет как часто процессы housekeeper будут выполнять очистку (в часах), по умолчанию значение равно 1, что означает — каждый час, доступные значения 0-24.

Параметр MaxHousekeeperDelete определяет сколько значений в таблицах базы данных будет удалено, по умолчанию 5000, что очень мало для сервера с большим количеством хостов и элементов данных, доступные значения 0-1000000. Если указать 0, то это уберет лимит, но нужно учитывать производительность дисковой системы и количество данных которые нужно удалить в базе данных, чтобы не получилось что процессы housekeeper будут запускать очистку каждый час и выполнять ее более часа. По умолчанию триггер «Zabbix housekeeper processes more than 75% busy» срабатывает если процесс очистки длится более 30 минут, за временем выполнения и нагрузкой на дисковую систему можно следить на графиках.

На момент написания статьи, этот Zabbix сервер обслуживал 754 хоста и имел 25609 элементов данных, в конфигурации я указал параметры:

1

2

HousekeepingFrequency=1

MaxHousekeeperDelete=550000

Как видим по графикам, очистка выполняется не дольше 15 минут.
Обычно если очистка выполняется более 30 минут, то это связано с тем что процессы housekeeper выполняются редко (например не каждый час) или не хватает дисковой производительности и не оптимизирован сервер баз данных.
Если собралось очень много устаревших данных, то можно остановить Zabbix сервер и очистить данные SQL запросами, примеры смотрите в другой моей статье, а также SQL запросы для массового изменения интервалов обновления в элементах данных.

Теги