Skip to content

topfreegames/koa-datadog-middleware

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

koa-datadog-middleware

This middleware will report metrics to datadog regarding an app's response time and number of requisitions splitted by the tags (status_code, path and method). Custom tags are also available.

It reports metrics using dogstatsd histograms or distributions.

how to use

Import it and register as a middleware. e.g.

var ddog = require('koa-datadog-middleware')
app.use(ddog())

All tags present in ctx.state.datadog will be automatic concat in the default tags.

configuration / customization

The middleware is based on hot-shots lib, it will pass an options map forward to hot-shots, so the configuration are the similar:

  • host: The host to send stats to default: localhost
  • port: The port to send stats to default: 8125
  • prefix: What to prefix each stat name with default: ''
  • suffix: What to suffix each stat name with default: ''
  • globalize: Expose this StatsD instance globally? default: false
  • cacheDns: Cache the initial dns lookup to host default: true
  • mock: Create a mock StatsD instance, sending no stats to the server? default: false
  • globalTags: Tags that will be added to every metric default: []
  • maxBufferSize: If larger than 0, metrics will be buffered and only sent when the string length is greater than the size. default: 1000
  • bufferFlushInterval: If buffering is in use, this is the time in ms to always flush any buffered metrics. default: 1000
  • telegraf: Use Telegraf's StatsD line protocol, which is slightly different than the rest default: false
  • sampleRate: Sends only a sample of data to StatsD for all StatsD methods. Can be overriden at the method level. default: 1
  • errorHandler: A function with one argument. It is called to handle various errors. default: none, errors are thrown/logger to console
  • metric: Name of the metric to be reported. default: "koa.router.response_time_ms"
  • reportingMethod: Reporting method to be used. Should be "histogram" or "distribution". default: "histogram"

Note that two options (cacheDns and maxBufferSize) differs from the original lib.

Example

Reporting metrics as histograms:

const ddog = require('koa-datadog-middleware')

const config = {
    "host": my.statsd.host.com,
    "port": 8133,
    "cacheDns": true,
    "reportingMethod": "histogram"
}

app.use(ddog(config))

Reporting metrics as distributions:

const ddog = require('koa-datadog-middleware')

const config = {
    "host": my.statsd.host.com,
    "port": 8133,
    "cacheDns": true,
    "reportingMethod": "distribution"
}

app.use(ddog(config))

About

A koa middleware for reporting metrics to datadog

Resources

License

Stars

Watchers

Forks

Packages

No packages published