Skip to content

graze/dog-statsd

Folders and files

NameName
Last commit message
Last commit date

Latest commit

f8c2048 · Apr 14, 2021

History

41 Commits
Apr 12, 2021
Apr 12, 2021
Feb 8, 2019
Apr 12, 2021
Apr 12, 2021
Aug 8, 2017
Mar 2, 2016
Jun 26, 2018
Apr 12, 2021
Jan 8, 2019
Apr 12, 2021
Aug 4, 2016
May 18, 2017

Repository files navigation

graze/dog-statsd

Giphy

Latest Version on Packagist Software License Build Status Coverage Status Quality Score Total Downloads

Client to talk to DataDogs StatsD Agent Forked from: League/StatsD

For more information on the metric, see: Datadogs metrics guide.

Install

Via Composer

$ composer require graze/dog-statsd

Usage

Configuring

$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'

Core StatsD implementation

To use this with a core statsd implementation (without the extra features DataDog have added) include the following in your configuration:

'dataDog' => false

Methods

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);

Histogram

$result = $db->fetch();
$statsd->histogram('db.results', count($result), 0.5);

Timers

$statsd->timing('api.response_time', 256);

Timing Blocks

$statsd->time('api.dbcall', function () {
    // this code execution will be timed and recorded in ms
});

Tags

$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']);
Tags Processors

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;
});

Events

$statsd->event(
    'build.success',
    'The build super_awesome_application_build_1 has completed',
    [
        'time'  => time(),
        'alert' => Client::ALERT_SUCCESS,
    ],
    [
        'environment' => 'live',
    ]
);

Service Check

$statsd->serviceCheck(
    'service.api.account',
    Client::STATUS_OK,
    [
        'host' => 'this.hostname.com',
        'time' => time(),
    ],
    [
        'environment' => 'staging',
    ]
);

Default Tags

Send the same base tags with every request

$client = new Client();
$client->configure([
    'tags' => [
        'env'     => 'live',
        'release' => 'app-2.3.1',
    ],
]);

Testing

$ make test

Contributing

Please see CONTRIBUTING for details.

Security

If you discover any security related issues, please email [email protected] instead of using the issue tracker.

Credits

Forked from thephpleague/statsd:

License

The MIT License (MIT). Please see License File for more information.