Retourner aux forums || Retourner au forum Astuces.divers
Astuces.divers : [Terminal] Test CPU dans Nagios
Posté par Benjamin () le 21 décembre 2003
#!/usr/bin/perl
#
#
# check_cpu.pl [warn] [critical]
# Nagios script to get the cpu usage from procinfo
#
# Changes and Modification
# ========================
# 07-Sept-2002 - Benjamin Jakubowski
# Created from check_cpu.pl for LDAP Serveur use 100% CPU
sub print_help ();
sub print_usage ();
$PROGNAME = "check_cpu";
if ( @ARGV[0] eq "" || @ARGV[1] eq "" )
{
print_usage ();
exit 0;
}
@toto = `procinfo | grep idle | awk \'{print \$5}\'`;
$warning = @ARGV[0];
$critik = @ARGV[1];
$STATE_CRITICAL = 2;
$STATE_OK = 0;
$STATE_WARNING = 1;
@cpu = 100-@toto[0];
if ( $cpu[0] >= $critik )
{
printf "CRITICAL : use @cpu%";
printf " idle : @toto";
exit $STATE_CRITICAL
;;
}
if (($cpu[0] < $critik)&&($cpu[0] < $warning))
{
printf "OK : use @cpu%";
printf " idle : @toto\n";
exit $STATE_OK
;;
}
if (($cpu[0] >= $warning)&&($cpu[0] < $critik))
{
printf "WARNING : use @cpu%";
printf " idle : @toto\n";
exit $STATE_WARNING
;;
}
sub print_help ()
{
print($PROGNAME,': 1.0');
printf "\n";
print "Copyright (c) 2002 Benjamin Jakubowski \
Perl Check CPU Usage plugin for Nagios \
";
}
sub print_usage ()
{
print_help();
printf "\n\nUsage : check_cpu.pl [warn] [critical]\n
warn, INTEGER
Number of CPU Space at wich a warning will be generated ( No Default )
critical, INTEGER
Number of CPU Space at wich a critical will be generated ( No Default )\n";
}
PS : Bon c'est sur exécuter une commande système dans Perl c'est pas nickel mais bon ça marche !!!> Lire le message (2 commentaires, moyenne: 2).
Re: Test CPU dans Nagios
PS : Bon c'est sur exécuter une commande système dans Perl c'est pas nickel mais bon ça marche !!!
Au contraire c'est en partie fait pour ça.
-
[^]Re: Test CPU dans Nagios
Posté par nodens (page perso, ) le 10/04/2004 à 01:14. (lien). Évalué à 3.D'accord pour procinfo, c'est encore la méthode la plus simple et la plus rapide.
Par contre, grep et awk... ça c'est dommage, surtout que perl est fait pour gérer les chaines facilement et efficacement. C'est pas tellement pour la performance, c'est pour le principe ;)
(je passe sur le choix des noms de variables, perso je déteste les variables n'ayant pas un nom renseignant sur leur utilité, mais bon, c'est un choix)
D'autre part, pourquoi toto et cpu sont-ils des tableaux ? il n'y a jamais qu'une seule valeur... et je n'ai pas vu (mais j'ai pe mal regardé) d'endroit ou un contexte de liste était nécessaire...
Bon, comme critiquer sans rien proposer c'est Mal©, voici un patch sans fork autre que l'appel à procinfo, et 2/3 autres modifs...
(la prochaine fois, la critique ce sera l'absence de licence quelconque et le fait que use strict; c'est Bien©... mais là il est tard et j'ai la flemme... sans compted que j'utilise plutôt check_load, moi) ;)
allez, le patch promis :
--- check_cpu.pl.bak 2004-04-10 03:10:54.000000000 +0200
+++ check_cpu.pl 2004-04-10 03:09:56.000000000 +0200
@@ -8,6 +8,9 @@
# ========================
# 07-Sept-2002 - Benjamin Jakubowski
# Created from check_cpu.pl for LDAP Serveur use 100% CPU
+#
+# 10-Apr-2004 - Clement Hermann
+# removing grep and awk call in @toto, @cpu is now $cpu...
sub print_help ();
sub print_usage ();
@@ -17,33 +20,36 @@
print_usage ();
exit 0;
}
-@toto = `procinfo | grep idle | awk \ '{print \$5}\'`;
+@toto = grep (/idle/, `procinfo`);
+chomp $toto[0];
+$toto[0] =~ s/.*\s+([\d\.]+)%.*/$1/;
+print "$toto[0]\n";
$warning = @ARGV[0];
$critik = @ARGV[1];
$STATE_CRITICAL = 2;
$STATE_OK = 0;
$STATE_WARNING = 1;
-@cpu = 100-@toto[0];
-if ( $cpu[0] >= $critik )
+$cpu = 100-$toto[0];
+if ( $cpu >= $critik )
{
- printf "CRITICAL : use @cpu%";
- printf " idle : @toto";
+ printf "CRITICAL : use $cpu%";
+ printf " idle : $toto[0]%";
exit $STATE_CRITICAL
;;
}
-if (($cpu[0] < $critik)&&($cpu[0] < $warning))
+if (($cpu < $critik)&&($cpu < $warning))
{
- printf "OK : use @cpu%";
- printf " idle : @toto\n";
+ printf "OK : use $cpu%";
+ printf " idle : $toto[0]%\n";
exit $STATE_OK
;;
}
-if (($cpu[0] >= $warning)&&($cpu[0] < $critik))
+if (($cpu >= $warning)&&($cpu < $critik))
{
- printf "WARNING : use @cpu%";
- printf " idle : @toto\n";
+ printf "WARNING : use $cpu%";
+ printf " idle : $toto[0]%\n";
exit $STATE_WARNING
;;
}--
Clément Hermann (nodens)
- "L'air pur ? c'est pas en RL, ça ? c'est pas hors charte ?"
Jean in L'Histoire des Pingouins, http://tnemeth.free.fr/fmbl/linuxsf/
GPG : pgp.mit.edu - 0xEBD1399D
Revenir en haut de page || Retourner aux forums || Retourner au forum Astuces.divers



Cette discussion est archivée, il n'est plus possible de laisser des commentaires.
Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.