Eu tive que lidar com um problema semelhante algumas vezes atrás.
O fato é que monit
não é capaz de fazer isso, até onde eu sei.
Com monit
, você pode lidar com as diretivas X times
e / ou Y cycles
, mas mais ou menos rapidamente a ação exec
será acionada mais de uma vez, dependendo do tempo gasto para corrigir o problema. / p>
Então, finalmente, decidi escrever meu próprio script de verificação para lidar com toda a lógica, com base em sinalizadores.
Eu vou compartilhar isso com você, então você aceita ou não, depende de você.
Primeiro: Escreva o script para monitorar o uso do FS, digamos /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
Aqui eu suponho que você pode entender o roteiro. Se não, diga-me, vou explicar isso.
Segundo: defina a sua definição de serviço 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'"