Autor Thema: Neues Modul: 93_InfluxDBLog  (Gelesen 8007 mal)

Offline antst

  • Newbie
  • Beiträge: 1
Antw:Neues Modul: 93_InfluxDBLog
« Antwort #45 am: 28 November 2017, 18:31:27 »
Thanks for excellent work!

I configured logging to InfluxDB, converted my text logs to it, and embedded back to FHEM plots from Grafana (dynamically with all goodness of Grafana) and it works like a charm now!

Offline volschin

  • Hero Member
  • *****
  • Beiträge: 1107
Antw:Neues Modul: 93_InfluxDBLog
« Antwort #46 am: 10 Dezember 2017, 14:31:27 »
Ich bin gerade auf den Thread gestoßen, da ich auf eine Time Series Datenbank umstellen wollte. Ich las im Netz, dass InfluxDB die bis zu 75-fache Performance einer MariaDB bringt.
Ich finde es immer wieder cool, dass schon einer das Thema vorgedacht hat. Ich war noch unschlüssig, ob InfluxDB oder Prometheus, aber mit dem vorhandenen Modul fällt erstmal die Entscheidung bei mir, InfluxDB auszuprobieren.  :)

Vielen Dank an d.schoen für das Modul.
RPi3+ FHEM5.8,HM-MOD-RPI-PCB+HM-USB-CFG2+hmland
HM: CC-TC,CC-VD,LC-Dim1T-Pl-2,LC-SW1-PL2,LC-Sw1PBU-FM,LC-Dim1PWM-CV,PB-4DIS-WM,RC-19-SW
SEC-RHS,SEC-SC,SEC-SD,SEC-WIN,SEC-MDIR,Sen-MDIR-WM55,SEC-Sco
HUE: diverse, Amzn Dash-Buttons
4xRPi,4xCO20,OWL+USB,HarmonyHub,FB7590 v6.92,Echo Dot,Logi Circle2

Offline pano

  • New Member
  • *
  • Beiträge: 21
Antw:Neues Modul: 93_InfluxDBLog
« Antwort #47 am: 12 Dezember 2017, 10:06:01 »
Hallo allerseits,

ich habe das Modul nun schon seit einigen Monaten in Betrieb und versuche grade das Logging etwas einzuschränken.
Allerdings wird bei mir garnichts mehr geloggt, sobald ich im regex der def irgend etwas anderes als .* stehen habe.

Bsp:
localhost 8086 meidedb meinuser meinpwd (.*:temperature)

Übersehe ich was, oder kann jemand das auch nachvollziehen?

Danke, Pano

Offline fischit

  • Jr. Member
  • **
  • Beiträge: 84
Antw:Neues Modul: 93_InfluxDBLog
« Antwort #48 am: 12 Dezember 2017, 17:46:02 »
Meine Definition läuft mit
<host> <port> <DB> <username> <passwort> .*:(temperature|humidity|lueftung|absFeuchte).*

Offline fervor

  • New Member
  • *
  • Beiträge: 3
Antw:Neues Modul: 93_InfluxDBLog - FileLog Import -> influxdb
« Antwort #49 am: 17 Dezember 2017, 20:45:11 »
Hi,

ich bin gerade dabei meine alten FileLogs in die influxdb zu übertragen. Dazu benutze ich ein kleines shell script.
Vielleicht hat ja noch jemand Bedarf.

Es werden alle im gleichen Verzeichnis gefundenen Logs berücksichtigt. Nach dem Import werden die fertigen Logs nach ./ok verschoben. Vielleicht vor dem finalen Start nochmal mit echo vor der curl Anweisung testen.

#!/bin/bash

host=localhost:8086
influxdb_name=fhem_db


################################################################################


mkdir -p ./ok

for file in $(find . -name "*.log" | sort)
do

  while read line
  do

        year=$(echo $line | cut -d - -f 1)
        month=$(echo $line | cut -d - -f 2)
        day=$(echo $line | cut -d - -f 3 | cut -d _ -f 1)
        hour=$(echo $line | cut -d _ -f 2 | cut -d : -f 1)
        minute=$(echo $line | cut -d : -f 2)
        second=$(echo $line | cut -d : -f 3 | cut -d ' ' -f 1)
        sensor=$(echo $line | cut -d ' ' -f 2)
        reading=$(echo $line | cut -d ' ' -f 3 | cut -d : -f 1)
        value=$(echo $line | cut -d ' ' -f 4)

        time=$(echo $(date -d $year'-'$month'-'$day' '$hour':'$minute':'$second +%s)000000000)

        #Test auf nummerische Werte
        if [ "$(echo $value | grep -o '[0-9.]*')" != "" ]; then
