Nonstick Pancake Maker

    @goodwaygroup/lib-hapi-dogstatsd

    1.2.1 • Public • Published

    lib-hapi-dogstatsd

    CircleCI Coverage Status npm downloads install size

    Please do not run this plugin within tests in your application

    Usage

    This plugin will send metrics regarding route performance on every request to the Hapi server.

    For the prefix, please the name of the service that you are integrating with (neato-service, cool-api, etc)

    $ npm install -S @goodwaygroup/lib-hapi-dogstatsd
    

    In your index.js for the Hapi server, register the plugin:

    const HapiDogstatsd = require('@goodwaygroup/lib-hapi-dogstatsd')
    
    // Dogstatsd
    if (process.env.DOGSTATSD_HOST && process.env.NODE_ENV !== 'test') {
        await server.register({
            plugin: HapiDogstatsd,
            options: {
                host: process.env.DOGSTATSD_HOST,
                port: process.env.DOGSTATSD_PORT || 8125,
                tags: [`env:${process.env.NODE_ENV || 'development'}`],
                prefix: 'neato-service'
            }
        });
    }

    Configuration Options

    When passing a configuration option, it will overwrite the defaults.

    • host: The host running the Datadog Daemon with dogstatsd configured
    • port: Port for dogstatsd
      • default: 8125
    • prefix: A prefix that will be prepended to all metrics sent to DataDog
      • default: hapi
    • tags: An array of tags that will be applied to all metrics that are sent
      • default: [`env:${process.env.NODE_ENV || 'development'}`]
    • excludedPaths: An array of URL paths to ignore sending metrics for.
      • default: ['/favicon.ico', '/health-check']
    • excludedTags: An array of tag keys that will be excluded from the default list of tags added to each metric. The default list of tags is: dns, url_path, route_path, status_code, http_method
      • default: []

    Route Based Tags

    To add custom tags specific to a route, use the response.plugin state block to pass tags to the plugin. These tags will be merged with the default tags that are generated.

    response.plugins['dogstatsd'] = { tags: ['custom:tag', 'key:value'] }

    Route Based Metrics

    To add custom metrics specific to a route, use the response.plugin state block to pass metrics to the plugin. These metrics will be merged with the default metrics that are generated.

    The metrics will need to have the following structure.

    response.plugins.dogstatsd.metrics = [{
        type: 'gauge',
        name: 'cache.orphans',
        value: 123,
        tags: [`cache_db:${cache}`]
    }, {
        type: 'incr',
        name: 'cache.hit',
        value: null,
        tags: [`cache_db:${cache}`]
    }]

    Default Tags

    These tags are set on every request:

    const tags = [
        `env:${process.env.NODE_ENV || 'development'}`,
        `dns:${request.headers.host}`,
        `url_path:${request.url.pathname}`,
        `route_path:${request.route.path}`,
        `status_code:${statusCode}`,
        `http_method:${request.method.toUpperCase()}`
    ];

    Example:

    [
        'end:production',
        'dns:github.com',
        'url_path:/api/v1/user/34/edit',
        'route_path:/api/v1/user/{id}/edit',
        'status_code:200',
        'http_method:POST'
    ]
    

    Running Tests

    To run tests, just run the following:

    npm test
    

    All commits are tested on CircleCI

    Linting

    To run eslint:

    npm run lint
    

    To auto-resolve:

    npm run lint:fix
    

    Contributing

    Please read CONTRIBUTING.md for details on our code of conduct, and the process for submitting pull requests to us.

    Versioning

    We use milestones and npm version to bump versions. We also employ git-chglog to manage the CHANGELOG.md. For the versions available, see the tags on this repository.

    To initiate a version change:

    npm version major|minor|patch
    

    Authors

    • Derek Smith - Initial work - @clok

    See also the list of contributors who participated in this project.

    License

    This project is licensed under the MIT License - see the LICENSE file for details

    Acknowledgments

    Sponsors

    goodwaygroup

    Install

    npm i @goodwaygroup/lib-hapi-dogstatsd

    DownloadsWeekly Downloads

    132

    Version

    1.2.1

    License

    MIT

    Unpacked Size

    25.1 kB

    Total Files

    6

    Last publish

    Collaborators

    • darizat
    • pblack
    • goodway-bot