Giter VIP home page Giter VIP logo

good-influx's Introduction

good-influx

InfluxDB 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.

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'
                }
        	}]
        }]
    }
};

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 20. Set to 0 to have every event start transmission instantly. It is recommended to have a set threshold to make data transmission more efficient.
    • [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 information you would like to include in your InfluxDB stats. This helps you query InfluxDB for the statistics you want.

Series

Error

time host pid error id method url

Log

time host pid data tags

Ops

time host pid os proc metadata (optional)
  • os includes: cpu1m, cpu5m, cpu15m, freemem, totalmem and uptime
  • proc includes: delay, heapTotal, heapUsed, rss and uptime
  • metadata (optional) includes any decorators you may have added as part of the metadata config option above.

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's People

Contributors

alec-ferguson-ck avatar fhemberger avatar sam-breed-ck avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.