PDA

View Full Version : Graphe espace disque via nrpe vide


abeatbowl
07-03-2008, 04:29 PM
Bonjour à tous,

Je rencontre un petit souci avec ma configuration Nagios/Centreon.

D'abord, les détails de la config :

Serveur : CentOS 4.6
Nagios : 3.0.2
Centreon : 2.0-b4
Nrpe : 2.12


Mon souci concerne l'affichage d'un graphe sur l'espace disque d'un autre serveur (qu'on appellera B).

J'ai installé nrpe sur B, le démon tourne sans problème. Voici ma les commandes déclarées dans nrpe.cfg
command[check_load]=/usr/local/nagios/libexec/check_load -w 15,10,5 -c 30,25,20
command[check_root]=/usr/local/nagios/libexec/check_disk -w 15% -c 7% -p /
command[check_usr]=/usr/local/nagios/libexec/check_disk -w 15% -c 7% -p /usr
command[check_var]=/usr/local/nagios/libexec/check_disk -w 15% -c 7% -p /var
command[check_home]=/usr/local/nagios/libexec/check_disk -w 15% -c 7% -p /home

J'arrive très bien a récupérer les données de ces commandes, j'affiche même le graphe de charge CPU sans problème mais pas moyen avec check_disk, le graphe reste vide.

http://img71.imageshack.us/img71/1146/capvr9.jpg


ce qui concerne l'utilisation de check_disk, voici la configuration du service check_disk_root qui fait appel au template check_disk_nrpe qui suit
define service{
host_name B
service_description check_disk_root
use check_disk_nrpe
check_command check_nrpe!check_root
parallelize_check 1
obsess_over_service 1
check_freshness 1
flap_detection_enabled 1
process_perf_data 1
retain_status_information 1
retain_nonstatus_information 1
}

define service{
name check_disk_nrpe
service_description check_disk_nrpe
use generic-service
check_command check_nrpe
normal_check_interval 5
retry_check_interval 1
check_period 24x7
process_perf_data 1
notification_interval 5
notification_options w,c
contact_groups Network_Administrators, Supervisors, System_Administrators
register 0
}

Voici la commande check_nrpe
define command{
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}


Visiblement, tout ça fonctionne bien puisque le service est UP dans centreon et j'ai même les bons résultats :
Status Information DISK OK - free space: / 7217 MB (89% inode=96%):
Performance Data /=825MB;7201;7878;0;8472


Après plusieurs heures d'analyses, j'ai réussi à réduire mon champ d'investigation, en effet, vu que le résultats rendu par la commande check_nrpe semble bon, il se pourrait que le problème vienne de rrd, voici donc l'erreur qui apparait dans centstorage.log :
1215090225 - ERROR while creating /var/lib/centreon/metrics/16.rrd : Invalid DS name
1215090225 - ERROR while tunning operation on /var/lib/centreon/metrics/16.rrd : opening '/var/lib/centreon/metrics/16.rrd': Aucun fichier ou répertoire de ce type
1215090225 - ERROR while updating /var/lib/centreon/metrics/16.rrd at 1215090205 -> 825 : opening '/var/lib/centreon/metrics/16.rrd': Aucun fichier ou répertoire de ce type


J'ai vérifié, il n'existe en effet aucun fichier /var/lib/centreon/metrics/16.rrd , les droits sur le dossier doivent être OK puisque les autres graphes fonctionnent :
[root@server ]# ll /var/lib/centreon/metrics/
total 13056
-rw-rw-r-- 1 nagios nagios 830176 jui 3 15:03 10.rrd
-rw-rw-r-- 1 nagios nagios 830176 jui 3 15:03 11.rrd
-rw-rw-r-- 1 nagios nagios 830176 jui 3 15:05 12.rrd
-rw-rw-r-- 1 nagios nagios 830176 jui 3 15:05 13.rrd
-rw-rw-r-- 1 nagios nagios 830176 jui 3 15:02 17.rrd
-rw-rw-r-- 1 nagios nagios 830176 jui 3 15:02 18.rrd
-rw-rw-r-- 1 nagios nagios 830176 jui 3 15:02 19.rrd
-rw-rw-r-- 1 nagios nagios 830176 jui 3 15:02 1.rrd
-rw-rw-r-- 1 nagios nagios 830176 jui 3 15:02 2.rrd
-rw-rw-r-- 1 nagios nagios 830176 jui 3 15:05 3.rrd
-rw-rw-r-- 1 nagios nagios 830176 jui 3 15:05 4.rrd
-rw-rw-r-- 1 nagios nagios 830176 jui 3 15:01 5.rrd
-rw-rw-r-- 1 nagios nagios 830176 jui 3 15:01 6.rrd
-rw-rw-r-- 1 nagios nagios 830176 jui 3 15:05 7.rrd
-rw-rw-r-- 1 nagios nagios 830176 jui 3 15:05 8.rrd
-rw-rw-r-- 1 nagios nagios 830176 jui 3 15:03 9.rrd


Voila donc ou j'en suis, je bloque la depuis un petit moment sans vraiment savoir comment m'en sortir.

Merci d'avance pour votre aide. N'hésitez pas à demander plus de précisions si j'ai oublié de mentionner quelque chose.

Guigui2607
07-04-2008, 09:24 AM
:roll: Hummm :roll:
Pas vraiment d'idée sur le coup là...
Et en essayant de régénérer les bases rrd dans >> Options > Oreon > CentreonDataStorage > Gérer ?

Je n'ai pas encore eu le temps de trop tester la v2... Mais sous le 1.4.x, ça me permettait de résoudre certains petits soucis de rrd

abeatbowl
07-06-2008, 04:11 PM
Je teste ça demain au boulot et je vous tiens au courant. Merci pour le conseil.

abeatbowl
07-07-2008, 11:23 AM
Après tests, c'est pas mieux, on dirait qu'il a pourtant bien les données :

http://img365.imageshack.us/img365/4837/cap2gl0.jpg

le #S# me parait bizarre mais je pas trop ce qu'il signifie.

DonKiShoot
07-09-2008, 10:25 AM
C'est un restant d'Oreon qui n'a jamais réussi à traiter les slash sans passer par cette vilaine astuce qui consiste à remplacer les / par des #S#
Je n'ai jamais compris pourquoi, surement par méconnaissance des caractères d'échappements qui aurait permis de garder un affichage cohérent plus facilement car là ils doivent sans cesse faire la gymnastique entre ce qui est en base "#S#" et ce qu'ils doivent afficher "/".
Ils vont finir par créer un parseur d'affichage :mrgreen:

abeatbowl
07-09-2008, 10:47 AM
C'est un restant d'Oreon qui n'a jamais réussi à traiter les slash sans passer par cette vilaine astuce qui consiste à remplacer les / par des #S#
Je n'ai jamais compris pourquoi, surement par méconnaissance des caractères d'échappements qui aurait permis de garder un affichage cohérent plus facilement car là ils doivent sans cesse faire la gymnastique entre ce qui est en base "#S#" et ce qu'ils doivent afficher "/".
Ils vont finir par créer un parseur d'affichage :mrgreen:

OK, donc le #S# est normal puisque ma métric est / (le nom de la partition).
Si je comprends bien, du coup, il faudrait que je modifie le plugin pour plus appeler ça "/" mais "root" ou autre chose.

DonKiShoot
07-09-2008, 09:48 PM
Je t'expliquais juste la petite histoire du #S#, je ne dis pas que cela est un bug même si à l'affichage ce n'est pas top :mrgreen:

abeatbowl
07-10-2008, 09:56 AM
Je t'expliquais juste la petite histoire du #S#, je ne dis pas que cela est un bug même si à l'affichage ce n'est pas top :mrgreen:

Je crois que je vais me rabattre sur un autre plugin et voir ce que donne.
Je vous tiens au courant.

abeatbowl
07-29-2008, 11:53 AM
Après une petite pause de quelques jours, je me suis repenché sur le problème.

J'ai réussi a m'en sortir en créant un script shell qui me renvoit autre chose que "/", le problème venait visiblement de la, centreon n'arrivait pas à interpréter le #S#.

Ca m'a permis d'homogénéiser mes graphes d'espaces disques windows et linux en ne renvoyant que le pourcentage d'espace disque utilisé et non pas la taille.

Si y'en a qui sont intéressés je pourrais le fournir le script que j'ai fait.

Roeller
08-04-2008, 07:34 PM
Hello,

I have the same problem, using NRPE, ckeck_disk and Nagios 3.03/Centreon2.0b6.
I trie to translate this Topic using Google Translate but i don't understand.

Can someone just put one or two lines in English ?
Did i understand you have a Shell script to fix it.. ? Do you have it for me ?

Thank you very much in advance! (i really do my best to understand/translate the French but i only speak Dutch (Pays-Bas) and English)

Ronan_
08-05-2008, 10:05 AM
abeatbowl just says he could give the script to people interested in it, so I think he might have it for you :)
abeatbowl ça serait possible que tu fournisses le script à Roeller?

