|
NAMEPOE::Component::RRDTool - POE interface to Tobias Oetiker's RRDtool SYNOPSIS use POE qw( Component::RRDTool );
my $alias = 'controller';
my @create_args = qw(
test.rrd
--start now
--step 30
DS:X:GAUGE:60:0:10
RRA:MAX:0.5:1:1
);
# start up the rrdtool component
POE::Component::RRDTool->new(
Alias => $alias,
RRDtool => '/usr/local/bin/rrdtool',
ErrorEvent => 'rrd_error',
StatusEvent=> 'rrd_status',
);
POE::Session->create(
inline_states => {
_start => sub {
# set a session alias so that we can receive events from RRDtool
$_[KERNEL]->alias_set($_[ARG0]);
# create a round robin database
$_[KERNEL]->post( 'rrdtool', 'create', @create_args );
# stop the rrdtool component
$_[KERNEL]->post( 'rrdtool', 'stop' );
},
'rrd_error' => sub {
print STDERR "ERROR: " . $_[ARG0] . "\n";
},
'rrd_status' => sub {
my ($user, $system, $real) = @_[ARG0 .. ARG2];
print "u: $user\ts: $system\tr: $real\n";
},
},
args => [ $alias ],
);
$poe_kernel->run();
DESCRIPTIONRRDtool refers to round robin database tool. Round robin databases have a fixed number of data points in them and contain a pointer to the current element. Since the databases have a fixed number of data points the database size doesn't change after creation. RRDtool allows you to define a set of archives which consolidate the primary data points in higher granularity. RRDtool is specialized for time series data and can be used to create RRD files, update RRDs, retreive data from RRDs, and generate graphs from the databases. This module provides a POE wrapper around the rrdtool command line interface. METHODS
EVENTSPOE::Component::RRDTool events take the same parameters as their rrdtool counterpart. Use the RRDtool manual as a reference for rrdtool command parameters. The following events can be posted to an RRDtool component.
CALLBACKSThe callbacks listed below are sent by the RRDTool component to the session alias passed to it's constructor. You can provide event handlers for them in the controlling session's constructor. However it is not required to handle any of the callbacks.
AUTHORTodd Caine <todd@pobox.com> SEE ALSOAn RRDtool Tutorial http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/tutorial/rrdtutorial.html The Main RRDtool Website http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/index.html The RRDtool Manual http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/manual/index.html TROUBLESHOOTINGThe rrdtool command line utility does not support the xport subcommand until version 1.0.38. If you try to use the xport event using an older version of rrdtool you will receive an rrdtool usage message as an rrd_error callback. BUGSThe rrdtool command line utility is being controlled by POE::Wheel::Run. I'm increasing the block size on the POE::Driver::SysRW instance used for the rrdtool output so that each command generates only one event. This should probably be fixed by using the default block size and a custom filter instead. If you notice that more than one event is being generated from a single rrdtool command you may need to increase the blocksize used. COPYRIGHT AND LICENSECopyright (c) 2003 Todd Caine. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
|