NAME
Net::Statsd - Perl client for Etsy's statsd daemon
SYNOPSIS
# Configure where to send events
# That's where your statsd daemon is listening.
$Net::Statsd::HOST = 'localhost'; # Default
$Net::Statsd::PORT = 8125; # Default
#
# Keep track of events as counters
#
Net::Statsd::increment('site.logins');
Net::Statsd::increment('database.connects');
#
# Log timing of events, ex. db queries
#
use Time::HiRes;
my $start_time = [ Time::HiRes::gettimeofday ];
# do the complex database query
Net::Statsd::timing(
'database.complexquery',
Time::HiRes::tv_interval($start_time)
);
DESCRIPTION
This module implement a UDP client for the statsd statistics collector daemon in use at Etsy (http://www.etsy.com).
You want to use this module to track statistics in your Perl application, such as how many times a certain event occurs (user logins in a web application, or database queries issued), or you want to time and then graph how long certain events take, like database queries execution time or time to download a certain file, etc...
If you're uncertain whether you'd want to use this module or statsd, then you can read some background information here:
http://codeascraft.etsy.com/2011/02/15/measure-anything-measure-everything/
The github repository for statsd is:
http://github.com/etsy/statsd
By default the client will try to send statistic metrics to localhost:8125
, but you can change the default hostname and port with:
$Net::Statsd::HOST = 'your.statsd.hostname.net';
$Net::Statsd::PORT = 9999;
just after including the Net::Statsd
module.
FUNCTIONS
timing($stat, $time, $sample_rate = 1)
Log timing information. Time is assumed to be in milliseconds (ms).
Net::Statsd::timing('some.time', 500);
increment($stats, $sample_rate=1)
Increments one or more stats counters
# +1 on 'some.int'
Net::Statsd::increment('some.int');
# 0.5 = 50% sampling
Net::Statsd::increment('some.int', 0.5);
To increment more than one counter at a time, you can pass an array reference:
Net::Statsd::increment(['grue.dinners', 'room.lamps'], 1);
You can also use "inc()" instead of "increment()" to type less.
decrement($stats, $sample_rate=1)
Same as increment, but decrements. Yay.
Net::Statsd::decrement('some.int')
You can also use "dec()" instead of "decrement()" to type less.
update_stats($stats, $delta=1, $sample_rate=1)
Updates one or more stats counters by arbitrary amounts
Net::Statsd::update_stats('some.int', 10)
equivalent to:
Net::Statsd::update_stats('some.int', 10, 1)
A sampling rate less than 1 means only update the stats every x number of times (0.1 = 10% of the times).
send(\%data, $sample_rate=1)
Squirt the metrics over UDP.
Net::Statsd::send({ 'some.int' => 1 });