Как запретить monit запускать оператор exec каждый раз, когда тест не проходит? Утверждение в моем monitrc:
check filesystem tmpfs with path /var
if space > 90% then exec "/usr/bin/logger -p daemon.crit 'MAJOR: space test'"
Это кажется странным, потому что кто-то другой задал вопрос, в котором он делал предупреждение, и оно имело желаемое мной поведение. Я готов начать душить хлопая по ящикам linux.
Изменить: вот противоположный случай Повторять оповещения о мониторинге
Это потому, что он использует alert, а не exec?
Поведение действия exec (с повторением каждый раз) изменилось с версии Monit 5.16.
https://mmonit.com/monit/changes/
Действие exec теперь выполняется только один раз при изменении состояния, так же, как и действие предупреждения.
Несколько раз мне приходилось сталкиваться с подобной проблемой.
Это факт monit
не может этого сделать, насколько я знаю.
С участием monit
ты можешь справиться с X times
и / или Y cycles
директивы, но более или менее быстро exec
действие будет запускаться более одного раза, в зависимости от времени, которое вы потратите на устранение проблемы.
Итак, наконец, я решил написать свой собственный сценарий проверки для обработки всей логики, основанной на флагах.
Я поделюсь этим с вами, потом брать или нет, решать вам.
Первый : Напишите скрипт для мониторинга использования ФС, скажем /root/check_fsspace.sh
:
#!/bin/sh
myFS=/var
myTreshold=90
flagFile=/tmp/flag
spaceused=$(df -h | grep "$myFS" | tr -s " " | cut -d" " -f5 | cut -d"%" -f1)
if [ $spaceused -gt $myTreshold ]; then
if [ ! -f $flagFile ]; then
touch $flagFile
exit 1
else
exit 0
fi
fi
if [ $spaceused -le $myTreshold ]; then
rm -f $flagFile
exit 0
fi
Полагаю, вы понимаете сценарий. Если нет, скажите, я объясню.
Второй: Настройте свой monit
определение услуги:
check program check_fs with path "/root/check_fsspace.sh"
if status != 0 then exec "/usr/bin/logger -p daemon.crit 'MAJOR: space test'"
Вы контролируете это с помощью cycles
директива. Как часто вы хотите, чтобы это регистрировалось?
Предполагая, что интервал проверки демона Monit составляет 60 секунд, вы можете сказать что-то вроде: «Если это не удается в течение X циклов, выполните сценарий».
Но Monit прост ... Он будет предупреждать об отказе каждый раз, когда вы достигнете этого порога диска. Это по замыслу. Если вы достигаете порога достаточно часто, чтобы это действие регистрации раздражало, попробуйте изменить порог.
Monit будет регистрировать свой статус каждый цикл в журнал сообщений.
Mar 12 00:07:06 yo-mama monit[8577]: 'ppro' space usage 92.4% matches resource limit [space usage>85.0%]
Mar 12 00:08:06 yo-mama monit[8577]: 'ppro' space usage 92.4% matches resource limit [space usage>85.0%]
Mar 12 00:09:06 yo-mama monit[8577]: 'ppro' space usage 92.4% matches resource limit [space usage>85.0%]
Mar 12 00:09:07 yo-mama monit[8577]: 'ppro' space usage 92.4% matches resource limit [space usage>85.0%]
Он будет предупреждать каждый раз, когда превышается порог:
Resource limit matched Service ppro
Date: Wed, 12 Mar 2014 00:09:07
Action: alert
Host: yo-mama
Description: space usage 92.4% matches resource limit [space usage>85.0%]
Your faithful employee,
Monit