InfluxDB broadcasting for Good process monitor
npm install good-influxInfluxDB broadcasting for Good process monitor, based on good-http.
It can write to HTTP or UDP Telegraf endpoints.
!Current Version


Good Influx will format your Good data according to the InfluxDB Line Protocol.
good-influx is a write stream used to send events to InfluxDB endpoints in batches. If your endpoint is http:// or https://, it makes a "POST" request with a plain-text payload to the supplied endpoint. It will make a final "POST" request to the endpoint to flush the rest of the data on "finish".
If the supplied endpoint is a udp:// endpoint then good-influx will send the stats via UDP. This may improve application performance since UDP does not wait for a response. Though it does fail silently, so you run the risk that your stats are failing to record and you don't know about it.
``javascript
const Hapi = require('hapi');
const server = new Hapi.Server();
server.connection();
const options = {
ops: {
interval: 1000
},
reporters: {
// Send only 'ops' events to InfluxDB
influx: [{
module: 'good-squeeze',
name: 'Squeeze',
args: [{ ops: '*' }]
}, {
module: 'good-influx',
args: ['http://localhost:8086/write?db=good', {
threshold: 10,
metadata: {
serviceName: 'SuperAwesomeService',
dataCenter: 'Banff'
},
prefix: ['my', 'awesome', 'service']
}]
}]
}
};
server.register({
register: require('good'),
options: options
}, (err) => {
if (err) {
console.error(err);
} else {
server.start(() => {
console.info('Server started at ' + server.info.uri);
});
}
});
`
Creates a new GoodInflux object where:
- endpoint - full path to remote server's InfluxDB HTTP API end point to transmit InfluxDB statistics (e.g. http://localhost:8086/write?db=good)config
- - configuration object (Optional)[threshold]
- - number of events to hold before transmission. Defaults to 5. Set to 0 to have every event start transmission instantly.5
- Note that for UDP, threshold above will be set to 5. Why? Because if UDP packets get too big they fail to transmit.[errorThreshold]
- - number of erroring message sends to tolerate before the plugin fails. Default is 0.[wreck]
- - configuration object to pass into wreck. Defaults to { timeout: 60000, headers: {} }. content-type is always "text/plain".[udpType]
- - UDP type; defaults to udp4. Probably not necessary to change, but more documentation is available on the NodeJS Dgram Documentation[metadata]
- - arbitrary tags you would like to add to your InfluxDB stats. This helps you query InfluxDB for the statistics you want.[prefix]
- - applied to each measurement name. Useful if you want to limit the scope of your measurements to a specific service. You can specify a string, or an array of strings (recommended). Arrays will be joined by prefixDelimiter below. For example, using prefix: ['my', 'awesome', 'service'] the ops measurement will be renamed tomy/awesome/service/ops
[prefixDelimiter]
- - Used to delimit measurement prefix arrays defined in prefix above. Defaults to /.
time | host | pid | error | id | method | url
-----|------|-----|-------|----|--------|----
time | host | pid | data | tags
-----|------|-----|------|-----
Each Ops event from the Hapi Good plugin is separated out into 5 events for InfluxDB. Why? Because ops` events are multilayered, so we can't capture the full information in one event.
_Standard tags: host,pid, metadata (optional)_
event | numEvents | tags | fields
------------------|-----------|------------|------------------------------------------
ops | 1 | _Standard_ | os.cpu1m, os.cpu5m, os.cpu15m, os.freemem, os.totalmem, os.uptime, os.totalmem, proc.delay, proc.heapTotal, proc.heapUsed, proc.rss, proc.uptime
ops_requests | 1 per port|_Standard_ + port| requestsTotal, requestsDisconnects, requests200* -- one field for each status code
ops_concurrents | 1 per port|_Standard_ + port| concurrents
ops_responseTimes | 1 per port|_Standard_ + port| avg, max
ops_sockets | 1 |_Standard_| httpTotal, httpsTotal
time | host | pid | data | id | method | path | tags
-----|------|-----|------|----|--------|------|-----
time | host | pid | httpVersion | id | instance | labels | method | path | query |
-----|------|-----|-------------|----|----------|--------|--------|------|-------|
referer | remoteAddress | responseTime | statusCode | userAgent
---------|---------------|--------------|------------|----------