Nocturnal Pumpkin Maelstrom
Miss any of our Open RFC calls?Watch the recordings here! »

inspector-influx

2.7.0 • Public • Published

inspector-influx

Typescript Metrics Reporter for InfluxDB.

NPM Version License Build Status Dependencies Status

This library is made for inspector-metrics node module and is meant to be used with nodejs.
It uses node-influx as influxdb client.

Take a look at the Documentation.

install

npm install --save inspector-influx

basic usage

import { DefaultSender, InfluxMetricReporter } from "inspector-influx";
import { MetricRegistry, Timer } from "inspector-metrics";
 
// influxdb config from https://github.com/node-influx/node-influx/blob/master/src/index.ts#L80
const dbConfig = {
    "username": "admin",
    "password": "admin",
    "database": "example-db",
    "hosts": [
        { "host": "influx", "port": 8086 }
    ]
};
 
const sender = new DefaultSender(dbConfig);
const reporter: InfluxMetricReporter = new InfluxMetricReporter({
    sender,
});
const registry: MetricRegistry = new MetricRegistry();
const requests: Timer = registry.newTimer("requests");
 
reporter.setLog(global.console);
reporter.addMetricRegistry(registry);
 
// need ot wait for the reporter to start
await reporter.start();
 
// example usage
setInterval(() => {
    // should report a few milliseconds
    requests.time(() => {
        let a = 0;
        let b = 1;
        for (let i = 0; i < 1e6; i++) {
            a = b + i;
        }
    });
}, 100);

reporting events

import { InfluxMetricReporter } from "inspector-influx";
import { Event } from "inspector-metrics";
 
const reporter: InfluxMetricReporter = ...
 
// need ot wait for the reporter to start before reporting events
await reporter.start();
 
// build an ad-hoc event
const event = new Event<number>("application_started")
    .setValue(1.0)
    .setTag("mode", "test")
    .setTag("customTag", "specialValue");
 
// send the event to influxdb
await reporter.reportEvent(event);

multi process support (nodejs cluster)

By default forked processes are sending the metrics as inter-process message
to the master process. The InfluxMetricReporter is listening for those messages
and report the metrics from the other processes.

To disable this behavior set the DisabledClusterOptions when creating an instance.

In each case you should set the pid as reporter tag.

import { DefaultSender, InfluxMetricReporter } from "inspector-influx";
import { tagsToMap, DisabledClusterOptions, MetricRegistry, Timer } from "inspector-metrics";
 
const dbConfig = {...};
const sender = new DefaultSender(dbConfig);
const reporter: InfluxMetricReporter = new InfluxMetricReporter({
    clusterOptions: new DisabledClusterOptions(),
    sender,
});
 
// set "pid" to process id
reporter.setTags(tagsToMap({
    pid: `${process.pid}`,
}));

License

MIT

Install

npm i inspector-influx

DownloadsWeekly Downloads

6

Version

2.7.0

License

MIT

Unpacked Size

36.9 kB

Total Files

13

Last publish

Collaborators

  • avatar