abeatbowl
08-05-2008, 07:11 PM
Je suis en congés actuellement, je le posterais dès mon retour avec quelques explications en anglais (dans la limite de faibles capacités :) ).

Roeller
08-06-2008, 08:13 PM
Hello,

If you have the script or can mail it to me i would be very happy and thankfull!

Thanks in advance!

Ronan_
08-07-2008, 10:29 AM
He's in holidays, he'll post it when he's back

abeatbowl
08-12-2008, 03:57 PM
Here is the script, it works well on my configuration but maybe you'll have to adapt it to yours.

I use it with nrpe, the command line I put in my nrpe.cfg is :
command[check_root]=/usr/local/nagios/libexec/check_disk -w 90% -c 95% -p /

In centreon, I have a command named check_nrpe_disk_unix configured like this :
$USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$

I use it in a service I called Disk root unix with the arguments !check_root

If someone find some bugs in it, feel free to correct it and put it back here ;)
#!/bin/sh
PROGNAME=`basename $0`

# Exit codes
STATE_OK=0
STATE_WARNING=1
STATE_CRITICAL=2
STATE_UNKNOWN=3

CUT=`which cut`
if [ "$?" != "0" ]; then
echo "Executable de cut introuvable !"
exitstatus=$STATE_WARNING
exit $exitstatus
fi

