Neues Modul: 93_InfluxDBLog

Begonnen von d.schoen, 05 Mai 2017, 11:52:12

Vorheriges Thema - Nächstes Thema

ChrisW

Musste das asynchron bei dblog zu mysql auch aktivieren sonst ging bei fhem nichts mehr .. Ist das bei dem Modul hier auch ?

Würde das Modul gerne nutzen aber nicht wieder alle Geräte per dbloginclude/dblogexclude durchgehen was ich loggen will.

Wie richte ich das ganze am besten ein ? Will Grafana nutzen mit dieser Datenbank. Speicherplatz habe ich genug auf dem NAS also wollte ich erstmal beides parallel laufen lasen.
Raspberry PI3 mit allem möglichen.

kadettilac89

Zitat von: ChrisW am 24 Januar 2019, 20:33:40
Musste das asynchron bei dblog zu mysql auch aktivieren sonst ging bei fhem nichts mehr .. Ist das bei dem Modul hier auch ?

Würde das Modul gerne nutzen aber nicht wieder alle Geräte per dbloginclude/dblogexclude durchgehen was ich loggen will.

Wie richte ich das ganze am besten ein ? Will Grafana nutzen mit dieser Datenbank. Speicherplatz habe ich genug auf dem NAS also wollte ich erstmal beides parallel laufen lasen.

asynchron gibts (noch) nicht. deine infrastruktur muss stabil und verfügbar sein sonst hängt fhem

alle Geräte per dlboninclude / exclude bringt sowieso nichts da du die definition direkt im influxdb device machen musst.

Anlegen:
influx installieren .... gidf, gibt genügend anleitungen, in docker z. b. https://forum.fhem.de/index.php/topic,71551.msg631786.html#msg631786

db anlegen, z. b. influxfhem   https://docs.influxdata.com/influxdb/v1.7/query_language/database_management/#create-database

user mit passwort anlegen
https://docs.influxdata.com/influxdb/v1.7/administration/authentication_and_authorization/#user-management-commands

device in fhem anlegen
https://forum.fhem.de/index.php/topic,71551.msg630749.html#msg630749

ChrisW

#92
Danke aber dann muss ich wohl einen anderen weg finden :/
Ich habe bei dblog + ganz wenig werte die geloggt werden schon ein lahmes FHEM .. Läuft auf einem PI3 ... ohne was anderes. DB auf einem mysql Docker in der Synology .. 1 switch dazwischen NAS sogar mit 2 Lan angeschlossen usw. also am Netzwerk kann es nicht liegen da läuft alles ganz gut.
Ich werde es aber mal Versuchen in der hoffnung das es zu keinen "hänger" kommt.

Bei dblog wird auch quasi nichts gecached aber fhem bleibt sehr schnell.

Gibt es da vielleicht was anderes um die Daten auf dem sql docker in ein influxdb zu bekommen ? Ohne Fhem ? Da ich dort alle Geäte ja schon durch bin in include/exclude.

Edit: das hier wäre vielleicht etwas wenn fhem langsam werden sollte.
Raspberry PI3 mit allem möglichen.

kadettilac89

Ich habe bei dblog + ganz wenig werte die geloggt werden schon ein lahmes FHEM .. Läuft auf einem PI3 ... ohne was anderes. DB auf einem mysql Docker in der Synology .. 1 switch dazwischen NAS sogar mit 2 Lan angeschlossen usw. also am Netzwerk kann es nicht liegen da läuft alles ganz gut.

dann passt irgend was am setup nicht. ich habe auf meinem  raspberry mysql, influx, telegraf, fhem, kodi, und noch mehr und es hängt nichts. habe bewusst nichts auf die synology gepackt. Wenn synology in sleep mode geht hast du, egal wie gut das netzwerk ist, erstmal ein paar sekunden bis die festplatten wieder ansprechbar sind. Docker nutze ich - aktuell - auf dem rpi nicht da ich keine docker-compose umgebung für v2/v3 gefunden habe bzw. zum laufen bekommen habe.


Gibt es da vielleicht was anderes um die Daten auf dem sql docker in ein influxdb zu bekommen ? Ohne Fhem ? Da ich dort alle Geäte ja schon durch bin in include/exclude.

Damit lade ich mir alle 10 min das letzte 15 min delta von Mysql in eine influxdb. influx ignoriert dubletten ... darum überlappend
https://forum.fhem.de/index.php/topic,71551.msg838940.html#msg838940

ChrisW

Zitat von: kadettilac89 am 23 September 2018, 18:02:26
Vielleicht kanns jemand gebrauchen

habe mir ein Perl-Script geschrieben um Daten von DbLog nach Influxdb zu migrieren

- MySQL Konfiguration wird aus FHEM genommen
- InfluxDB host, port, user, pw müssen im Script eingetragen (geändert) werden
- InfluxDB, user und pw muss bereits existieren ... wenn das Modul bereits installiert ist - DB, user + pw von der Definition übernehmen
- Log der nicht geschriebenen Sätze wird im Fhem-Logverzeichnis erstellt

Läuft bei mir mit 500.000 Sätzen ca. 1 Stunde. Kann mehrfach ausgeführt werden. Sätze die schon existieren werden von InfluxDB ignoriert

Wenn man die anzahl der verarbeiteten Sätze sehen will Zeile 84 wieder einkommentieren, "      #print "$cnt\n";"   dann sieht man  bei welchem Satz (Nummer) gerade gearbeitet wird.

Läuft mit einem DB-Cursor somit läuft Memory nicht über. Dafür läufts länger.

Wenn man den Select einschränkt kann man auch paketweise arbeiten. Ich lade mir aktuell alle 5 Minuten die Sätze in InfluxDB. Beispielselect ist im Script als Kommentar enthalten.

Nicht-numerische Sätze landen im Fehlerlog, werden nicht migriert

Ansonsten ... läuft, jedoch etwas DB-Wissen vorausgesetzt. Und sichern ... ich bin nicht für Datenverluste verantwortlich :)

Aufruf auf der Console

perl mysql2influx__db_fhem.pm

Sorry aber wie benutze ich da sam besten auf meinem PI ? Kann man das per FHEM ? Habe es in /opt/fhem liegen und in /opt/fhem/FHEM Wäre doch schön es aus fhem erraus zu starten ?
Raspberry PI3 mit allem möglichen.

kadettilac89

Zitat von: ChrisW am 25 Januar 2019, 10:10:16
Sorry aber wie benutze ich da sam besten auf meinem PI ? Kann man das per FHEM ? Habe es in /opt/fhem liegen und in /opt/fhem/FHEM Wäre doch schön es aus fhem erraus zu starten ?

ich habe einen eintrag in der crontab. ansonsten ein "at" in fhem. such im forum wie du aus fhem ein system-command absetzen kannst. müsste selber suchen, gibt genügend anfragen im anfänger-bereich.

ChrisW

okay also das script läuft ich sehe auch die Werte und auch die Geräte zeigt er mir an .. aber ich bekomme keine Ausgabe in Grafana nicht und auch in chronograpf was vorher sofort klappte. Er sagt dort syntax stimmt aber keine Inhalte.

Vorher hat das Modul ja kein Device geloggt sondenr nur die Readings nun habe ich auch überall die Geräte das macht wohl irgendwie Probleme
Raspberry PI3 mit allem möglichen.

kadettilac89

keine ausgabe ist komisch, selbst wenn das script blödsinn macht werden keine bestehende daten gelöscht. es liest nur daten aus mysql und fügt in influx ein.

läuft das script noch? bei mir lief die initiale befüllung ohne filter eine stunde. ... starte mal raspberry und synology durch.

ChrisW

#98
also hab mal eingeschaltet das er Zeigt wieviel er schon hat bin bei 23000  aber bisher wohl nirgends value enthalten .. warten wir mal ab bis er fertig ist... aber schon komisch

Es geht es musste wirklich komplett durchlaufen :D Erst jetzt kann ich mir alle Werte anschauen
Raspberry PI3 mit allem möglichen.

plin

Zitat von: kadettilac89 am 24 Januar 2019, 22:16:01
asynchron gibts (noch) nicht. deine infrastruktur muss stabil und verfügbar sein sonst hängt fhem

Ich habe gerade mal folgende Variante eingerichtet und getestet:

FHEM1 -> FHEM3 in Docker mit FHEM2FHEM und InfluxDBLog -> InfluxDB in Docker
FHEM2 -> FHEM3 in Docker mit FHEM2FHEM und InfluxDBLog -> InfluxDB in Docker

Die relevanten Passagen aus der FHEM1 fhem.cfg:
define 1to3 FHEM2FHEM 172.17.0.4:7072 LOG:.*
attr 1to3 eventOnly 1

