Statsd (Object Oriented) client library for PHP

v1.1 2019-06-11 12:03 UTC


Build Status Latest Stable Version Total Downloads Coverage Status

statsd-php-client is an Open Source, and Object Oriented Client for etsy/statsd written in php

Install with composer

composer require adgoal/statsd-php-client

Simple Usage

use Liuggio\StatsdClient\Service\StatsdService;

$statsd = new StatsdService();

$statsd->timing('usageTime', 100);
$statsd->gauge('gaugor', 333);
$statsd->set('uniques', 765);


Why use this library instead the statsd/php-example?

  • You are wise.

  • You could also use monolog to redirect data to statsd

  • This library is tested.

  • This library optimizes the messages to send, compressing multiple messages in individual UDP packets.

  • This library pays attention to the maximum length of the UDP.

  • This library is made by Objects not array, but it also accepts array.

  • You do want to debug the packets, and using SysLogSender the packets will be logged in your syslog log (on debian-like distro: tail -f /var/log/syslog)

Advanced Instantiation

use Liuggio\StatsdClient\StatsdClient,
// use Liuggio\StatsdClient\Sender\SysLogSender;

$sender = new SocketSender(/*'localhost', 8126, 'udp'*/);
// $sender = new SysLogSender(); // enabling this, the packet will not send over the socket

$client  = new StatsdClient($sender);
$factory = new StatsdDataFactory(Liuggio\StatsdClient\Entity\StatsdData::class);
$service = new StatsdService($client, $factory);

// create the metrics with the service
$service->timing('usageTime', 100);


// send the data to statsd

Usage with Monolog

use Liuggio\StatsdClient\StatsdClient,
// use Liuggio\StatsdClient\Sender\SysLogSender;

use Monolog\Logger;
use Liuggio\StatsdClient\Monolog\Handler\StatsDHandler;

$sender = new SocketSender(/*'localhost', 8126, 'udp'*/);
// $sender = new SysLogSender(); // enabling this, the packet will not send over the socket
$client = new StatsdClient($sender);
$factory = new StatsdDataFactory();

$logger = new Logger('my_logger');
$logger->pushHandler(new StatsDHandler($client, $factory, 'prefix', Logger::DEBUG));

$logger->addInfo('My logger is now ready');

the output will be: prefix.my_logger.INFO.My-logger:1|c" 36 Bytes

Short Theory

Easily Install StatSD and Graphite

In order to try this application monitor you have to install etsy/statsd and Graphite

see this blog post to install it with vagrant Easy install statsd graphite.


StatsD is a simple daemon for easy stats aggregation


Graphite is a Scalable Realtime Graphing

The Client sends data with UDP (faster)


Active contribution and patches are very welcome. To keep things in shape we have quite a bunch of unit tests. If you're submitting pull requests please make sure that they are still passing and if you add functionality please take a look at the coverage as well it should be pretty high :)

  • First fork or clone the repository
git clone git://
cd statsd-php-client
  • Install vendors:
composer.phar install
  • This will give you proper results:
phpunit --coverage-html reports

Core developers:

This project is actively mantained by David Moreau AKA @dav-m85 and @liuggio