good-influx

3.1.0 • Public • Published

good-influx

InfluxDB broadcasting for Good process monitor, based on good-http. It can write to HTTP or UDP Telegraf endpoints.

Current Version Build Status Greenkeeper badge

Good Influx will format your Good data according to the InfluxDB Line Protocol.

Usage

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.

Example

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);
        });
    }
});

Good Influx

GoodInflux (endpoint, config)

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.
      • Note that for UDP, threshold above 5 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 to my/awesome/service/ops
    • [prefixDelimiter] - Used to delimit measurement prefix arrays defined in prefix above. Defaults to /.

Series

Error

time host pid error id method url

Log

time host pid data tags

Ops

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

Request

time host pid data id method path tags

Response

time host pid httpVersion id instance labels method path query
referer remoteAddress responseTime statusCode userAgent

License

MIT

/good-influx/

    Package Sidebar

    Install

    npm i good-influx

    Weekly Downloads

    3

    Version

    3.1.0

    License

    MIT

    Last publish

    Collaborators

    • nnanceck