https://github.com/topfreegames/koa-datadog-middleware
A koa middleware for reporting metrics to datadog
https://github.com/topfreegames/koa-datadog-middleware
Last synced: 6 months ago
JSON representation
A koa middleware for reporting metrics to datadog
- Host: GitHub
- URL: https://github.com/topfreegames/koa-datadog-middleware
- Owner: topfreegames
- License: mit
- Created: 2018-02-08T11:59:39.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2024-09-11T17:36:36.000Z (about 1 year ago)
- Last Synced: 2025-04-12T17:23:28.051Z (6 months ago)
- Language: JavaScript
- Size: 21.5 KB
- Stars: 1
- Watchers: 11
- Forks: 2
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
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](https://docs.datadoghq.com/developers/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](https://github.com/brightcove/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:
```js
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:
```js
const ddog = require('koa-datadog-middleware')const config = {
"host": my.statsd.host.com,
"port": 8133,
"cacheDns": true,
"reportingMethod": "distribution"
}app.use(ddog(config))
```