#               echo $year-$month-$day'_'$hour:$minute:$second - $time - $sensor $reading $value
                curl -i -XPOST 'http://'$host'/write?db='$influxdb_name'' --data-binary $reading',site_name='$sensor' value='$value' '$time''
        fi


  done < $file

    mv $file ./ok/$file

done

Offline pano

  • New Member
  • *
  • Beiträge: 21
Antw:Neues Modul: 93_InfluxDBLog
« Antwort #50 am: 18 Dezember 2017, 00:00:41 »
@d.schoen: erst mal vielen Dank für das Modul. Habe mittlerweile so ziemlich alles an Logvisualisierung in Grafana verlegt, was ohne dein InfluxDB Modul nicht geklappt hätte. Danke dafür.
Davon mal abgesehen, entwickelst Du das Modul noch weiter?

Zum einen denke ich, dass man mit den Tags in der Influx noch eine Menge machen könnte (im Sinne von eigene Tags vergeben).

Zum anderen bietet Grafana seit einiger zeit auch sog. Annotations, die man hervorragend nutzen könnte um "binäre" Ereignisse (zB Fenster auf/zu) in den Graphen/Dashboards darzustellen. Die dazugehörige Logik könnte ja auch perspektivisch ins InfluxDB Modul wandern.

Und zu guter Letzt bietet das Modul bisher ja die Möglichkeit per Regex die zu protokollierenden Events einzuschränken. Bei hinreichend vielen verschiedenen zu loggenden Devices und Events wird die DEF aber zunehmend unübersichtlich. Vieleicht wäre ein umgekehrter Ansatz hinfreich iSv an einem Device selbst hinterlegen, ob und welche Events es in InfluxDB loggen soll.

Was denkst Du darüber?
Grüße, Pano

Offline doridian

  • New Member
  • *
  • Beiträge: 7
Antw:Neues Modul: 93_InfluxDBLog
« Antwort #51 am: 18 Dezember 2017, 16:26:45 »
Ich habe mal ein bisschen an dem Modul rumgebaut
Es speichert jetzt auch den device type/module mit als tag.
Ausserdem kann es metrics remappen (und in meiner Version loggt es nur Attribute, wofuer es mappings hat). Weil viele Module loggen z.B. temperatur als "measured-temp" oder "temperature", manche sogar als "other"
Ebenfalls eingebaut habe ich ein globales attribute influxIgnore, womit man devices ignorieren kann, selbst wenn der regex matcht (Diese ganzen HomeMatic subdevices wuerden sonst doppelte Log-Werte eintragen, die nicht wirklich nuetzlich sind)

https://github.com/Doridian/fhem-InfluxDBLog/blob/master/FHEM/93_InfluxDBLog.pm

Vielleicht koennte man auch noch device-specifische remaps einbauen, um die Attribute einzuschraenken.

Offline rafael.l

  • Newbie
  • Beiträge: 1
Antw:Neues Modul: 93_InfluxDBLog
« Antwort #52 am: 28 Dezember 2017, 21:17:09 »
Hallo Leute!

Vielen Dank für die sinnvolle Erweiterung für FHEM. Allerdings habe ich Schwierigkeiten Werte von FHEM an die influxDB zu schicken. Bei der Einrichtung habe ich mich an diese beiden howtos gehalten (https://www.frombeyond.de/2017/influxdb-grafana-setup/, https://www.frombeyond.de/2017/fhem-6-grafana-und-influxdb/).

Mittlerweile habe ich herausgefunden, dass es an der Formatierung der Log-Datei liegt. Wie muss die Log-Datei aussehen, damit das Modul tut, was es soll?

Diese Formatierung führt zu einem http-400-error:

2017-12-28_21:11:37 WZ_spannung 3023
Vielen Dank für Eure Hilfe!

Offline pano

  • New Member
  • *
  • Beiträge: 21
Antw:Neues Modul: 93_InfluxDBLog
« Antwort #53 am: 28 Dezember 2017, 22:49:50 »
Was genau probierst Du denn? Und was hat die Log Datei damit zu tun? Das Modul schreibt - je nachdem was du in der def stehen hast - alle numerischen Readings die ein Event erzeugen in die InfluxDB.

Offline toolking

  • Newbie
  • Beiträge: 1
Antw:Neues Modul: 93_InfluxDBLog
« Antwort #54 am: 30 Dezember 2017, 00:16:34 »
@d.schoen, danke fürs Modul, wir benutzen influx/grafana in der Firma und ich hab mich gleich wohl gefühlt.
@doridian, danke für die Erweiterung.

Ich habe aber einen kleinen Bug gefunden. Wo kann ich den PR hinschicken? ;)

