Однажды мне понадобилось мониторить размер директории в Zabbix и сделать триггер, чтобы Zabbix оповещал когда размер директории будет увеличен.
Естественно триггер на малый размер свободного пространства дисковой системы уже присутствует в стандартных шаблонах Template OS Linux(Mounted filesystem discovery), но не хватало еще чтобы например файл не ротируемых логов занял почти всю дисковую систему, в моем случае например у разработчиков ABillS модуль sms при отсутствии связи с sms сервером мог за час записывать гигабайт логов, я сделал скрипты ротации некоторых логов, но неизвестно какие еще файлы появятся в новых версиях ABillS, по этому мониторить размер директории не помешает.
Простая команда проверки размера директории:
du -h -s /usr/abills/
У меня отобразилось:
2.7G /usr/abills/
Получается необходимо урезать 12 последних символов, пробел и букву G, то есть 14 символов, я это сделал так:
du -h -s /usr/abills/ | sed -r 's/(.+).{14}/\1/'
В результате получилось число которое можно передавать в Zabbix:
2.7
Далее я открыл файл /etc/zabbix/zabbix_agentd.conf и добавил в конце:
UserParameter=dir_size_usr_abills,du -h -s /usr/abills/ | sed -r 's/(.+).{14}/\1/'
Перезагрузил zabbix-agent чтобы применить конфигурацию:
service zabbix-agent restart
Теперь можно в свой шаблон добавить элемент данных с ключом «dir_size_usr_abills» и типом Zabbix агент, по нему сделать график и например триггер с выражением:
last(/ixnfo.com_template/dir_size_usr_abills)>3.5
Можна трохи оптимізувати регулярку
[\d\.\d]+
будемо отримувати цілі числа, та числа з десятковим знаком (приклад regex101.com/r/6930FT/1)