Eu tenho um processo que obtém tamanhos para todos os discos no servidor, grava em um arquivo como este
# cat disksize
DISK# ACTUAL WARNING CRITICAL
disk1 12 20 30
disk2 45 60 75
a primeira linha do arquivo é para referência, mostrando para que serve cada coluna. Abaixo está o script de monitoramento, mas não tenho certeza se funcionará para nagios, pois alguns desses tamanhos podem resultar em OK, alguns talvez em aviso. Alguém dar alguma dica sobre isso, por favor
# cat check-disk_size
#!/usr/bin/env bash
LOGFILE='disksize'
cat ${LOGFILE} | while
read disk_name actual warning critical
do
if [ $actual -ge $warning ]; then
echo "WARNING: $disk_name has reached standard warning limit, Current actual: ${actual}"
exit 1
elif [ $actual - ge $critical ]; then
echo "WARNING: $disk_name has reached standard critical limit, Current actual: ${actual}"
exit 2
else
echo "OK: $disk_name is under optical limit, Current actual: ${actual}"
exit 0
done
Seu script (como escrito) não fará o que você espera. O maior problema é que você pode
exit 0
sair prematuramente do loop, perdendo as possíveis entradas de disco Críticas que se seguem. Menos perigosamente, o script podeexit 1
com um Aviso quando existem problemas Críticos. O Nagios baseará o status desta verificação no código de saída , então seu script pode dar resultados confusos simplesmente com base na ordenação das entradas no arquivo.Eu recomendaria reestruturar o script para que ele retorne exatamente o que você espera, considerando os dados no arquivo. Deve rolar o pior alerta? Deve contar quantos alertas estão no arquivo? A ideia mais segura seria acumular o pior alerta, de modo que cada disco tenha que estar abaixo do limite de Aviso para que o alerta do Nagios seja "OK", mas seu ambiente pode ditar outros requisitos.
Aqui está uma possibilidade que acumula o pior alerta:
É apenas um exemplo para demonstrar a ideia.