Negative Werte werden bei mir nicht richtig geschrieben.
in der Funktion: InfluxDBLog_Write
...
my $value = $arr[1];
return if($value =~ m/[^.\d]/);
...
wird hier ein negativer $value rausgeschmissen. Habs bei den negativen Außentemperaturen momentan, zum ersten mal festgestellt.

Mein Fix war, einfach den regex zu erweitern:
m/[^.\d-]/
12xLaCrosse via JeeLink+ser2net, 18xMAX! via  MAXCUN, SML(OBIS) via ser2net, 4xPCA301 via JeeLink+ser2net, Div. HM via HM-LAN-GW

Offline shaddi

  • New Member
  • *
  • Beiträge: 16
Antw:Neues Modul: 93_InfluxDBLog
« Antwort #55 am: 12 Januar 2018, 16:17:47 »
Damit bleibt die einem die doppelte Datenhaltung erspart.
Auch sind String-Werte wie open/closed kein Problem und man erspart sich zusätzliche numerische Userreadings um das in InfluxDB loggen zu können.

Die Werte kann man dann direkt im SELECT Statement wieder zu Werten mappen um sie in Grafana in den Graphen zu bekommen.
Durch die vielfältigen Funktionen die bei einem SELECT möglich sind, brauchen viele Sachen auch gar nicht in Grafana integriert werden, da man das schon auf MySQL Seite erledigen kann.

z.B. Temperaturdaten ausdünnen und durch Mittelwerte ersetzen, damit der Graph schneller lädt / weniger Traffic erzeugt usw.
Oder Offsets auf Werte aufrechnen um mehrere Kurven übereinander in einem Graphen darzustellen.

Kannst du vielleicht ein-zwei Beispiele rein werfen, bitte? Ich stellte mich gerade echt zu blöd an, sinnvolle SQL-Statements zu definieren, die dann im Grafana irgendwas anzeigen..

Offline fischit

  • Jr. Member
  • **
  • Beiträge: 84
Antw:Neues Modul: 93_InfluxDBLog
« Antwort #56 am: 12 Januar 2018, 16:26:16 »
Kannst du vielleicht ein-zwei Beispiele rein werfen, bitte? Ich stellte mich gerade echt zu blöd an, sinnvolle SQL-Statements zu definieren, die dann im Grafana irgendwas anzeigen..
Beispiele findest du hier einiges: https://forum.fhem.de/index.php/topic,77724.0.html

Offline g0t0

  • Newbie
  • Beiträge: 2
Antw:Neues Modul: 93_InfluxDBLog
« Antwort #57 am: 17 März 2018, 16:20:49 »
Ich bin leider zu doof für die RegEx...

Ich würde gerne alle Readings in die influxDB schieben, deshalb ist ja erstmal .* die RegEx dafür. Damit kommen nur die rein nummerischen Wert in die DB.
Weitere Versuche von mir:
.*:(\d+\.?\d*)
.*:.*:(\d+\.?\d*)

Im RegEx-Tester filtert es aber genau das was ich will: nur floats und ints. Passt z.B. bei "dim 40", "10 %" und "20.5  C".

Wo ist mein Denkfehler?
« Letzte Änderung: 17 März 2018, 16:22:52 von g0t0 »

Offline artcrime

  • New Member
  • *
  • Beiträge: 6
Antw:Neues Modul: 93_InfluxDBLog
« Antwort #58 am: 19 März 2018, 14:14:08 »
Hi,

ich glaube das influxdb Modul für fhem schreibt nur Integer und Float Werte in die Datenbank. Alles was Strings enthält wird verworfen. Eigentlich Schade ich nutze daher beides mysql und influxdb. Beispielsweise um die Datenübertragungsrate meiner FritzBox in Grafana als Graph darzustellen (Daten aus Influx) und die Externe IP im selben Graph als Annotation anzuzeigen (Daten aus mysql).

Eine Kurve aus influx und eine andere mysql im selben Graph funktioniert aber meines Wissen nach nicht.

Offline Thyraz

  • Sr. Member
  • ****
  • Beiträge: 566
Antw:Neues Modul: 93_InfluxDBLog
« Antwort #59 am: 19 März 2018, 15:23:16 »
Was aber nicht am Modul liegt.
InfluxDB kann nur Zahlenwerte.