NEWS
Test Adapter influxdb 2.0
-
Ich sage jetzt mal frech: Versucht es doch mal ... und schreibt es for uns und die anderen auf. Ich denke "adapter stoppen, updaten, Konfig ändern (ip, port, settings) und starten sollte es sein
-
Es gibt gute und schlecht Neuigkeiten.
Die gute ist, dass ich eine Migration von Influx 1.x nach 2.x mit IOBroker Daten erfolgreich testen konnte und dazu ein paar Sätze in der Adapter-Readme geschrieben habe. Hauptsächlich habe ich diese Schritte verwendet: https://docs.influxdata.com/influxdb/v2.0/upgrade/v1-to-v2/manual-upgrade/#migrate-time-series-data
Die schlechte ist, dass die migrierten Daten nicht mit der letzten Adapter-Version kompatibel waren und ich daher nochmal Anpassungen vornehmen musste, die auch die Datenstruktur in der Influx 2 DB betreffen. Zuvor verwendete der Adapter unter anderem "Tags" für bestimmte Felder, die bei Influx 1 noch "Fields" waren. Das habe ich nun geändert, um die Kompatibilität sicherzustellen und Migrationen überhaupt sinnvoll möglich zu machen. Das bedeutet leider auch, das mit früheren Adapter-Versionen in Influx 2 geschriebene Datensätze vom neuen Adapter (jetzt via Github, oder später als Release) nicht mehr verstanden werden, d.h. nicht weiter verwendet werden können. D.h. hier muss ggf. nochmal mit einer leeren Influx 2 DB (oder einer migrierten Influx 1 DB) gestartet werden.
-
@excodibur Reicht es aus, die Inhalte aus der Datenbank über die influxdb Instanz mit dem Button "Alle Daten in Datenbank löschen" zu löschen oder muss man eine frische Datenbank aufsetzen?
-
@feuersturm Ja, sollte reichen, da der Adapter dabei das ganze Bucket (und alle Measurements darin) löscht.
-
@excodibur War das eigentlich ein Aufruf, die neue github Version zum testen zu installieren?
-
@feuersturm Ja bitte, wollen das dann jetzt mal so langsam richtung Latest bringen
-
@apollon77 @Excodibur
Ich hab vor dem Update "Alle Daten in Datenbank löschen" ausgeführt.
Nach dem Update und beim Start des Adapters waren folgende Errors im Log10 Aug 2021 00:52:44.990 host.ioBrokerTestsystem Restart adapter system.adapter.influxdb.0 because enabled 10 Aug 2021 00:52:44.988 host.ioBrokerTestsystem instance system.adapter.influxdb.0 terminated with code 6 (UNCAUGHT_EXCEPTION) 10 Aug 2021 00:52:44.988 host.ioBrokerTestsystem Caught by controller[0]: at /opt/iobroker/node_modules/@influxdata/influxdb-client/src/impl/node/NodeHttpTransport.ts:111:14 10 Aug 2021 00:52:44.987 host.ioBrokerTestsystem Caught by controller[0]: at at._request (/opt/iobroker/node_modules/@influxdata/influxdb-client/src/impl/node/NodeHttpTransport.ts:242:22) 10 Aug 2021 00:52:44.986 host.ioBrokerTestsystem Caught by controller[0]: at at.requestApi (/opt/iobroker/node_modules/@sentry/node/src/integrations/http.ts:126:10) 10 Aug 2021 00:52:44.986 host.ioBrokerTestsystem Caught by controller[0]: at at.request (http.js:46:10) 10 Aug 2021 00:52:44.985 host.ioBrokerTestsystem Caught by controller[0]: at new ClientRequest (_http_client.js:242:14) 10 Aug 2021 00:52:44.984 host.ioBrokerTestsystem Caught by controller[0]: at ClientRequest.setHeader (_http_outgoing.js:533:3) 10 Aug 2021 00:52:44.983 host.ioBrokerTestsystem Caught by controller[0]: TypeError [ERR_INVALID_CHAR]: Invalid character in header content ["authorization"] 10 Aug 2021 00:52:44.982 host.ioBrokerTestsystem Caught by controller[0]: This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason:
10 Aug 2021 00:53:18.449 influxdb.0 (1959) Terminated (UNCAUGHT_EXCEPTION): Without reason 10 Aug 2021 00:53:18.443 influxdb.0 (1959) terminating 10 Aug 2021 00:53:18.417 influxdb.0 (1959) Exception-Code: ERR_INVALID_CHAR: Invalid character in header content ["authorization"] 10 Aug 2021 00:53:18.416 influxdb.0 (1959) TypeError [ERR_INVALID_CHAR]: Invalid character in header content ["authorization"] at ClientRequest.setHeader (_http_outgoing.js:533:3) at new ClientRequest (_http_client.js:242:14) at at.request (http.js:46:10) at at.requestApi (/opt/iobroker/node_modules/@sentry/node/src/integrations/http.ts:126:10) at at._request (/opt/iobroker/node_modules/@influxdata/influxdb-client/src/impl/node/NodeHttpTransport.ts:242:22) at /opt/iobroker/node_modules/@influxdata/influxdb-client/src/impl/node/NodeHttpTransport.ts:111:14 10 Aug 2021 00:53:18.414 influxdb.0 (1959) unhandled promise rejection: Invalid character in header content ["authorization"] 10 Aug 2021 00:53:18.412 influxdb.0 (1959) Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). 10 Aug 2021 00:53:18.241 influxdb.0 (1959) Connecting to InfluxDB 2 10 Aug 2021 00:53:18.239 influxdb.0 (1959) Influx DB Version used: 2.x 10 Aug 2021 00:53:18.238 influxdb.0 (1959) Connecting http://192.168.178.101:8086 ... 10 Aug 2021 00:53:18.235 influxdb.0 (1959) No stored data from last exit found 10 Aug 2021 00:53:18.179 influxdb.0 (1959) starting. Version 2.1.0 in /opt/iobroker/node_modules/iobroker.influxdb, node: v12.22.2, js-controller: 3.3.15
Nach dem Update ist der Token in den Einstellungen "kaputt", bzw. enthält irgendwelche Steuerzeichen.
Nachdem ich den Token aus der Influx GUI (welcher sich geändert hat) neu in der Instanz eingetragen hat, ist die Instanz erfolgreich gestartet.
-
@feuersturm Achja ... das hatten wir vergesen zu erwähnen ;-)) Passwort bzw Token wird jetzt verschlüsselt gespeichert und muss dahger einmalig neu eingegeben werden
-
@apollon77 Ah
Irgendwas scheint noch nicht ganz sauber zu funktionieren. Ich lasse den Datenpunkt proxmox.0.node_pve.cpu in die Datenbank speichern. In Influx wird hier folgendes angezeigt:
In ioBroker wird mir der Wert vom Datenpunkt korrekt angezeigt:
Das sind die Einstellungen vom Datenpunkt
Influx Version
proxmox@DatenbankenTest:~$ influx version Influx CLI 2.0.7 (git: 2a45f0c037) build_date: 2021-06-04T19:17:40Z
Welche weiteren Infos helfen euch weiter?
Edit:
proxmox@DatenbankenTest:~$ influx query 'from(bucket:"iobroker") |> range(start:-10m) |> filter(fn: (r) => r._measurement == "proxmox.0.node_pve.cpu")' Result: _result Table: keys: [_start, _stop, _field, _measurement] _start:time _stop:time _field:string _measurement:string _time:time _value:bool ------------------------------ ------------------------------ ---------------------- ---------------------- ------------------------------ ------------ 2021-08-09T23:41:06.058022993Z 2021-08-09T23:51:06.058022993Z ack proxmox.0.node_pve.cpu 2021-08-09T23:42:01.093000000Z true 2021-08-09T23:41:06.058022993Z 2021-08-09T23:51:06.058022993Z ack proxmox.0.node_pve.cpu 2021-08-09T23:43:01.075000000Z true 2021-08-09T23:41:06.058022993Z 2021-08-09T23:51:06.058022993Z ack proxmox.0.node_pve.cpu 2021-08-09T23:44:01.155000000Z true 2021-08-09T23:41:06.058022993Z 2021-08-09T23:51:06.058022993Z ack proxmox.0.node_pve.cpu 2021-08-09T23:45:01.086000000Z true 2021-08-09T23:41:06.058022993Z 2021-08-09T23:51:06.058022993Z ack proxmox.0.node_pve.cpu 2021-08-09T23:46:01.129000000Z true 2021-08-09T23:41:06.058022993Z 2021-08-09T23:51:06.058022993Z ack proxmox.0.node_pve.cpu 2021-08-09T23:47:01.082000000Z true 2021-08-09T23:41:06.058022993Z 2021-08-09T23:51:06.058022993Z ack proxmox.0.node_pve.cpu 2021-08-09T23:48:01.104000000Z true 2021-08-09T23:41:06.058022993Z 2021-08-09T23:51:06.058022993Z ack proxmox.0.node_pve.cpu 2021-08-09T23:49:01.089000000Z true 2021-08-09T23:41:06.058022993Z 2021-08-09T23:51:06.058022993Z ack proxmox.0.node_pve.cpu 2021-08-09T23:50:01.119000000Z true 2021-08-09T23:41:06.058022993Z 2021-08-09T23:51:06.058022993Z ack proxmox.0.node_pve.cpu 2021-08-09T23:51:01.088000000Z true Table: keys: [_start, _stop, _field, _measurement] _start:time _stop:time _field:string _measurement:string _time:time _value:string ------------------------------ ------------------------------ ---------------------- ---------------------- ------------------------------ ------------------------ 2021-08-09T23:41:06.058022993Z 2021-08-09T23:51:06.058022993Z from proxmox.0.node_pve.cpu 2021-08-09T23:42:01.093000000Z system.adapter.proxmox.0 2021-08-09T23:41:06.058022993Z 2021-08-09T23:51:06.058022993Z from proxmox.0.node_pve.cpu 2021-08-09T23:43:01.075000000Z system.adapter.proxmox.0 2021-08-09T23:41:06.058022993Z 2021-08-09T23:51:06.058022993Z from proxmox.0.node_pve.cpu 2021-08-09T23:44:01.155000000Z system.adapter.proxmox.0 2021-08-09T23:41:06.058022993Z 2021-08-09T23:51:06.058022993Z from proxmox.0.node_pve.cpu 2021-08-09T23:45:01.086000000Z system.adapter.proxmox.0 2021-08-09T23:41:06.058022993Z 2021-08-09T23:51:06.058022993Z from proxmox.0.node_pve.cpu 2021-08-09T23:46:01.129000000Z system.adapter.proxmox.0 2021-08-09T23:41:06.058022993Z 2021-08-09T23:51:06.058022993Z from proxmox.0.node_pve.cpu 2021-08-09T23:47:01.082000000Z system.adapter.proxmox.0 2021-08-09T23:41:06.058022993Z 2021-08-09T23:51:06.058022993Z from proxmox.0.node_pve.cpu 2021-08-09T23:48:01.104000000Z system.adapter.proxmox.0 2021-08-09T23:41:06.058022993Z 2021-08-09T23:51:06.058022993Z from proxmox.0.node_pve.cpu 2021-08-09T23:49:01.089000000Z system.adapter.proxmox.0 2021-08-09T23:41:06.058022993Z 2021-08-09T23:51:06.058022993Z from proxmox.0.node_pve.cpu 2021-08-09T23:50:01.119000000Z system.adapter.proxmox.0 2021-08-09T23:41:06.058022993Z 2021-08-09T23:51:06.058022993Z from proxmox.0.node_pve.cpu 2021-08-09T23:51:01.088000000Z system.adapter.proxmox.0 Table: keys: [_start, _stop, _field, _measurement] _start:time _stop:time _field:string _measurement:string _time:time _value:float ------------------------------ ------------------------------ ---------------------- ---------------------- ------------------------------ ---------------------------- 2021-08-09T23:41:06.058022993Z 2021-08-09T23:51:06.058022993Z q proxmox.0.node_pve.cpu 2021-08-09T23:42:01.093000000Z 0 2021-08-09T23:41:06.058022993Z 2021-08-09T23:51:06.058022993Z q proxmox.0.node_pve.cpu 2021-08-09T23:43:01.075000000Z 0 2021-08-09T23:41:06.058022993Z 2021-08-09T23:51:06.058022993Z q proxmox.0.node_pve.cpu 2021-08-09T23:44:01.155000000Z 0 2021-08-09T23:41:06.058022993Z 2021-08-09T23:51:06.058022993Z q proxmox.0.node_pve.cpu 2021-08-09T23:45:01.086000000Z 0 2021-08-09T23:41:06.058022993Z 2021-08-09T23:51:06.058022993Z q proxmox.0.node_pve.cpu 2021-08-09T23:46:01.129000000Z 0 2021-08-09T23:41:06.058022993Z 2021-08-09T23:51:06.058022993Z q proxmox.0.node_pve.cpu 2021-08-09T23:47:01.082000000Z 0 2021-08-09T23:41:06.058022993Z 2021-08-09T23:51:06.058022993Z q proxmox.0.node_pve.cpu 2021-08-09T23:48:01.104000000Z 0 2021-08-09T23:41:06.058022993Z 2021-08-09T23:51:06.058022993Z q proxmox.0.node_pve.cpu 2021-08-09T23:49:01.089000000Z 0 2021-08-09T23:41:06.058022993Z 2021-08-09T23:51:06.058022993Z q proxmox.0.node_pve.cpu 2021-08-09T23:50:01.119000000Z 0 2021-08-09T23:41:06.058022993Z 2021-08-09T23:51:06.058022993Z q proxmox.0.node_pve.cpu 2021-08-09T23:51:01.088000000Z 0 Table: keys: [_start, _stop, _field, _measurement] _start:time _stop:time _field:string _measurement:string _time:time _value:float ------------------------------ ------------------------------ ---------------------- ---------------------- ------------------------------ ---------------------------- 2021-08-09T23:41:06.058022993Z 2021-08-09T23:51:06.058022993Z value proxmox.0.node_pve.cpu 2021-08-09T23:42:01.093000000Z 18.98 2021-08-09T23:41:06.058022993Z 2021-08-09T23:51:06.058022993Z value proxmox.0.node_pve.cpu 2021-08-09T23:43:01.075000000Z 18.47 2021-08-09T23:41:06.058022993Z 2021-08-09T23:51:06.058022993Z value proxmox.0.node_pve.cpu 2021-08-09T23:44:01.155000000Z 18.68 2021-08-09T23:41:06.058022993Z 2021-08-09T23:51:06.058022993Z value proxmox.0.node_pve.cpu 2021-08-09T23:45:01.086000000Z 16.12 2021-08-09T23:41:06.058022993Z 2021-08-09T23:51:06.058022993Z value proxmox.0.node_pve.cpu 2021-08-09T23:46:01.129000000Z 17.03 2021-08-09T23:41:06.058022993Z 2021-08-09T23:51:06.058022993Z value proxmox.0.node_pve.cpu 2021-08-09T23:47:01.082000000Z 16.98 2021-08-09T23:41:06.058022993Z 2021-08-09T23:51:06.058022993Z value proxmox.0.node_pve.cpu 2021-08-09T23:48:01.104000000Z 16.77 2021-08-09T23:41:06.058022993Z 2021-08-09T23:51:06.058022993Z value proxmox.0.node_pve.cpu 2021-08-09T23:49:01.089000000Z 18.57 2021-08-09T23:41:06.058022993Z 2021-08-09T23:51:06.058022993Z value proxmox.0.node_pve.cpu 2021-08-09T23:50:01.119000000Z 20.2 2021-08-09T23:41:06.058022993Z 2021-08-09T23:51:06.058022993Z value proxmox.0.node_pve.cpu 2021-08-09T23:51:01.088000000Z 21.49
-
@feuersturm Ich kenne dein Query-Tool nicht, aber kannst du dort die mean-Funktion auf das value-Feld beschränken? ack ist Boolean und from String, darauf wird die mean-Funktion sehr wahrscheinlich solche Fehler werfen. Im Adapter-Code wird die Funktion immer nur auf das value-Feld ausgeführt und dort z.B. bei boolean Werten ausgelassen, um solche Fehler nicht zu produzieren.
Die letzte Query kannst du übersichtlicher gestalten, indem du noch
|> pivot(rowKey:["_time"], columnKey: ["_field"], valueColumn: "_value")
anhängst. -
@feuersturm WIe Excodibur sagt, Influxdb 1 hatscheinbar ein "Mean auf boolean" mit nem "percentile 50" oder soweas intern gleichgesetzt. FluxQL macht das scheinbar nicht. Und ja bei Boolean gibt es kein "vielleicht" was im Zweifel das Ergebnis von mean ist wenn die Daten nicht 100% treu oder false sind
Kleiner Randtip (auch wenn offtopic) : mean/avg ist alles blödsinn :-))) https://www.elastic.co/de/blog/averages-can-dangerous-use-percentile
-
@apollon77 direkt mal in der Influx1DB auf percentile(50) umgestellt für nen Bool-Wert. Mal sehen, ob ich das Englisch da korrekt verstanden hab ^^
-
kurze Frage, wird jetzt die eingestellte Vorhaltezeit der einzelnen Datenpunkte beachtet?
Ich kann das aus den Beiträgen nicht wirklich rauslesen. -
@stenmic hat noch nie geklappt und die Einstellung ist daher auch in der 2.0 ganz weg. Geht nur noch pro DB - aber da geht es jetzt auch wirklich.
-
@apollon77 ok… kann ich mehrere Datenbanken anlegen?
Geht das über Instanzen? -
@apollon77 weißt du vielleicht wie das der sql-Adapter mit ner MariaDB regelt? Funktionieren da die Vorgaben oder ist das auch nur eine “Attrappe“
-
@excodibur
Die influxdb UI wurde bei mir standardmäßig mit installiert und ist über den port 8086 erreichbar.
Wenn ich "value" auswähle, dann werden mir die Werte wieder dargestellt.
Das ist die Ausgabe mit der optimierten Query:
proxmox@DatenbankenTest:~$ influx query 'from(bucket:"iobroker") |> range(start:-15m) |> filter(fn: (r) => r._measurement == "proxmox.0.node_pve.cpu")|> pivot(rowKey:["_time"], columnKey: ["_field"], valueColumn: "_value")' Result: _result Table: keys: [_start, _stop, _measurement] _start:time _stop:time _measurement:string _time:time ack:bool from:string q:float value:float ------------------------------ ------------------------------ ---------------------- ------------------------------ ------------ ------------------------ ---------------------------- ---------------------------- 2021-08-10T18:31:15.028415368Z 2021-08-10T18:46:15.028415368Z proxmox.0.node_pve.cpu 2021-08-10T18:31:20.467000000Z true system.adapter.proxmox.0 0 20.61 2021-08-10T18:31:15.028415368Z 2021-08-10T18:46:15.028415368Z proxmox.0.node_pve.cpu 2021-08-10T18:32:20.476000000Z true system.adapter.proxmox.0 0 26.39 2021-08-10T18:31:15.028415368Z 2021-08-10T18:46:15.028415368Z proxmox.0.node_pve.cpu 2021-08-10T18:33:20.478000000Z true system.adapter.proxmox.0 0 21.75 2021-08-10T18:31:15.028415368Z 2021-08-10T18:46:15.028415368Z proxmox.0.node_pve.cpu 2021-08-10T18:34:20.487000000Z true system.adapter.proxmox.0 0 22.67 2021-08-10T18:31:15.028415368Z 2021-08-10T18:46:15.028415368Z proxmox.0.node_pve.cpu 2021-08-10T18:35:20.475000000Z true system.adapter.proxmox.0 0 19.91 2021-08-10T18:31:15.028415368Z 2021-08-10T18:46:15.028415368Z proxmox.0.node_pve.cpu 2021-08-10T18:36:20.472000000Z true system.adapter.proxmox.0 0 20.58 2021-08-10T18:31:15.028415368Z 2021-08-10T18:46:15.028415368Z proxmox.0.node_pve.cpu 2021-08-10T18:37:20.490000000Z true system.adapter.proxmox.0 0 18.83 2021-08-10T18:31:15.028415368Z 2021-08-10T18:46:15.028415368Z proxmox.0.node_pve.cpu 2021-08-10T18:38:20.483000000Z true system.adapter.proxmox.0 0 22.74 2021-08-10T18:31:15.028415368Z 2021-08-10T18:46:15.028415368Z proxmox.0.node_pve.cpu 2021-08-10T18:39:20.483000000Z true system.adapter.proxmox.0 0 18.35 2021-08-10T18:31:15.028415368Z 2021-08-10T18:46:15.028415368Z proxmox.0.node_pve.cpu 2021-08-10T18:40:20.479000000Z true system.adapter.proxmox.0 0 18.97 2021-08-10T18:31:15.028415368Z 2021-08-10T18:46:15.028415368Z proxmox.0.node_pve.cpu 2021-08-10T18:41:20.481000000Z true system.adapter.proxmox.0 0 18.96 2021-08-10T18:31:15.028415368Z 2021-08-10T18:46:15.028415368Z proxmox.0.node_pve.cpu 2021-08-10T18:42:20.481000000Z true system.adapter.proxmox.0 0 25.59 2021-08-10T18:31:15.028415368Z 2021-08-10T18:46:15.028415368Z proxmox.0.node_pve.cpu 2021-08-10T18:43:20.480000000Z true system.adapter.proxmox.0 0 17.72 2021-08-10T18:31:15.028415368Z 2021-08-10T18:46:15.028415368Z proxmox.0.node_pve.cpu 2021-08-10T18:44:20.483000000Z true system.adapter.proxmox.0 0 15.64 2021-08-10T18:31:15.028415368Z 2021-08-10T18:46:15.028415368Z proxmox.0.node_pve.cpu 2021-08-10T18:45:20.476000000Z true system.adapter.proxmox.0 0 19.26
Sieht somit doch gut aus
-
@stenmic Exakt. Jede instanz eine DB, damit kannst Du auch genau konfigurieren welche Datenpunkte wo hin laufen sollen
-
@stenmic Was meinst Du? MariaDB ist MySQL und so einfach MySQL einricjten, IP und Port, fertig. Oder was war die Frage (auch wenn das hier nicht reingehört)
-
@feuersturm Es wurde nich gemedlet das der Adapter craht bei Timeouts bzw Connection Lost ... das schaut sich @Excodibur gerade noch an ...