Через некоторое время после развёртывания сервера Icinga 2 при условиях, что в мониторинг подключено большое количество устройств и для каждого устройства по нескольким показателям собираются данные производительности (Performance data), с большой долей вероятности возникнет проблема с переполнением диска, на котором расположен каталог /var/spool/icinga2/perfdata. Этот каталог в конфигурации по умолчанию используется для сохранения множества специальных файлов по каждому хосту и службе Icinga, содержащих данные производительности с отметками времени. Эти служебные файлы сохраняются для возможности обработки данных о производительности сторонними приложениями или расширениями Icinga, например PNP. И как я понимаю, разработчиками Icinga предполагается то, что именно эти сторонние приложения должны брать на себя ответственность за своевременную очистку этих накапливающихся файлов. Если таких сторонних приложений у нас нет, то мы должны самостоятельно настроить периодическую очистку каталога /var/spool/icinga2/perfdata от старых файлов, чтобы избежать проблемы переполнения диска.
В нашем случае примерно после года эксплуатации сервера Icinga, в каталоге /var/spool/icinga2/perfdata накопилось множество файлов с внушительным общим объемом в 25GB:
# du -shc /var/spool/icinga2/*
25G /var/spool/icinga2/perfdata
24K /var/spool/icinga2/tmp
25G total
Чтобы решить эту проблему, создадим нехитрый скрипт очистки вышеупомянутого каталога:
# nano /etc/icinga2/scripts/icinga2-perfdata-cleanup.sh
Наполним скрипт содержимым (находим в каталоге первого уровня все файлы, дата модификации которых более, чем 2 дня назад, и удаляем все эти файлы):
#!/bin/sh
#
find /var/spool/icinga2/perfdata/ -mindepth 1 -mtime +2 -delete
Сделаем скрипт исполняемым и ограничим к нему доступ:
# chmod 700 /etc/icinga2/scripts/icinga2-perfdata-cleanup.sh
Пробуем выполнить скрипт, запустив его вручную от имени супер-пользователя:
# /etc/icinga2/scripts/icinga2-perfdata-cleanup.sh
Скрипт должен отработать без ошибок. После окончания его работы проверим содержимое каталога /var/spool/icinga2/ и посмотрим какой стал размер каталога perfdata:
# du -shc /var/spool/icinga2/*
382M /var/spool/icinga2/perfdata
4.0K /var/spool/icinga2/tmp
382M total
Добавляем задание резервного копирования в планировщик cron
# nano /etc/cron.d/icinga2_perfdata_cleanup
Содержимое файла задания на ежедневное выполнение в 00:10:
# Daily Icinga 2 perfdata files cleanup
10 00 * * * root /etc/icinga2/scripts/icinga2-perfdata-cleanup.sh
Это ведь одна команда. Зачем скрипт создавать? Можно ж ее сразу в кроне указать.