Plugin Nagios pour vérifier la charge CPU
4 août 2006 – 12:59Ce plugin est écrit en Perl et utilise la commande sar. Cette commande donne le pourcentage moyen d’idle des 10 dernières minutes.
Problèmes :
- Il est inutile de faire des vérifications (check) avec un intervalle inférieur à 10 minutes…
- Entre minuit et 0h10 la commande sar n’affiche pas de moyenne -> on utilise la comme top qui donne une valeur quasi-instantamnée (moyenne sur un court intervalle)
check_cpu.pl :
#!/usr/bin/perl
# check_cpu.pl [warn] [critical]
sub print_help ();
sub print_usage ();
$PROG = "check_cpu";
if ( @ARGV[0] eq "" || @ARGV[1] eq "" )
{
print_usage ();
exit 0;
}
$idle = `sar | /usr/bin/tail -n 2 | /usr/bin/head -n 1 | /bin/sed \'s/\ \ */ /g\' | cut -d\' \' -f7 | /bin/sed \'s/,/./g\'`;
if ($idle eq "\n")
{
# entre 0h00 et 0h10 la commande 'sar' n'est pas a jour...
$idle = `top -b -n 1 | grep \"Cpu(s)\" | cut -d\' \' -f11 | sed s/\%//g`;
}
$warning = @ARGV[0];
$critical = @ARGV[1];
$STATE_CRITICAL = 2;
$STATE_OK = 0;
$STATE_WARNING = 1;
$cpu = 100-$idle;
if ( $cpu >= $critical ){
printf "Charge CPU CRITICAL - use : %g%",$cpu;
printf " idle : %g%\n",$idle;
exit $STATE_CRITICAL
;;
}
if ( $cpu >= $warning ){
printf "Charge CPU WARNING - use : %g%",$cpu;
printf " idle : %g%\n",$idle;
exit $STATE_WARNING
;;
}else{
printf "Charge CPU OK - use : %g%",$cpu;
printf " idle : %g%\n",$idle;
exit $STATE_OK
;;
}
sub print_help ()
{
print($PROG,': 1.0');
}
sub print_usage ()
{
print_help();
printf "\n\nUsage : check_cpu.pl [warn] [critical]\n";
}