View Full Version : Bug avec les graphes traffic
OMFan
29th June 2006, 09:28
Salut à tous,
J'utilise en prod depuis un petit moment Oreon 1.3RC1 avec Nagios 2.3.1 et en fait je viens de m'apercevoir d'un bug dans les graphiques.
Ainsi, lorsque j'utilise le plugin check_graph_traffic_rrd, j'ai l'impression que l'historique des données récoltées ne dépasse pas 7 jours car lorsque je regarde le graphe, je n'ai pas de courbe au dela de 7 jours.
Pour mieux comprendre, je vous joins la capture d'écran d'un graphe ainsi que la configuration associée.
Si qq'un aurait une idée d'où peut venir le problème, ça serait sympa.
Merci par avance.
A+.
DonKiShoot
29th June 2006, 10:21
Regarde dans ton script la définittion de la base rrd.
Si ca se trouve elle est de 7 jours.
julio
29th June 2006, 10:40
la il faut que tu modifie ton rrd_step en plus car tu es cadencé toutes les minutes alors que de base, le plugin est cadencé toutes les 5 min. :wink:
OMFan
29th June 2006, 14:12
Merci pour vos réponses rapides ( désolé si je n'y ai pas répondu avant mais j'étais en train de présenter Oreon en réunion 8) ).
Concernant le script, j'ai édité le script check_graph_traffic_rrd.pl et je n'ai rien trouvé concernant la déf de la base RRD.
De plus, pour le step, si j'ai mis en place un step de 1 min, c'est que le service est checké toutes les minutes ( si je ne fais pas ça, j'ai des trous sur les graphes ).
Donc, je suis un peu bloqué et je ne sais pas quoi faire pour corriger ce pb.
Merci par avance pour vos lumières.
A+.
DonKiShoot
29th June 2006, 14:35
il faut que tu modifie dans le code du check le nombre de step total que contiendra ta base si tu veux un historique sur un an 365*24*60 puis tu supprime l'ancienne base.
julio
29th June 2006, 18:43
dans ta command pour le traffic rajoute ca (pas a la fin), au milieu on va dire
--rrd_step 60
ca devrait etre bon, mais va falloir supprimer les anciennes bases, ou regarder sur la doc rrdtool, comment modifier ces valeurs... mais je doute que ca soit possible.
OMFan
30th June 2006, 09:11
Merci pour vos réponses.
il faut que tu modifie dans le code du check le nombre de step total que contiendra ta base si tu veux un historique sur un an 365*24*60 puis tu supprime l'ancienne base.
J'ai réédité le script check_graph_traffic_rrd.pl et je ne trouve pas du tout l'endroit où on peut modifier ce dont tu parles.
dans ta command pour le traffic rajoute ca (pas a la fin), au milieu on va dire
--rrd_step 60
ca devrait etre bon, mais va falloir supprimer les anciennes bases, ou regarder sur la doc rrdtool, comment modifier ces valeurs... mais je doute que ca soit possible.
Ce dont tu parles julio, je l'ai déja fait.
Voici ma check_command associée :
$USER1$/check_graph_traffic_rrd.pl -H $HOSTADDRESS$ -i $ARG1$ -w $ARG2$ -c $ARG3$ -C public -v 1 -T $ARG4$ --rrd_step $ARG5$ -g -S $ARG6$
Donc je bloque complètement.
Help me please !! :) :)
DonKiShoot
30th June 2006, 10:29
Merci pour vos réponses.
il faut que tu modifie dans le code du check le nombre de step total que contiendra ta base si tu veux un historique sur un an 365*24*60 puis tu supprime l'ancienne base.
J'ai réédité le script check_graph_traffic_rrd.pl et je ne trouve pas du tout l'endroit où on peut modifier ce dont tu parles.
Ba c'est au moment du create de la base il doit y avoir un parametre à 86400 quelquechose comme ca et c le nombre d echantillon total a stocker :wink:
OMFan
30th June 2006, 10:36
Ba c'est au moment du create de la base il doit y avoir un parametre à 86400 quelquechose comme ca et c le nombre d echantillon total a stocker :wink:
Bein j'ai scrupuleusement regardé le plugin et je n'ai rien trouvé du tout.
Voilà à mon avis ce qui concerne la création de la base dans le plugin
if ($_ =~ m/Counter(\d+)/) { $bitcounter = $1; } else { $bitcounter = 32; }
$bitcounter = 2 ** $bitcounter;
create_rrd ($rrd,2,$start,$rrdstep,0,$bitcounter,"COUNTER");
Donc je comprends pas trop voire pas du tout :)
julio
30th June 2006, 10:52
$rrdstep -> c ca qui te donne le step que tu dois avoir entre deux remontées de données.... donc dans ta commande passe le --rrd_step...
mais pour que ca prenne effet il faut que tu efface ta base....
DonKiShoot
30th June 2006, 11:48
C'est oreon.pm qui n'est pas flexible.
Le plugin te permet de modifier le step mais la fonction create_rrd ne le prend pas en compte dans le nombre totale d'echantillon stocker en base rrd.
Ce qui veut dire que tu peux checker toutes les minutes mais tu divises par 5 ton historique dans le temps.
J'avais déja discuter de ça il y a fort longtemps avec wistof.
Il devrait créer une règle de calcul qui en fonction du step fournit par l'utilisateur calcul le nombre total d'echantillon pour que l'on puisse dans tout les cas grapher sur un an.
Et top du top, laisser libre à l'utilisateur de choisir ce paramètre si il souhaite un historique sur 2 voir 3 ans :wink:
Bien sur ça demande un paramètre supplémentaire en ligne de commande mais bon ca coute rien ;)
Par exemple "-T 36" (durée total 36 mois soit 3ans)
Comme le step est en seconde :
3600/$step (nombre d'echantillon dans une heure)
*24 (=nombre d'echantillon par jour)
*30 (nombre moyen de jour dans le mois soit nombre d'echantillon dans un mois)
*$total_mois (=nombre total d'echantillons/step pour X mois)
Et voila une base qui stockera X mois de données avec le step désiré
:wink:
OMFan
30th June 2006, 15:03
$rrdstep -> c ca qui te donne le step que tu dois avoir entre deux remontées de données.... donc dans ta commande passe le --rrd_step...
mais pour que ca prenne effet il faut que tu efface ta base....
Merci pour ta réponse mais j'ai déja effectué cela, car en fait, j'ai des services checkés toutes les min et sans modifier le step, j'avais des trous dans les graphes.
C'est oreon.pm qui n'est pas flexible.
Le plugin te permet de modifier le step mais la fonction create_rrd ne le prend pas en compte dans le nombre totale d'echantillon stocker en base rrd.
Ce qui veut dire que tu peux checker toutes les minutes mais tu divises par 5 ton historique dans le temps.
J'avais déja discuter de ça il y a fort longtemps avec wistof.
Il devrait créer une règle de calcul qui en fonction du step fournit par l'utilisateur calcul le nombre total d'echantillon pour que l'on puisse dans tout les cas grapher sur un an.
Et top du top, laisser libre à l'utilisateur de choisir ce paramètre si il souhaite un historique sur 2 voir 3 ans :wink:
Bien sur ça demande un paramètre supplémentaire en ligne de commande mais bon ca coute rien ;)
Par exemple "-T 36" (durée total 36 mois soit 3ans)
Comme le step est en seconde :
3600/$step (nombre d'echantillon dans une heure)
*24 (=nombre d'echantillon par jour)
*30 (nombre moyen de jour dans le mois soit nombre d'echantillon dans un mois)
*$total_mois (=nombre total d'echantillons/step pour X mois)
Et voila une base qui stockera X mois de données avec le step désiré
:wink:
Ton explication est super claire, mais le pb est que je ne connais strictement rien en Perl !!
Donc comment puis je faire ?
DonKiShoot
30th June 2006, 15:19
Ba pour toi tout fonctionne avec un step à 60.
C juste que tu vas avoir un historique un peu cours :
86400 * 60 / 3600 / 24 = 2 mois
Après c'est à toi de voir si tu veux modifier dans oreon.pm la taille total de tes bases par défaut.
OMFan
30th June 2006, 15:54
Pour te répondre, j'aimerai bien effectivement augmenter la taille totale des bases.
Pour cela, j'ai édité le script oreon.pm et j'ai, je pense, réussi à identifier la portion de code où modifier ce paramètre :
sub create_rrd($$$$$$$)
{
my @rrd_arg;
my ($rrd, $nb_ds ,$start, $step, $min, $max, $type) = @_;
$nb_ds = 1 unless($nb_ds);
$start = time unless($start);
$step = 300 unless($step);
$min = "U" unless($min);
$max = "U" unless($max);
$type = "GAUGE" unless($type);
my $ERROR = RRDs::error;
@rrd_arg=($rrd,
"--start",
$start-1,
"--step",
$step);
for ($i = 0; $i < $nb_ds; $i++) {
push(@rrd_arg,"DS:".$ds[$i].":$type:".($step * 2).":".$min.":".$max);
}
push(@rrd_arg,"RRA:AVERAGE:0.5:1:8640",
"RRA:MIN:0.5:12:8640",
"RRA:MAX:0.5:12:8640");
RRDs::create (@rrd_arg);
$ERROR = RRDs::error;
if ($ERROR) {
print "unable to create '$rrd' : $ERROR\n" ;
exit 3;
}
}
Etant donné mes compétences limitées en Perl, je ne suis pas certain de l'endroit précis où faire les modifications, et en plus je ne sais pas réellement quoi mettre sachant que je souhaiterais un historique d'un an.
DonKiShoot
30th June 2006, 16:05
si 8640 * 60 / 3600 / 24 = 2 mois
alors pour un an comme on dit depuis le début
si un an c'est 8640 step pour des steps de 5 mn
alors pour un an avec des steps de 1 mn c'est 8640*5=43200
Mais bon moi j'aime bien quelquechose de précis car 8640 n'est pas un bon chiffre à la base et wistof l'a conservé "le vilain" :wink:
Disons 365j*24h*60mn = 525600
Tu remplaces 8640 par 525600, tu supprimes ta base et c fini !
Par contre tout tes autres check_graph que tu vas créer hériterons de la même taille de base rrd.
Au pire si le step est de 5mn pour eux et bien il stockerons 5 ans de donnée :D
J'éspère ne pas avoir fait d'erreurs dans mes calculs :wink: