PDA

View Full Version : HELP RRDTOOL m'en veut. Plugin perso


jigot
05-30-2006, 11:18 AM
Bonjour,

Cela fait un moment que je bataille pour faire fonctionner un plugin pourtant très simple dans le principe.

Il s'agit de checker une imprimante snmp et de grapher le nombre de pages imprimées au total et depuis le dernier check.
J'ai donc deux courbes : La première ne fait que s'incrémenter La deuxième doit juste afficher le nombre depuis le dernier check c'est là que ca marche pas

J'arrive à afficher juste la deuxième et les deux en même temps y'a que la première qui s'affiche.

Si quelq'un à une idée ou voit une erreur, je laisse mon script dans le coins ;)

DonKiShoot
05-30-2006, 11:24 AM
c un probleme de type de DS je pense, voit du cote de counter et de gauge :wink:

jigot
05-30-2006, 11:38 AM
Ben justement, le DS qui semble le mieux convenir c'est 'DERIVE'

DERIVE
will store the derivative of the line going from the last to the current value of the data source. This can be useful for gauges, for example, to measure the rate of people entering or leaving a room. Internally, derive works exactly like COUNTER but without overflow checks. So if your counter does not reset at 32 or 64 bit you might want to use DERIVE and combine it with a MIN value of 0.

Si j'ai bien comprint il fait la diférence entre la mesure et la précédente.

Mais le soucis c'est que d'après ce que j'ai vue dans le oreon.pm y'a pas de valeur LAST de stocké :

RRA:AVERAGE | MIN | MAX | LAST:xff:steps:row 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;
}
}

Le problème ne viendrait il pas de là?

jigot
05-30-2006, 12:29 PM
Voilà le résultat que j'obtient avec une seule impression :
http://jigot3.free.fr/oreon/graph_pagecount.gif
Ce résultat et produit en utilisant un DS : 'DERIVE'
...
create_rrd($rrd,1,$start,300,"U","U","DERIVE");
...
update_rrd($rrd,$start,$check_result);
...$check_result est la valeur qui s'incrémente(nombre de pages imprimées).

DonKiShoot
05-30-2006, 04:56 PM
Tout semble correct, j'ai deja eu des graphs de ce style que je ne laissais pas vivre assez longtemps (il fallait plusieurs événements pour avoir une coube valable).

J'aurais mis counter car dérive me semble bien moins souvent utilisé.
En même temps je me mélange les pinceaux entre tout ces types :D
Je n'aurais pas hésité à créer ma rrd en lui fournissant un min et un max dans un permier temps.

Sinon je ne vois rien d'anormal.