TAIL=`which tail`
if [ "$?" != "0" ]; then
echo "Executable de tail introuvable !"
exitstatus=$STATE_WARNING
exit $exitstatus
fi

AWK=`which awk`
if [ "$?" != "0" ]; then
echo "Executable de awk introuvable !"
exitstatus=$STATE_WARNING
exit $exitstatus
fi

DF=`which df`
if [ "$?" != "0" ]; then
echo "Executable de df introuvable !"
exitstatus=$STATE_WARNING
exit $exitstatus
fi

print_usage() {
echo "Usage: $PROGNAME -p|--path <path> [-w|--warning <warn>] [-c|--critical <crit>]"
echo "Usage: $PROGNAME -h|--help"
echo ""
echo "<warn> and <crit> must be expressed in % (used space)"
echo "If -p is not specified, / will be used"
echo ""
echo "Example :"
echo "$PROGNAME -p / -w 90% -c 95%"
}

if [ $# -lt 1 ]; then
print_usage
exit $STATE_UNKNOWN
fi

WARN=""
CRIT=""
PATH="/"
exitstatus=$STATE_WARNING #default
while test -n "$1"; do
case "$1" in
--help)
print_help
exit $STATE_OK
;;
-h)
print_help
exit $STATE_OK
;;
--path)
PATH=$2
shift
;;
-p)
PATH=$2
shift
;;
--warning)
WARN=$2
shift
;;
-w)
WARN=$2
shift
;;
--critical)
CRIT=$2
shift
;;
-c)
CRIT=$2
shift
;;
*)
echo "Unknown argument: $1"
print_usage
exit $STATE_UNKNOWN
;;
esac
shift
done

