chaseconey / laravel-datadog-helper
A Laravel Datadog helper package.
Fund package maintenance!
chaseconey
Installs: 1 749 697
Dependents: 0
Suggesters: 0
Security: 0
Stars: 74
Watchers: 4
Forks: 19
Open Issues: 0
Requires
- php: >=5.4.0
- datadog/php-datadogstatsd: ^1.4.0
- illuminate/support: >=5.1
Requires (Dev)
- phpunit/phpunit: ~4.0||~5.0
- scrutinizer/ocular: ~1.1
- squizlabs/php_codesniffer: ~2.3
README
Laravel Datadog Helper helps you get your application metrics integrated into Laravel as fast as possible.
Requirements
- Laravel >= 5
- Datadog API Key
Features
- Adds Datadog facade that wraps the official DataDog/php-datadogstatsd library
- Provides middleware for tracking response time metrics automatically
- Allows prefixing all metrics that are sent for the whole application with common prefix
Installation
Require this package with composer.
composer require chaseconey/laravel-datadog-helper
Laravel 5.5 uses Package Auto-Discovery, so doesn't require you to manually add the ServiceProvider.
If you would like to install the request metric tracking middleware, add the Datadog middleware class like so:
// app/Http/Kernel.php protected $middleware = [ ... \ChaseConey\LaravelDatadogHelper\Middleware\LaravelDatadogMiddleware::class ];
Without Auto-Discovery (or Laravel < 5.5)
If you don't use auto-discovery, or you are using an older version of Laravel, add the ServiceProvider to the providers array in config/app.php
// config/app.php 'providers' => [ ... ChaseConey\LaravelDatadogHelper\LaravelDatadogHelperServiceProvider::class, ];
If you want to use the facade, add this to your facades in config/app.php
:
// config/app.php 'aliases' => [ ... 'Datadog' => ChaseConey\LaravelDatadogHelper\Datadog::class ];
For configuration options, copy the package config to your local config with the publish command:
php artisan vendor:publish --provider="ChaseConey\LaravelDatadogHelper\LaravelDatadogHelperServiceProvider"
Middleware
This package comes with a handy middleware that you can add to any Laravel project to get up and running in Datadog as fast as possible.
- Metric Name:
request_time
- Value: The time it takes Laravel to respond to request
- Tags::
status_code
url
(toggle viadatadog.middleware_disable_url_tag
config option)- any custom tags you have added to
datadog.global_tags
With just these metrics here are a couple of example graphs that you can make:
Datadog Graph Config JSON
Max Request Time by URL
{ "viz": "heatmap", "requests": [ { "q": "max:app.example.request_time.max{*} by {url}", "type": null, "style": { "palette": "dog_classic", "type": "solid", "width": "normal" }, "aggregator": "avg", "conditional_formats": [] } ], "autoscale": true }
Top Pages Hit
{ "viz": "toplist", "requests": [ { "q": "top(sum:app.example.request_time.count{*} by {url}.as_count(), 10, 'sum', 'desc')", "type": null, "style": { "palette": "warm", "type": "solid", "width": "normal" }, "conditional_formats": [] } ] }
Slowest Endpoints/Pages
{ "viz": "toplist", "requests": [ { "q": "top(max:app.example.request_time.max{*} by {url}, 10, 'max', 'desc')", "type": null, "style": { "palette": "dog_classic", "type": "solid", "width": "normal" }, "conditional_formats": [ { "palette": "white_on_red", "value": 5, "comparator": ">" }, { "palette": "white_on_green", "value": 5, "comparator": "<=" } ] } ] }
Examples
This library wraps the official DataDog/php-datadogstatsd library. All functions are inherited from the core implementation provided by this library with the exception of replacing Datadogstatsd
with Datadog
(the facade).
For example:
Instead of doing Datadogstatsd::increment('my.sweet.metrics')
, you would use Datadog::increment('my.sweet.metrics')
.
For a full set of usage examples, check out the library's usage README.
Change log
Please see CHANGELOG for more information what has changed recently.
Contributing
Please see CONTRIBUTING and CONDUCT for details.
Credits
License
The MIT License (MIT). Please see License File for more information.