NAME
Ganglia::Gmetric::PP - Pure Perl emitter/parser of Ganglia gmetric monitoring packets
SYNOPSIS
my $gmetric = Ganglia::Gmetric::PP->new(host => 'localhost', port => 8649);
$gmetric->send($type, $name, $value, $units, $slope, $tmax, $dmax);
DESCRIPTION
This module constructs Ganglia packets in the manner of the gmetric program and sends them via UDP to a gmond. Additionally it can receive and/or parse gmetric packets which is useful for constructing proxies. Though written in pure Perl with no non-core dependencies, it tries to be fast.
FUNCTIONS
$gmetric = Ganglia::Gmetric::PP->new(host => $host, port => $port)
Constructs a new object which sends gmetric packets to the specified
host
and UDPport
. If omitted, they default to localhost and 8649, respectively.$gmond = Ganglia::Gmetric::PP->new(listen_host => $host, listen_port => $port)
Constructs a new object which receives gmetric packets (e.g. in a gmond replacement). If the $gmetric will be used for receiving packets,
listen_host
andlisten_port
may be specified as well.$gmetric->send($type, $name, $value, $units, $slope, $tmax, $dmax)
Sends a Ganglia message. The parameters are:
$type
The type of data being sent. Must be one of these importable constants:
GANGLIA_VALUE_STRING
GANGLIA_VALUE_UNSIGNED_CHAR
GANGLIA_VALUE_CHAR
GANGLIA_VALUE_UNSIGNED_SHORT
GANGLIA_VALUE_SHORT
GANGLIA_VALUE_UNSIGNED_INT
GANGLIA_VALUE_INT
GANGLIA_VALUE_FLOAT
GANGLIA_VALUE_DOUBLE
$name
The name of the metric.
$value
The current value of the metric.
$units
A string describing the units of measure for the metric.
$slope
A description of how the metric tends to change over time. Must be one of these importable constants:
GANGLIA_SLOPE_ZERO
Data is fixed, mostly unchanging.
GANGLIA_SLOPE_POSITIVE
Value is always increasing (counter).
GANGLIA_SLOPE_NEGATIVE
Value is always decreasing.
GANGLIA_SLOPE_BOTH
Value can be anything.
$tmax
The maximum time in seconds between gmetric calls.
$dmax
The lifetime in seconds of this metric.
@metric = $gmetric->receive()
Waits for a single gmetric packet on the UDP listen port and returns the parsed metric (see
parse
).@metric = Ganglia::Gmetric::PP->parse($packet_data)
Parses a gmetric packet, which is typically received by a UDP server.
The elements returned match the arguments to
send
:($type, $name, $value, $units, $slope, $tmax, $dmax) = @metric;
This function may die if the given data does not resemble a gmetric packet.
AUTHOR
Adam Thomason, <athomason@cpan.org<gt>
COPYRIGHT AND LICENSE
Copyright (C) 2007-2009 by Six Apart, <cpan@sixapart.com>
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.6 or, at your option, any later version of Perl 5 you may have available.