Moved creation of writeApi to main and set default-tag hostname

release-2.0
Ruakij 3 years ago
parent d0be44c1af
commit 1e37f35e38

@ -5,6 +5,7 @@ const logger = logFactory("main");
const { requireEnvVars } = require("./helper/env.js");
const { exit } = require("process");
const { exec } = require("./helper/exec.js");
const Os = require("os");
const { InfluxDB } = require("@influxdata/influxdb-client");
const InfluxChecks = require("./helper/influx-checks.js");
@ -23,6 +24,7 @@ const env = process.env;
{
env.LOGLEVEL ??= "INFO";
env.WIFI_INTERFACE ??= "wlan0";
env.HOSTNAME ??= Os.hostname();
}
// Required vars
let errorMsg = requireEnvVars([
@ -56,6 +58,9 @@ if(errorMsg){
exit(1);
});
logger.debug("Get WriteApi & set default-hostname to", `'${env.HOSTNAME}'`);
const influxWriteApi = influxDb.getWriteApi(env.INFLUX_ORG, env.INFLUX_BUCKET, "us");
influxWriteApi.useDefaultTags("hostname", env.HOSTNAME);
logger.info("Influx ok");
logger.info("Starting tcpdump..");
@ -67,7 +72,7 @@ if(errorMsg){
let regexBlockStream = new RegexBlockStream(/^\d{2}:\d{2}:\d{2}.\d{6}.*(\n( {4,8}|\t\t?).*)+\n/gm);
let packetStreamFactory = new PacketStreamFactory();
let packetInfluxPointFactory = new PacketInfluxPointFactory();
let influxPointWriter = new InfluxPointWriter(influxDb, env.INFLUX_ORG, env.INFLUX_BUCKET);
let influxPointWriter = new InfluxPointWriter(influxWriteApi);
proc.stdout
.setEncoding("utf8")
.pipe(regexBlockStream)

@ -1,6 +1,6 @@
const logger = require.main.require("./helper/logger.js")("InfluxPointWriter");
const { Writable } = require("stream");
const {InfluxDB, Point, HttpError} = require("@influxdata/influxdb-client");
const { WriteApi } = require("@influxdata/influxdb-client");
/**
* Get points and write them into influx
@ -8,16 +8,13 @@ const {InfluxDB, Point, HttpError} = require("@influxdata/influxdb-client");
class InfluxPointWriter extends Writable{
/**
*
* @param {InfluxDB} influxDb InfluxDb
* @param {string} org Organization to use
* @param {string} bucket Bucket to use
* @param {Partial<WriteOptions>} options Options for WriteApi
* @param {WriteApi} writeApi WriteAPI from InfluxDB instance
*/
constructor(influxDb, org, bucket, options){
constructor(writeApi){
super({
objectMode: true
});
this._api = influxDb.getWriteApi(org, bucket, "us", options);
this._api = writeApi;
}
_write(point, encoding, next){

Loading…
Cancel
Save