diff --git a/src/main.js b/src/main.js index dcf991d..a89ae31 100644 --- a/src/main.js +++ b/src/main.js @@ -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) diff --git a/src/streamHandler/InfluxPointWriter.js b/src/streamHandler/InfluxPointWriter.js index ea7f76e..7d1874c 100644 --- a/src/streamHandler/InfluxPointWriter.js +++ b/src/streamHandler/InfluxPointWriter.js @@ -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} 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){