Plugin Nagios pour vérifier la charge CPU

Ce 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 "nnUsage : check_cpu.pl [warn] [critical]n";
}

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *