Fhem -> Splunk

Begonnen von daubsi, 19 März 2016, 19:48:59

Vorheriges Thema - Nächstes Thema

daubsi

Zitat von: betateilchen am 20 März 2016, 09:41:59

  • Die selektive Auswahl mit mehreren Instanzen ist nicht möglich, das läßt das Sys::Syslog erstmal in dieser Form nicht zu. Eventuell könnte man das lösen, wenn man für jeden Logeintrag die Verbindung öffnet und danach wieder schließt. Wie sich das auf die Performance auswirkt? Keine Ahnung. Es darf jedenfalls zu jedem Zeitpunkt immer nur ein offenes openlog() existieren.

Hm, das wäre vermutlich zuviel des guten... fhem soll ja auch noch was anderes machen, als nur handles öffnen und schliessen ;-)

Aber, dass man das auf FHEM Objekt Ebene konfiguren könnte welche Readings usw. das hältst Du für möglich?

betateilchen

Zitat von: daubsi am 20 März 2016, 09:55:50
Aber, dass man das auf FHEM Objekt Ebene konfiguren könnte welche Readings usw. das hältst Du für möglich?

Klar, das ist doch Standard. Du kannst eine regexp angeben, die festgelegt, welche events geloggt werden. Das funktioniert auch jetzt schon.

Bei mir sieht die regexp zum Loggen in DbLog beispielsweise so aus:

(.*:lumi.*|GW1_.*|.*:batVoltage.*|.*:measured-temp.*|.*:desired.*|.*:actuator.*|.*:valve.*|.*:Bb]attery:.*|.*:temperature.*|.*:humidity.*|.*:dewpoint.*|.*:pressure.*|Melder.*:.*|RM_.*:.*|sunDummy.*:.*|out_Regen.*:.*|.*_SenPwr.*|gds.*)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

daubsi

Zitat von: betateilchen am 20 März 2016, 09:58:26
Klar, das ist doch Standard. Du kannst eine regexp angeben, die festgelegt, welche events geloggt werden. Das funktioniert auch jetzt schon.

Bei mir sieht die regexp zum Loggen in DbLog beispielsweise so aus:

(.*:lumi.*|GW1_.*|.*:batVoltage.*|.*:measured-temp.*|.*:desired.*|.*:actuator.*|.*:valve.*|.*:Bb]attery:.*|.*:temperature.*|.*:humidity.*|.*:dewpoint.*|.*:pressure.*|Melder.*:.*|RM_.*:.*|sunDummy.*:.*|out_Regen.*:.*|.*_SenPwr.*|gds.*)

Hi, das heisst es ist weiterhin ein globales Objekt aber man kann durch den Regex auch die FHEM-Objekte benennen, auf die es wirkt?

Hilf mir doch noch mal eben:

Angenommen ich möchte
Temp1: temperature, humidity
Heizung: forward, return, power
Water: litersperminute

wegschreiben - wie sähe der Regex dazu aus?

So?
(temp1:temperature|temp1:humidity|heizung:forward|heizung:return|heizung:power|water:litersperminute) ?

betateilchen

Sieht gut aus, probiers doch einfach aus :)

regexp ist nun wirklich nichts fhem-spezifisches.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

daubsi

Servus betateilchen,

sieht gut aus! Dein Modul funktioniert prima :-D

Danke!

betateilchen

Ich habe nachher noch ein paar Stunden Bahnfahrt nach München vor mir, da werde ich mich mit dem Thema nochmal befassen. Vor allem eine Fehlerbehandlung, wenn jemand versucht, zwei rsyslog devices zu definieren.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

daubsi

Prima! Bin gespannt! Danke

betateilchen

In der nächsten Version sind folgende Punkte enthalten:


  • Fehlermeldung beim Versuch, ein zweites rsyslog device zu definiere
  • Attribut rsl_timestamp ermöglicht das Loggen der fhem-eigenen timestamps (nützlich wenn mseclog in fhem definiert ist)
  • commandref doku enthalten (abrufbar über device specific help in der Detailansicht)

Das Modul steht in ./contrib bereit und kann per SVN ausgecheckt werden. Es muss vorläufig noch manuell nach ./FHEM kopiert werden.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

micomat

@herrmannj von Splunk als SIEM kann ich abraten. sind jetzt auf logrhythm und top zufrieden :)
Synology DS218+ with fhem+iobroker in docker, 2x RasPi w. ser2net, CUL433+868, IT, EGPM2LAN, THZ/LWZ, FB_Callmonitor, HMS100TF, Homematic, 2x TX3-TH, Pushover, USB-IR-SML-Head, SONOS, GHoma, MBus, KLF200

daubsi

Wen es interessiert:

Um das lokale Loggen in /var/log/syslog auf dem FHEM Rechner abzudrehen (bei Verwendung von rsyslog) muss lediglich in der /etc/rsyslog.conf

aus *.*;auth,authpriv.none           -/var/log/syslog ein *.*;local0,auth,authpriv.none           -/var/log/syslog gemacht werden. (sofern man wie ich local0 für FHEM nutzt). Danach noch rsyslog durchstarten und schon ist Ruhe im Karton.

Darüberhinaus sollte man sich noch (generell) sinnvolle Schwellwerte für das Logging in FHEM überlegen. Beispielsweise hat sich für meine Lacrosse Temperatursensoren ein "event-on-change-reading: temperature,humidity" und ein "event-min-interval: 300", "resolution: 10" als praktikabel erwiesen.


betateilchen

Zitat von: daubsi am 20 März 2016, 08:05:26
A propos Zielhost: Bietet das Perl Syslog Modul denn die Möglichkeit direkt an einem Remoteserver zu loggen?

Theoretisch scheint das zu funktionieren, aber es wird in allen Beschreibungen zu Sys::Syslog dringend davon abgeraten.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

daubsi

Hi, na ja, nachdem das mit dem Forwarden via rsyslog.conf so prima funktioniert, ist es ja kein Problem...

RangeMethod

#27
Hallo zusammen,

ich weiß nicht ob es jemandem noch hilft, aber ich habe jetzt aktuell auch einen Splunk Server aufgesetzt und auch das mit dem rsyslog ausgetestet, allerdings wollte mein raspberry mit fhem dann nicht mehr so wirklich wie ich, aufgrund der schier unendlichen anzahl an logs.

daraufhin habe ich mich auf die Suche nach einen Splunk Forwarder für den Pi gemacht, und tatsächlich das funktioniert einwandfrei, derzeit überwache ich mit dem forwarder nur /var/log/messages und wandle es gleich hier in einen eigenen "source-type" um.
Das könnte man jetzt so ziemlich für jede TextDatei machen, also auch mit den Fhem eigenen File-Logs, man hat dann also die möglichkeit eine kombination aus splunk und fhem-log zu verwenden, und die "field-extraction" auch für mehrere fhem events durchführen, da zumindest bei mir teilweise in einem event mehrere Readings übergeben werden.

Den Forwarder habe ich nach folgendem Blog Beitrag durchgeführt:
https://stichintime.wordpress.com/2015/03/23/raspberry-pi-as-a-splunk-universal-forwarder-to-store-and-foward-logs/

Und wie man "Source-Types" in splunk definiert findet ihr hier:
http://docs.splunk.com/Documentation/Splunk/6.4.3/Data/Setsourcetype

Als Anhang noch ein Screenshot eines SPlunk Dashboards mit Benzin Preisen der letzten 7 Tage.

Grüße
Sebastian