chaseconey/laravel-datadog-helper

A Laravel Datadog helper package.

1.2.1 2020-08-15 00:45 UTC

This package is auto-updated.

Last update: 2022-06-10 00:21:17 UTC


README

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

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 via datadog.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.