Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@goodwaygroup/lib-hapi-dogstatsd

Package Overview
Dependencies
Maintainers
3
Versions
21
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@goodwaygroup/lib-hapi-dogstatsd

Hapi plugin for publishing route stats to DataDog

  • 1.2.1
  • latest
  • Source
  • npm
  • Socket score

Version published
Maintainers
3
Created
Source

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

Keywords

FAQs

Package last updated on 13 May 2021

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc