Perdoe-me se isso já foi respondido em algum lugar - eu encontrei muitas perguntas semelhantes, mas nada que pareça corrigir meu problema.
Estou apenas testando o tempo de atividade de alguns servidores Windows no nagios e, se ultrapassar um determinado valor, desejo alertar sobre isso.
Estava funcionando ontem e, em algum momento, pareço ter quebrado as coisas, mas não consigo identificar exatamente o que está errado.
Primeiramente, como root, o teste funciona:
./libexec/check_uptime.sh x.x.x.x 28 30
1449919
OK. Uptime 16 Days.
Como nagios, via su - nagios o teste funciona:
su - nagios
-bash-3.2$ pwd
/usr/local/nagios
-bash-3.2$ ./libexec/check_uptime.sh xx.xx.xx.xx 28 30
1449969
OK. Uptime 16 Days.
No entanto, acredito que a maneira 'correta' de testar é através de su-nagios -c?
su - nagios -c "./libexec/check_uptime.sh 10.36.128.22 28 30"
1450084
OK. Uptime 16 Days.
No entanto, o comando ainda está falhando na página da Web / daemon
Uptime UNKNOWN 15-03-2016 11:04:24 0d 1h 4m 10s 3/3 0
A definição de comando parece correta para mim:
define command{
command_name check_uptime
command_line $USER1$/check_uptime.sh -H $HOSTADDRESS$ 25 28
}
Como é a definição de serviço:
define service{
use generic-service
hostgroup_name Windows-Servers
service_description Uptime
check_command check_uptime
}
De alguma forma, perdeu o script em uma edição, aqui está novamente:
#!/bin/bash
## Shamelessly adapted from http://correctlife.blogspot.de/2011/02/wrapper-on-checkntuptime.html
HOSTADDRESS=$1
MAXWARN=28 # in days
MAXCRIT=30 # in days
MINCRIT=1
STATE_OK=0
STATE_WARNING=1
STATE_CRITICAL=2
STATE_UNKNOWN=3
SECONDS='/usr/local/nagios/libexec/check_nt -H $HOSTADDRESS -p 12489 -s $ekr3t -v COUNTER -l "\System\System Up Time"'
#echo $SECONDS
if [ $SECONDS == 0 ]; then
echo "UNKNOWN: No uptime recieved. Uptime Value: $SECONDS"
exit 3
fi
HOURS=$(( $SECONDS / 60 / 60 ))
SECONDSINHOURS=$(( $HOURS * 60 * 60 ))
DAYS=$(( $HOURS / 24 ))
REMAININGSECONDS=$(( $SECONDS - $SECONDSINHOURS ))
MINUTES=$(( $REMAININGSECONDS / 60 ))
FORMEDUPTIME="${DAYS} Days"
if [[ $HOURS -lt $MINCRIT ]]; then
echo "CRITICAL: System restarted in last hour."
exit 2
fi
if [[ $DAYS -ge $MAXCRIT ]]; then
echo "CRITICAL: System up over ${MAXCRIT} Days."
exit 2
fi
if [[ $DAYS -ge $MAXWARN ]]; then
echo "WARNING: System up over ${MAXWARN} Days."
exit 1
fi
echo "OK. Uptime $FORMEDUPTIME."
exit 0