NEWS
Test Adapter influxdb 2.0
-
@sputnik24
Und das kann/muss man nicht selber auf Stand halten? -
@sputnik24 Hm ... 0 heisst an sich unendlich ... aoso das kanns nicht sein
-
@sputnik24 Kannst DU bitte auch mal im influxdb log schauen?
-
@apollon77 Gerne und danke.
Aber muss doch an der retention liegen. Log vom gleichen Zeitstempel wie oben:
2021-08-01 12:06:11 stdout [httpd] 10.0.0.9 - user [01/Aug/2021:12:06:11 +0000] "GET /query?db=iobroker&p=%5BREDACTED%5D&precision=ms&q=CREATE+RETENTION+POLICY+%22global%22+ON+iobroker+DURATION+0s+REPLICATION+1+SHARD+DURATION+604800s+DEFAULT&u=user HTTP/1.1" 200 248 "-" "-" dcd65bb8-f2c0-11eb-9ebb-001132661b83 89601 2021-08-01 12:06:11 stdout 2021-08-01T12:06:11.761523Z info Executing query {"log_id": "0V2ScIbW000", "service": "query", "query": "CREATE RETENTION POLICY global ON iobroker DURATION 0s REPLICATION 1 SHARD DURATION 1w DEFAULT"} 2021-08-01 12:06:11 stdout [httpd] 10.0.0.9 - user [01/Aug/2021:12:06:11 +0000] "GET /query?db=iobroker&p=%5BREDACTED%5D&precision=ms&q=SHOW+RETENTION+POLICIES+ON+iobroker&u=user HTTP/1.1" 200 164 "-" "-" dcd3211e-f2c0-11eb-9eba-001132661b83 7913 2021-08-01 12:06:11 stdout 2021-08-01T12:06:11.747205Z info Executing query {"log_id": "0V2ScIbW000", "service": "query", "query": "SHOW RETENTION POLICIES ON iobroker"} 2021-08-01 12:06:11 stdout [httpd] 10.0.0.9 - user [01/Aug/2021:12:06:11 +0000] "GET /query?db=iobroker&p=%5BREDACTED%5D&precision=ms&q=show+databases&u=user HTTP/1.1" 200 122 "-" "-" dccc4a57-f2c0-11eb-9eb9-001132661b83 27108 2021-08-01 12:06:11 stdout 2021-08-01T12:06:11.714386Z info Executing query {"log_id": "0V2ScIbW000", "service": "query", "query": "SHOW DATABASES"} 2021-08-01 12:04:30 stdout 2021-08-01T12:04:30.348661Z info TSM compaction (end) {"log_id": "0V2ScIbW000", "engine": "tsm1", "tsm1_strategy": "full", "tsm1_optimize": false, "trace_id": "0VhPTHN0000", "op_name": "tsm1_compact_group", "op_event": "end", "op_elapsed": "176.472ms"} 2021-08-01 12:04:30 stdout 2021-08-01T12:04:30.348414Z info Finished compacting files {"log_id": "0V2ScIbW000", "engine": "tsm1", "tsm1_strategy": "full", "tsm1_optimize": false, "trace_id": "0VhPTHN0000", "op_name": "tsm1_compact_group", "tsm1_files_n": 1} 2021-08-01 12:04:30 stdout 2021-08-01T12:04:30.348078Z info Compacted file {"log_id": "0V2ScIbW000", "engine": "tsm1", "tsm1_strategy": "full", "tsm1_optimize": false, "trace_id": "0VhPTHN0000", "op_name": "tsm1_compact_group", "tsm1_index": 0, "tsm1_file": "/var/lib/influxdb/data/iobroker/autogen/319/000000011-000000002.tsm.tmp"} 2021-08-01 12:04:30 stdout 2021-08-01T12:04:30.172427Z info Compacting file {"log_id": "0V2ScIbW000", "engine": "tsm1", "tsm1_strategy": "full", "tsm1_optimize": false, "trace_id": "0VhPTHN0000", "op_name": "tsm1_compact_group", "tsm1_index": 2, "tsm1_file": "/var/lib/influxdb/data/iobroker/autogen/319/000000011-000000001.tsm"} 2021-08-01 12:04:30 stdout 2021-08-01T12:04:30.172376Z info Compacting file {"log_id": "0V2ScIbW000", "engine": "tsm1", "tsm1_strategy": "full", "tsm1_optimize": false, "trace_id": "0VhPTHN0000", "op_name": "tsm1_compact_group", "tsm1_index": 1, "tsm1_file": "/var/lib/influxdb/data/iobroker/autogen/319/000000010-000000001.tsm"} 2021-08-01 12:04:30 stdout 2021-08-01T12:04:30.172338Z info Compacting file {"log_id": "0V2ScIbW000", "engine": "tsm1", "tsm1_strategy": "full", "tsm1_optimize": false, "trace_id": "0VhPTHN0000", "op_name": "tsm1_compact_group", "tsm1_index": 0, "tsm1_file": "/var/lib/influxdb/data/iobroker/autogen/319/000000009-000000005.tsm"} 2021-08-01 12:04:30 stdout 2021-08-01T12:04:30.172303Z info Beginning compaction {"log_id": "0V2ScIbW000", "engine": "tsm1", "tsm1_strategy": "full", "tsm1_optimize": false, "trace_id": "0VhPTHN0000", "op_name": "tsm1_compact_group", "tsm1_files_n": 3} 2021-08-01 12:04:30 stdout 2021-08-01T12:04:30.172190Z info TSM compaction (start) {"log_id": "0V2ScIbW000", "engine": "tsm1", "tsm1_strategy": "full", "tsm1_optimize": false, "trace_id": "0VhPTHN0000", "op_name": "tsm1_compact_group", "op_event": "start"} 2021-08-01 12:04:03 stdout 2021-08-01T12:04:03.266358Z info Retention policy deletion check (end) {"log_id": "0V2ScIbW000", "service": "retention", "trace_id": "0VhPRdGG000", "op_name": "retention_delete_check", "op_event": "end", "op_elapsed": "0.444ms"} 2021-08-01 12:04:03 stdout 2021-08-01T12:04:03.265951Z info Retention policy deletion check (start) {"log_id": "0V2ScIbW000", "service": "retention", "trace_id": "0VhPRdGG000", "op_name": "retention_delete_check", "op_event": "start"}
-
@sputnik24
Die Sache ist die: In Influx kann man "by Design" keine Retention von weniger als einer Stunde setzen, da die Entwickler explizit verhinden wollten, dass so etwas passiert.Eine Retention von 0s ist gleichbedeutend mit unendlich (INF). In der Retention Tabelle kannst du das selbst sehen, wenn du Folgendes ausführst:
show retention policies name duration shardGroupDuration replicaN default ---- -------- ------------------ -------- ------- autogen 0s 168h0m0s 1 false global 0s 168h0m0s 1 true
Da siehst man, dass nicht nur unsere custom Retention-Policy "global" mit 0s gesetzt ist, sondern auch die Default-Policy "autogen" die Influx immer anlegt und auf unendlich stellt. Wir packen diese im Adapter auch nicht an.
Folgende Befehle zeigen auch, das Influx unter 0s "unendlich" versteht:
> alter retention policy global on iobroker duration 0s > show retention policies name duration shardGroupDuration replicaN default ---- -------- ------------------ -------- ------- autogen 0s 168h0m0s 1 false global 0s 168h0m0s 1 true > > alter retention policy global on iobroker duration INF > show retention policies name duration shardGroupDuration replicaN default ---- -------- ------------------ -------- ------- autogen 0s 168h0m0s 1 false global 0s 168h0m0s 1 true > > alter retention policy global on iobroker duration 1s ERR: retention policy duration must be at least 1h0m0s
In den ersten beiden Fällen setzt Influx unabhängig von INF, oder 0s die Retention in der Tabelle immer auf 0s. Im letzten Fall bei 1s beschwert sich Influx, da die Retention zu kurz ist.
Mir ist nur bekannt, dass Influx alle Daten löscht, wenn man die alte Retention Policy löscht und danach eine neue anlegt. Der Adapter macht das aber explizit nicht, sondern aktualisiert immer die bestehende Policy. Hast du sonst noch andere Änderungen an der Retention manuell in der DB durchgeführt?
-
@excodibur Wenn ich show retention policies ausführe, erhalte ich:
show retention policies name duration shardGroupDuration replicaN default ---- -------- ------------------ -------- ------- autogen 0s 168h0m0s 1 true
global fehlt mir also. Zu deiner letzten Frage: Ich hatte vor dem Update des Adapters (aktuell bin ich wieder auf 1.9.2) manuell weitere Datenpunkte zum Logging in influxdb hinzugefügt und deren Vorhaltezeit auf einen Tag gesetzt, da ich eigentlich nur am aktuellen Wert interessiert bin für Grafana.
Der Punkt ist, selbst wenn ich auf Adapter-Version 2.0 bin, das influxdb Backup einspiele und dann Adapter starte, werden alle Werte immer gelöscht.
-
@sputnik24 Verstehe ich das richtig, dass deiner Datenbank nur vor dem Starten der neuen Adapter-Version die "global" policy fehlt? Nachdem die neue Adapter-Version gestartet wird, sollte diese angelegt werden und in deiner DB neben "autogen" als default sichtbar sein. Die Logs deines Influx-Servers zeigen ja, das das Kommando zum Erstellen der Policy empfangen wurde (Zeile 2). D.h. sie müsste danach da sein.
Sollte dem so sein, vermute ich, dass es an dem Wechsel der default-Policy liegt. In dem Fall sollten die vorigen Daten nicht weg sein, sondern nur mit den regulären DB-Queries nicht mehr angezeigt werden. Gibt man die alte Policy z.B. beim SELECT Query mit an, sollten die Daten wieder sichtbar sein. Siehe auch https://docs.influxdata.com/influxdb/v1.7/troubleshooting/frequently-asked-questions/#why-am-i-missing-data-after-creating-a-new-default-retention-policy für mehr Infos dazu.
Siehst du die alten Daten so nach dem Start der neuen Adapter-Version so direkt in der DB noch?
-
@excodibur Schau ich mir morgen in Ruhe an, aber klingt plausibel. Ich bin aktuell ja wieder auf 1.9.2 und möchte heut nicht mehr am System basteln.
Blöde Frage: Krieg ich die Daten über die default-Policy wieder angezeigt oder zur default-Policy portiert?
-
Ich habe es jetzt noch nicht getestet, aber müsste so in die Richtung gehen:
/* DB auswählen */ use iobroker /* Namen all gespeicherten States rausfinden */ show measurements /* Gespeicherte Daten von alter (autogen) in neue (global) retention kopieren */ SELECT * INTO "iobroker"."global"."<measurement-name>" FROM "iobroker"."autogen"."<measurement-name>" GROUP BY * /* Alte retention policy löschen, damit alle damit verbunden Measurements gelöscht werden. Vorher checken, das sie kopiert wurden!!!! */ DROP RETENTION POLICY "autogen" ON "iobroker"
-
@sputnik24 Bevor du migrierst, warte bitte noch kurz. Wir überlegen, ob man den Namen der Retention nicht per Config änderbar machen sollte, sodass man z.B. in deinem Fall den Adapter dazu bringen kann, "autogen" weiter zu nutzen.
-
Moin, habe gerade versucht auf den Adapter 2.0 zu wechseln und bekomme die Instanz nicht mehr ans Laufen:
startInstance system.adapter.influxdb.0: required adapter "admin" has wrong version. Installed "5.1.15", required ">=5.1.19"!
Installiert ist Admin 5.1.19.
Meldung bleibt allerdings auch beim Downgrade vom Adapter auf 1.9.5 erhalten.Eine Idee, wo es hier hängt?
Danke vorab.
-
iobroker list adapters iobroker list instances
-
system.adapter.accuweather : accuweather - v1.2.0 system.adapter.admin : admin - v5.1.15 system.adapter.alexa2 : alexa2 - v3.9.3 system.adapter.discovery : discovery - v2.7.0 system.adapter.fullybrowser : fullybrowser - v2.0.8 system.adapter.ical : ical - v1.11.1 system.adapter.influxdb : influxdb - v1.9.5 system.adapter.info : info - v1.9.6 system.adapter.javascript : javascript - v5.2.8 system.adapter.knx : knx - v1.0.45 system.adapter.lovelace : lovelace - v2.0.4 system.adapter.luxtronik2 : luxtronik2 - v0.3.0 system.adapter.modbus : modbus - v3.4.9 system.adapter.pushover : pushover - v2.0.5 system.adapter.roomba : roomba - v1.1.2 system.adapter.simple-api : simple-api - v2.6.1 system.adapter.sma-em : sma-em - v0.6.3 system.adapter.sourceanalytix : sourceanalytix - v0.4.9 system.adapter.trashschedule : trashschedule - v1.1.1 system.adapter.unifi-protect : unifi-protect - v0.0.12 system.adapter.web : web - v3.4.7 system.adapter.zigbee : zigbee - v1.5.6
Hmm, unter Instanzen wird mir die 5.1.19 angezeigt.
Update, Upgrade Self und Upgrade habe ich laufen lassen.
Weißt du, woran das liegen kann?/edit: Hab den Adapter über die Konsole neu installiert. Jetzt läuft es. Danke.
system.adapter.accuweather : accuweather - v1.2.0 system.adapter.admin : admin - v5.1.19 system.adapter.alexa2 : alexa2 - v3.9.3 system.adapter.discovery : discovery - v2.7.0 system.adapter.fullybrowser : fullybrowser - v2.0.8 system.adapter.ical : ical - v1.11.1 system.adapter.influxdb : influxdb - v2.0.0 system.adapter.info : info - v1.9.8 system.adapter.javascript : javascript - v5.2.8 system.adapter.knx : knx - v1.0.45 system.adapter.lovelace : lovelace - v2.0.4 system.adapter.luxtronik2 : luxtronik2 - v0.3.0 system.adapter.modbus : modbus - v3.4.9 system.adapter.pushover : pushover - v2.0.5 system.adapter.roomba : roomba - v1.1.2 system.adapter.simple-api : simple-api - v2.6.1 system.adapter.sma-em : sma-em - v0.6.3 system.adapter.sourceanalytix : sourceanalytix - v0.4.9 system.adapter.trashschedule : trashschedule - v1.1.1 system.adapter.unifi-protect : unifi-protect - v0.0.12 system.adapter.web : web - v3.4.7 system.adapter.zigbee : zigbee - v1.5.6
-
@lessthanmore mach mal iobroker upload admin nd schau obs dann noch auftritt
-
@sputnik24 Bitte spiele nochmal dein DB-Backup ein, ziehe die aktuelle Version von Github und probiere es nochmal. Für Influx 1.x wurde der Adapter jetzt so angepasst, dass er immer die bestehende Default-Policy bzgl. Retention aktualisiert. D.h. in deinem Fall sollte dann nur "autogen" angepasst werden und auch weiterhin Default bleiben.
-
@excodibur said in Test Adapter influxdb 2.0:
@sputnik24 Bitte spiele nochmal dein DB-Backup ein, ziehe die aktuelle Version von Github und probiere es nochmal. Für Influx 1.x wurde der Adapter jetzt so angepasst, dass er immer die bestehende Default-Policy bzgl. Retention aktualisiert. D.h. in deinem Fall sollte dann nur "autogen" angepasst werden und auch weiterhin Default bleiben.
Ihr seid die Besten! Default policy ist weiterhin autogen, alle Daten sind weiter normal abrufbar und neue werden geschrieben.
Nun kommt der weitaus kompliziertere Part - influxdb auf 2.0 upgraden, läuft bei mir ebenfalls in Docker. Hat das hier schonmal jemand gemacht?
Wie ist das Vorgehen aus Sicht des Adapters?
Adapter stoppen, influxdb upgraden, Adapter-Einstellungen DB-Version auf 2.x ändern, Adapter starten. Wenn die Daten beim influxdb upgrade erfolgreich migriert werden, sollte das unter Erhalt der Daten und retention policy funktionieren? -
@sputnik24 Das würde ich auch gerne wissen.
Habe es eben versucht (proxmox, lxc). Ins WebUI von influx2 komme ich, aber irgendwie waren überall noch config-Dateien, etc. von der 1.x Version.
Im Endeffekt habe ich ein Backup eingespielt und warte jetzt bis eine schöne und ausführliche Anleitung irgendwann mal verfügbar istAnsonsten habe ich das Upgrade gemäß dieser Anleitung gemacht: https://docs.influxdata.com/influxdb/v2.0/upgrade/v1-to-v2/automatic-upgrade/#perform-the-upgrade
-
@lessthanmore said in Test Adapter influxdb 2.0:
@sputnik24 Das würde ich auch gerne wissen.
Habe es eben versucht (proxmox, lxc). Ins WebUI von influx2 komme ich, aber irgendwie waren überall noch config-Dateien, etc. von der 1.x Version.
Im Endeffekt habe ich ein Backup eingespielt und warte jetzt bis eine schöne und ausführliche Anleitung irgendwann mal verfügbar istAnsonsten habe ich das Upgrade gemäß dieser Anleitung gemacht: https://docs.influxdata.com/influxdb/v2.0/upgrade/v1-to-v2/automatic-upgrade/#perform-the-upgrade
Für den Docker Container gibt es auch eine Anleitung: https://registry.hub.docker.com/_/influxdb/
Ich hatte gestern meinen bestehenden Container kopiert und wollte es mit der Kopie testen. Hat aber nicht funktioniert und hatte irgendwann keinen Nerv mehr. -
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.