StatsD PHP Library
, (*1)
A library for working with StatsD in PHP., (*2)
Install
Via Composer:, (*3)
composer require league/statsd
To use the Statsd Service Provider, you must register the provider when bootstrapping your Laravel application., (*4)
Usage
Configuring
$statsd = new League\StatsD\Client();
$statsd->configure([
'host' => '127.0.0.1',
'port' => 8125,
'namespace' => 'example'
]);
OR, (*5)
$statsd1 = StatsD\Client::instance('server1')->configure([...]);
$statsd2 = StatsD\Client::instance('server2')->configure([...]);
The StatsD client wait for ini_get('default_socket_timeout')
seconds when opening the socket by default. To reduce
this timeout, add 'timeout' => <float>
to your config., (*6)
The StatsD client will throw a ConnectionException
if it is unable to send data to the StatsD server. You may choose
to disable these exceptions and log a PHP warning instead if you wish. To do so, include the following in your config:, (*7)
'throwConnectionExceptions' => false
If omitted, this option defaults to true
., (*8)
Counters
$statsd->increment('web.pageview');
$statsd->decrement('storage.remaining');
$statsd->increment([
'first.metric',
'second.metric'
], 2);
$statsd->increment('web.clicks', 1, 0.5);
Gauges
$statsd->gauge('api.logged_in_users', 123456);
Sets
$userID = 23;
$statsd->set('api.unique_logins', $userID);
Timers
$statsd->timing('api.response_time', 256);
$metrics = array('api.response_time' => 256, 'api.memory' => 4096));
$statsd->timings($metrics);
Timing Blocks
$statsd->time('api.dbcall', function () {
// this code execution will be timed and recorded in ms
});
Attention! That functionality support of tags in Datadog format!, (*9)
You may configure it for all the metrics sending by the client., (*10)
$statsd->configure([
'tags' => ['some_general_tag' => 'value']
]);
Or you may send it for a single metric., (*11)
$statsd->increment('web.clicks', 1, 1, ['host' => $_SERVER['HTTP_HOST']]);
Framework integration
Although this library will work with any PHP framework, below are a few ways to
integrate it quickly with the most popular ones via included adapters., (*12)
Laravel 4.x
Find the providers
key in your app/config/app.php
and register the Statsd Service Provider., (*13)
'providers' => [
// ...
'League\StatsD\Laravel\Provider\StatsdServiceProvider',
]
Find the aliases
key in your app/config/app.php
and add the Statsd Facade Alias., (*14)
'aliases' => [
// ...
'Statsd' => 'League\StatsD\Laravel\Facade\StatsdFacade',
]
Laravel 5.x
If you are using Laravel >=5.5
, statsd uses package discovery to automatically register the service provider and facade., (*15)
For older versions of Laravel 5, or if you disable package discovery:, (*16)
Find the providers
key in your config/app.php
and register the Statsd Service Provider., (*17)
'providers' => [
// ...
League\StatsD\Laravel5\Provider\StatsdServiceProvider::class,
]
Find the aliases
key in your app/config/app.php
and add the Statsd Facade Alias., (*18)
'aliases' => [
// ...
'Statsd' => League\StatsD\Laravel5\Facade\StatsdFacade::class,
]
Lumen
Register the provider in your boostrap app file boostrap/app.php
, (*19)
Add the following line in the "Register Service Providers" section at the bottom of the file., (*20)
$app->register(\League\StatsD\Laravel5\Provider\StatsdServiceProvider::class);
Copy the config file statsd.php
manually from the directory /vendor/league/statsd/config
to the directory /config
(you may need to create this directory)., (*21)
Package Configuration, (*22)
In your .env
file, add the configuration:, (*23)
STATSD_HOST=127.0.0.1
STATSD_PORT=8125
STATSD_NAMESPACE=
Testing
phpunit
Contributing
Please see CONTRIBUTING for details., (*24)
Credits
License
The MIT License (MIT). Please see License File for more information., (*25)