define 2to3 FHEM2FHEM 172.17.0.3:7072 LOG:.*
attr 2to3 room Master

define influxlog InfluxDBLog 192.168.1.111 8086 fhem fhem fhem .*
attr influxlog addStateEvent 1


Alle Reading-Änderungen aus den Instanzen FHEM1, FHEM2 und FHEM3 werden in die InfluxDB geschrieben. Die Anzeige erfolgt in Grafana (ebenfalls in einem Docker Container).
Wenn ich den Docker-Container stoppe laufen FHEM1 und FHEM2 problemlos weiter (mir fehlen dann nur die Metriken in der InfluxDB).

FHEM1 (Main) Raspi4 mit CUL, Homematic, SDUINO 433/OOK, zentrale Steuerung
FHEM2 (Keller) x86 mit CUL/hmland, IP-basierte Module
FHEM3 (Erdgeschoss) Raspi2 mit SDUINO 868/GFSK
FHEM4 (Hausanschlussraum), USV und OBIS-Modul
FHEM5 (Docker) mit FHEM2FHEM, InfluxDB

kadettilac89

Zitat von: ChrisW am 25 Januar 2019, 14:19:10
also hab mal eingeschaltet das er Zeigt wieviel er schon hat bin bei 23000  aber bisher wohl nirgends value enthalten .. warten wir mal ab bis er fertig ist... aber schon komisch

Es geht es musste wirklich komplett durchlaufen :D Erst jetzt kann ich mir alle Werte anschauen

Möglich dass beim ersten Lauf noch Strukturdaten fehlen. Beim Update später alle x-Minuten sollte das nicht mehr passieren.

pitre

Ich kenn mich jetzt noch nicht so gut aus, v.a. bei "tiefergehenden" FHEM-Anwendungen.
Es ist so: ich habe eine influx-db, die Daten aus anderen Systemen aufzeichnet - und auf diese Daten möchte ich in FHEM zugreifen und diese für Abfragen nutzen (im Speziellen: der aktuelle Temperaturwert aus einem Measurement).
Meine Frage: kann man die Daten aus der influx-db auch auslesen, und wenn ja, wie?

Danke euch!


ChrisW

noch eine kurze frage wie startest du das script "mysql2influx__db_fhem.pm" per cronjob ?
Und was passiert wenn das script noch nciht fertig war ? Hatte es gestern abend das letzte mal laufen und nun braucht es schon wieder schon 1 Stunde. Wenn nu der Cronjob vorher das nochmal startet ?

Kann das script auch nur per sudo starten egal ob Home oder wo auch immer es liegt.
Raspberry PI3 mit allem möglichen.

kadettilac89

Zitat von: ChrisW am 26 Januar 2019, 15:35:55
noch eine kurze frage wie startest du das script "mysql2influx__db_fhem.pm" per cronjob ?
Und was passiert wenn das script noch nciht fertig war ? Hatte es gestern abend das letzte mal laufen und nun braucht es schon wieder schon 1 Stunde. Wenn nu der Cronjob vorher das nochmal startet ?

Kann das script auch nur per sudo starten egal ob Home oder wo auch immer es liegt.

wenn es eine stunde läuft hast du keine einschränkung auf 15 minuten oder so. änderung auf die ich irgendwo mal hingewiesen hab. wenn alle 5 minuten der job läuft dann lese ich alles was die letzten 15 minuten geändert wurde. dubletten werden sowieso ignoriert. läuft bei mir ein paar sekunden. für den fall, dass dein server down ist muss du halt manuell nochmal einen full-load machen damit wieder alles drin ist, oder größeren range im timestamp verwenden.

änderung im script ... where-clause timestamp

my $SQL_QUERY=<<__CURSOR_1__;
select timestamp, UNIX_TIMESTAMP(timestamp), device, reading, value  from history where timestamp > TIMESTAMP(DATE_SUB(NOW(), INTERVAL 15 minute))
__CURSOR_1__



globale crontab ....

nano /etc/crontab

# mysql2influx
*/5 * * * * root perl /usr/local/bin/mysql2influxdb_15min.pm >>/dev/null 2>&1

service cron restart       ist nötig damit die geänderte crontab verwendet wrid, alternativ server restart.

alternativ zu der globalen crontab ... crontab -e ... verwenden, s. https://wiki.ubuntuusers.de/Cron/ .... ist für dich als anfänger in dem bereich vorzuziehen.