Client to talk to DataDogs StatsD Agent Forked from: League/StatsD
For more information on the metric, see: Datadogs metrics guide.
Via Composer
$ composer require graze/dog-statsd
$statsd = new Graze\DogStatsD\Client();
$statsd->configure([
'host' => '127.0.0.1',
'port' => 8125,
'namespace' => 'example',
]);
OR
$statsd1 = DogStatsD\Client::instance('server1')->configure([...]);
$statsd2 = DogStatsD\Client::instance('server2')->configure([...]);
The StatsD client waits for ini_get('default_socket_timeout')
seconds when opening the socket by default. To reduce
this timeout, add 'timeout' => <int>
to your config.
The StatsD client will either throw a ConnectionException
, throw a warning or ignore all errors if it is unable to
send data to the StatsD server. This can be configured using the onError
property
'onError' => 'error' // 'error', 'exception' or 'ignore'
By default this is set to 'error'
To use this with a core statsd implementation (without the extra features DataDog have added) include the following in your configuration:
'dataDog' => false
$statsd->increment('web.pageview');
$statsd->decrement('storage.remaining');
$statsd->increment([
'first.metric',
'second.metric'
], 2);
$statsd->increment('web.clicks', 1, 0.5);
$statsd->gauge('api.logged_in_users', 123456);
$userID = 23;
$statsd->set('api.unique_logins', $userID);
$result = $db->fetch();
$statsd->histogram('db.results', count($result), 0.5);
$statsd->timing('api.response_time', 256);
$statsd->time('api.dbcall', function () {
// this code execution will be timed and recorded in ms
});
$statsd->increment('web.pageview', 1, ['page' => 'some/page']);
$statsd->guage('api.logged_in_users', 123456, ['environement' => 'live']);
$statsd->set('api.unique_logins', $userID, ['tag']);
$statsd->timing('api.response_time', 245, ['end-point' => 'page', 'env' => 'test']);
You can add tag processors to inject tags at runtime for each metric.
$statsd->addTagProcessor(function (array $tags) {
$tags['new-key'] = 'new-value';
return $tags;
});
$statsd->event(
'build.success',
'The build super_awesome_application_build_1 has completed',
[
'time' => time(),
'alert' => Client::ALERT_SUCCESS,
],
[
'environment' => 'live',
]
);
$statsd->serviceCheck(
'service.api.account',
Client::STATUS_OK,
[
'host' => 'this.hostname.com',
'time' => time(),
],
[
'environment' => 'staging',
]
);
Send the same base tags with every request
$client = new Client();
$client->configure([
'tags' => [
'env' => 'live',
'release' => 'app-2.3.1',
],
]);
$ make test
Please see CONTRIBUTING for details.
If you discover any security related issues, please email [email protected] instead of using the issue tracker.
Forked from thephpleague/statsd:
The MIT License (MIT). Please see License File for more information.