CRIT=`echo $CRIT | $CUT -d '%' -f 1`
WARN=`echo $WARN | $CUT -d '%' -f 1`

# On cherche le pourcentage occupé de la partition
PERCENT_USED=`$DF -kP $PATH | $TAIL -n 1 | $AWK '{print $5}' | $CUT -d '%' -f 1`
PATH=`$DF -kP $PATH | $TAIL -n 1 | $AWK '{print $6}'`
if [ "$PATH" = "/" ]; then
LETTER_PATH=root
else
LETTER_PATH=`echo $PATH | $CUT -d '/' -f 2`
fi


RESULT="OK"
exitstatus=$STATE_OK
if [ "$WARN" != "" ]; then
if [ $PERCENT_USED -ge $WARN ]; then
RESULT="WARNING"
exitstatus=$STATE_WARNING
fi
fi

if [ "$CRIT" != "" ]; then
if [ $PERCENT_USED -ge $CRIT ]; then
RESULT="CRITICAL"
exitstatus=$STATE_CRITICAL
fi
fi

if [ "$WARN" = "" ] || [ "$CRIT" = "" ]; then
PERFDATA="\"$LETTER_PATH\"=${PERCENT_USED}%;;"
else
PERFDATA="\"$LETTER_PATH\"=${PERCENT_USED}%;${WARN}%;${CRIT}%"
fi
RESULT="DISK $RESULT - percent used: $PATH $PERCENT_USED% | $PERFDATA"

echo "$RESULT"
exit $exitstatus

pye
12-10-2008, 06:53 PM
Après une petite pause de quelques jours, je me suis repenché sur le problème.

J'ai réussi a m'en sortir en créant un script shell qui me renvoit autre chose que "/", le problème venait visiblement de la, centreon n'arrivait pas à interpréter le #S#.

Ca m'a permis d'homogénéiser mes graphes d'espaces disques windows et linux en ne renvoyant que le pourcentage d'espace disque utilisé et non pas la taille.

Si y'en a qui sont intéressés je pourrais le fournir le script que j'ai fait.

Méthode alternative, pour ceux qui souhaiteraient garder la sémantique du check_disk original : utiliser un wraper qui intercepte le /, le temps que le pb soit fixé dans Centreon.

C'est la méthode que j'emploie dans ma société, et que je propose ici.

Créer un script check_disk2 ou subdir/check_disk avec le texte ci-dessous, sans oublier de fixer le chemin PLUGPATH (nécessaire si le wraper ne se trouve pas dans le répertoire standard, ce qui est mon cas ; dans le cas contraire, supprimer simplement " $PLUGPATH/" en ligne 8).

#!/bin/sh
# check_disk wrapper for use with Centreon
# 2008 PYE
PLUGPATH="/usr/lib64/nagios/plugins"
SED="/bin/sed"
set -o pipefail
$PLUGPATH/check_disk $* | $SED 's/|/|\n/' | $SED '/free space/!s/\//_/g;s/ _=/ root=/g' | $SED 'N;s/\n//'
exit $?
#Exemples d'utilisation :

./check_disk -w 5% -c 2% -p /mnt/part
DISK CRITICAL - free space: /mnt/part 25154 MB (2% inode=97%);| _mnt_part=894920MB;883042;910927;0;929518./check_disk -w 5% -c 2% -p /
DISK OK - free space: / 1442 MB (38% inode=43%);| root=2301MB;3747;3866;0;3945Comme on le voit, les "/ "sont remplacés par des "_" uniquement dans la partie perfdata, et la partition "/" est désignée par "root" le cas échéant.

English: This is an alternate method, using a wraper script to the original check_disk script. Save the code part above in a new script named check_disk2 or whatever and fix the PLUGPATH variable as necessary.


Mes 2 centimes...