Autor Thema: Modul 93_Log2Syslog - FHEM Logs an Syslog-Server leiten und Syslogs empfangen  (Gelesen 5970 mal)

Online DS_Starter

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3131
Mit dem Attribut "sendSeverity" kann nun im Sender-Device gefiltert werden, dass nur Syslog-Nachrichten versendet werden deren Schweregrad in diesem Attribut enthalten ist. Per default sind es natürlich alle.
ESXi 6.5 auf NUC6i5SYH mit FHEM auf Debian 9/64 Bit  (Stretch), DbLog/DbRep mit MariaDB auf Synology 415+
Maintainer: SSCam, DbLog/DbRep, Log2Syslog, Dashboard (interims)
aktive Mitarbeit:SMAEM, SMAInverter
Kaffeekasse: https://www.paypal.me/HMaaz

Offline eldrik

  • Sr. Member
  • ****
  • Beiträge: 826
Hi,

bei mir beendet sich FHEM direkt nach dem Definitionsaufruf der aktuellen Version aus dem Contrib als Collector.

Folgende Infos stehen im FHEM Log.

Zitat
2018.08.10 07:58:07.689 3: Log2Syslog RemoteSyslog - entering Syslog servermode ...
2018.08.10 07:58:07.690 3: Log2Syslog RemoteSyslog - Opening socket ...
2018.08.10 07:58:07.690 3: Log2Syslog RemoteSyslog - port 1514/udp opened for Syslog Collector on interface "global"
Undefined subroutine &main::ReadingsSingleUpdateValue called at ./FHEM/93_Log2Syslog.pm line 315.

Ich hatte das Modul (auch die erweiterte Version aus dem Conrib) vorher noch nicht im Einsatz.

Greetz
Eldrik

Online DS_Starter

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3131
Moin Eldrik,

danke für den Hinweis.
Das kommt davon wenn man ein paar Aufrufe einfach aus DbRep kopiert und nicht daran denkt dass jemand kein DbRep einsetzen könnte.  :)
Hab's korrigiert ....

Grüße
Heiko
« Letzte Änderung: 10 August 2018, 13:24:06 von DS_Starter »
ESXi 6.5 auf NUC6i5SYH mit FHEM auf Debian 9/64 Bit  (Stretch), DbLog/DbRep mit MariaDB auf Synology 415+
Maintainer: SSCam, DbLog/DbRep, Log2Syslog, Dashboard (interims)
aktive Mitarbeit:SMAEM, SMAInverter
Kaffeekasse: https://www.paypal.me/HMaaz

Offline eldrik

  • Sr. Member
  • ****
  • Beiträge: 826
Hi,

klasse jetzt klappts!

Jedoch haben sich bei mir beim Testen ungereimtheiten aufgetan :)

Folgende Dinge habe ich vorhin ausprobiert.

Modul lediglich definiert

Meinen TPLink Switch angewiesen an den Host zu senden, hier kann ich keinen Standard definieren

Ergebnis: Folgende Meldung taucht im FHEM Log auf:

Zitat
2018.08.10 09:03:58.469 1: Log2Syslog RemoteSyslog - error parse msg -> <131>2018-08-10 09:03:58 10.0.x.y 31890 Login the web by admin on web (10.0.x.y).

Meine Synology Diskstation angewiesen an den Host zu senden

Ergebnis: Folgende Meldung taucht im FHEM Log auf:

2018.08.10 09:26:29.655 1: Log2Syslog RemoteSyslog - error parse msg -> <14>Aug 10 09:26:29 eldrik-htpc System Test message from Synology Syslog Client from (xyz)

Im Modul parseProfile explizit auf BSD gesetzt und Test vom TPLink ausgeführt:

Ergebnis: Folgende Meldung taucht im FHEM Log auf
Zitat
2018.08.10 09:29:48.849 1: PERL WARNING: Use of uninitialized value $Mmm in concatenation (.) or string at ./FHEM/93_Log2Syslog.pm line 520.
2018.08.10 09:29:48.849 1: PERL WARNING: Use of uninitialized value $dd in concatenation (.) or string at ./FHEM/93_Log2Syslog.pm line 520.
2018.08.10 09:29:48.850 1: PERL WARNING: Use of uninitialized value $time in concatenation (.) or string at ./FHEM/93_Log2Syslog.pm line 520.
2018.08.10 09:29:48.850 1: PERL WARNING: Use of uninitialized value $ts in concatenation (.) or string at ./FHEM/93_Log2Syslog.pm line 520.
2018.08.10 09:29:48.850 1: PERL WARNING: Use of uninitialized value $host in concatenation (.) or string at ./FHEM/93_Log2Syslog.pm line 520.
2018.08.10 09:29:48.850 1: PERL WARNING: Use of uninitialized value $id in concatenation (.) or string at ./FHEM/93_Log2Syslog.pm line 520.
2018.08.10 09:29:48.850 1: PERL WARNING: Use of uninitialized value $host in string eq at ./FHEM/93_Log2Syslog.pm line 521.

Erneut via Synology Testprotokolle gesendet.

Ergebnis:
Das Reading Transfered_logs_per_minute wird hochgezählt im FHEM Log tauchen jedoch keine Zeilen auf, wo finde ich die Einträge nun?

Dann habe ich das Modul auf parseProfile raw gestellt, daraufhin wurde weiter nichts (sowohl senden von Diskstation als auch TP Link Switch)  im FHEM Log angezeigt.

- Dann habe ich das Modul wieder auf BSD zurückgestellt, weiterhin taucht nichts im FHEM Log (sowohl senden von Diskstation als auch TP Link Switch) auf.

- Modul auf verbose5 gestellt nun erscheint beim einem Testlogin von meinem TPLink folgende Meldung im FHEM Log, mich wundert, dass hier von raw message gesprochen wird obwohl BSD gesetzt ist.

Zitat
2018.08.10 09:54:14.042 5: Log2Syslog RemoteSyslog - ###  new Syslog message Parsing ###
2018.08.10 09:54:14.042 5: Log2Syslog RemoteSyslog - message peerhost: localhost,127.0.0.1
2018.08.10 09:54:14.042 5: Log2Syslog RemoteSyslog - raw message -> <131>2018-08-10 09:54:14 10.0.x.y 31891 Logout the web by admin on web (10.0.x.y).
2018.08.10 09:54:14.043 4: RemoteSyslog - parsed message -> FAC: local0, SEV: Error, MM: , Day: , TIME: , TS: , HOST: , ID: , CONT: 2018-08-10 09:54:14 10.0.x.y 31891 Logout the web by admin on web (10.0.y.x).
2018.08.10 09:54:17.120 5: Log2Syslog RemoteSyslog - ###  new Syslog message Parsing ###
2018.08.10 09:54:17.120 5: Log2Syslog RemoteSyslog - message peerhost: localhost,127.0.0.1
2018.08.10 09:54:17.120 5: Log2Syslog RemoteSyslog - raw message -> <131>2018-08-10 09:54:17 10.0.y.x 31890 Login the web by admin on web (10.0.x.y).
2018.08.10 09:54:17.121 4: RemoteSyslog - parsed message -> FAC: local0, SEV: Error, MM: , Day: , TIME: , TS: , HOST: , ID: , CONT: 2018-08-10 09:54:17 10.0.x.y 31890 Login the web by admin on web (10.0.y.y).


Greetz
Eldrik


« Letzte Änderung: 10 August 2018, 10:21:13 von eldrik »

Online DS_Starter

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3131
Hi Eldrik,

lass uns mal die Sachen nach und nach durchgehen, sonst ist es zuviel auf einmal  ;)
Grundsätzlich siehst du ohne irgendwelchen Einstellungen die geparsten Messages direkt im Eventmonitor. Du kannst das Attr "makeMsgEvent" verwenden um Readings mit/ohne Eventgeneration zu erstellen (-> help Log2Syslog).

Wenn im Log die Meldung "error parse msg ->" kommt, kann der eingestellte Parser die Message nicht auflösen. Hier hilft ein anderer Parser zu probieren oder einen eigenen schreiben oder "raw" zu verwenden, was quasi immer geht. Ich versuche den Standard IETF/BSD so gut es mir gelingt abzubilden und vollständig zu parsen.

Dein TPLink sendet keine Standard BSD oder IETF Message. Deswegen auch nicht im Router auswählbar (mein Vermutung). TPLink wird sicherlich häufig verwendet.
Dafür würde ich mal einen Parser bauen und mit integrieren. Hoffentlich wendet TPLink bei seinen Switches immer den gleichen Message-Aufbau an.  :)

Deine Synology Testnachricht :

<14>Aug 10 09:26:29 eldrik-htpc System Test message from Synology Syslog Client from (xyz)

ist Standard-BSD. Ist auch im Syno Prokoll-Center auswählbar. Dann musst du im Modul auch im parseProfile BSD setzen. Wenn keine Fehler passieren sieht man im Modul
nicht viel, es sei denn du hast das Attr "makeMsgEvent" verwendet. Ansonsten erscheinen die Meldungen direkt im Eventmonitor (zur Weiterverarbeitung/Logging, was auch immer)

Mit verbose 4/5 siehst du Logeinträge zur Fehlersuche.

Deine Frage:

Zitat
mich wundert, dass hier von raw message gesprochen wird obwohl BSD gesetzt ist.

Mit verbose 5 wird immer zunächst die empfangene message komplett ( raw message ->) ausgedruckt. Dann erscheint noch das was der eingestellte Parser (Attr parseProfile) daraus gemacht hat (parsed message -> ).

Die Warnungen habe ich eleminiert und den IETF-Parser nachgebessert.
Lass uns erstmal ein paar Tests mit der Synology machen, die benutze ich während der Entwicklung auch und kann es gut nachvollziehen.

BTW: wenn du einen Sender mit Log2Syslog erstellst und disable=maintenance einstellst, kannst du beliebige Testnachrichten an den Empfänger senden um zu schauen was er daraus macht. Diese Funktion ist speziell bei den ersten Schritten ganz hilfreich.

EDIT: Schreib mir bitte noch deine Routerbezeichnung. Ich glaube nach ein paar Google-Suchen dass TPLink doch nicht ganz homogen arbeitet.

Grüße
Heiko
« Letzte Änderung: 10 August 2018, 15:09:10 von DS_Starter »
ESXi 6.5 auf NUC6i5SYH mit FHEM auf Debian 9/64 Bit  (Stretch), DbLog/DbRep mit MariaDB auf Synology 415+
Maintainer: SSCam, DbLog/DbRep, Log2Syslog, Dashboard (interims)
aktive Mitarbeit:SMAEM, SMAInverter
Kaffeekasse: https://www.paypal.me/HMaaz

Offline eldrik

  • Sr. Member
  • ****
  • Beiträge: 826
Hi,

ahja der Eventviewer  :D ok da tauchen entsprechende Nachrichten auf.

help Log2Syslog habe ich ein paar Mal, unter anderem als mein Fhem bei den ersten Versuchen abgeraucht ist, ausgeführt.
Die Hilfe Seite die mir daraufhin angezeigt wird enthält aber nichts zum neuen Collector Modus sowie dem Attribut makeMsgEvent, in der .pm Datei kann ich die Infos nachlsen aber in FHEM wird mir nichts angezeigt :o

Mein TP Link Switch ist vom Modell TL-SG2424

Danke dir für den restlichen Input, damit komme ich weiter  :)

Greetz
Eldrik

Online DS_Starter

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3131
Du musst wirklich "help Log2Syslog" aufrufen und nicht links den "Commandref"-Link verwenden.
Oder im definierten Device "Device specific help" tut es auch.
ESXi 6.5 auf NUC6i5SYH mit FHEM auf Debian 9/64 Bit  (Stretch), DbLog/DbRep mit MariaDB auf Synology 415+
Maintainer: SSCam, DbLog/DbRep, Log2Syslog, Dashboard (interims)
aktive Mitarbeit:SMAEM, SMAInverter
Kaffeekasse: https://www.paypal.me/HMaaz

Online DS_Starter

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3131
Hi eldrik,

habe eine erweiterte Version nach contrib geladen. Es gibt ein parseProfile für TPLink-Switch.
Probiers mal aus.

Grüße
Heiko
« Letzte Änderung: 10 August 2018, 15:04:03 von DS_Starter »
ESXi 6.5 auf NUC6i5SYH mit FHEM auf Debian 9/64 Bit  (Stretch), DbLog/DbRep mit MariaDB auf Synology 415+
Maintainer: SSCam, DbLog/DbRep, Log2Syslog, Dashboard (interims)
aktive Mitarbeit:SMAEM, SMAInverter
Kaffeekasse: https://www.paypal.me/HMaaz

Offline eldrik

  • Sr. Member
  • ****
  • Beiträge: 826
Hallo Heiko,

klasse und danke für die Mühe, schaut soweit ich das beurteilen kann ganz gut aus!

Readings
MSG_10.0.x.y

FAC: local0 || SEV: Error || ID: 31890 || CONT: Login the web by admin on web (10.0.x.y).

Greetz
Eldrik

Online DS_Starter

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3131
Ja, sieht gut aus.
Das IETF-Parsing habe ich weiter verfeinert und die Version nach contrib geladen.
ESXi 6.5 auf NUC6i5SYH mit FHEM auf Debian 9/64 Bit  (Stretch), DbLog/DbRep mit MariaDB auf Synology 415+
Maintainer: SSCam, DbLog/DbRep, Log2Syslog, Dashboard (interims)
aktive Mitarbeit:SMAEM, SMAInverter
Kaffeekasse: https://www.paypal.me/HMaaz

Online DS_Starter

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3131
Mit der V4.8.2 in contrib kann der Collector angewiesen werden nur auf Mitteilungen bestimmter Schweregrade zu reagieren.
Dazu wurde das Attr "sendSeverity" umbenannt zu "respectSeverity" und gilt nun sowohl für Sender als auch für Collector für die entsprechenden Funktionen.
Das Attr "makeMsgEvent" wurde umbenannt zu "makeEvent", was die Funktion eindeutiger beschreibt.
ESXi 6.5 auf NUC6i5SYH mit FHEM auf Debian 9/64 Bit  (Stretch), DbLog/DbRep mit MariaDB auf Synology 415+
Maintainer: SSCam, DbLog/DbRep, Log2Syslog, Dashboard (interims)
aktive Mitarbeit:SMAEM, SMAInverter
Kaffeekasse: https://www.paypal.me/HMaaz
Gefällt mir Gefällt mir x 1 Liste anzeigen

Offline JoeALLb

  • Hero Member
  • *****
  • Beiträge: 1473
Hallo Heiko,

experimentiere gerade mit der neuen Version:
Das Default "BSD" schneidet mir bei der ID die MAC-Adresse ab.
Hier ein Beispiel:
FAC: system || SEV: Notice || ID: received request from B8 || CONT: XX:XX:XX:XX:XX withB8 ist also noch Teil der Macadresse!

macht ja nichts, darum habe ich mir eine parseFn geschrieben.
Dazu eine Frage: Wie rufe ich
$Log2Syslog_BSDMonth{$Mmm}aus der parseFn auf?
Bekomme da diese Fehlermeldung
Global symbol "%Log2Syslog_BSDMonth" requires explicit package name

Mit
{
$DATA =~ /^<(?<prival>[^>]*)>(?<month>[^\s]*)\s(?<day>[^\s]*)\s(?<time>[^\s]*)\s(?<host>[^\s]*)\s(?<tail>.*)$/;
      $PRIVAL = $+{prival};   
      my $Mmm       = $+{month};       
      my $dd        = $+{day};         
      $TIME      = $+{time}; 
      $HOST = $+{host};
      $CONT      = $+{tail};
 my $month = "08" ##should be $Log2Syslog_BSDMonth{$Mmm} ;
  $TS      = "$year-$month-$dd $TIME";

}
bekomme ich schon mal recht brauchbare Ergebnisse!


Wunsch: Könnte ich hier eventuell noch eine "exit"-Möglichkeit bekommen ähnlich wie in valueFn?
Ich muss manche Dinge hier filtern, da mein Router mich nur wenig filtern lässt....
(BZW. ich manche Informationen nur in den Debug-Logs vom Router erhalte)....

DANKE!! Tolles Modul!

sG
Joe
« Letzte Änderung: 20 August 2018, 16:55:51 von JoeALLb »
FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

Online DS_Starter

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3131
Hi Joe,

Zitat
Das Default "BSD" schneidet mir bei der ID die MAC-Adresse ab.
Da muss ich versuchen den BSD Standard zu verfeinern. Sollte eigentlich machbar sein diesen Fall (XX:XX:XX...) mit zu berücksichtigen.

Aber mit der parseFN zu arbeiten führt auch zum Ziel.

Zitat
Dazu eine Frage: Wie rufe ich
Code: [Auswählen]

$Log2Syslog_BSDMonth{$Mmm}

aus der parseFn auf?

Definiere die parsFn mal so:

{
our %Log2Syslog_BSDMonth;
$DATA =~ /^<(?<prival>[^>]*)>(?<month>[^\s]*)\s(?<day>[^\s]*)\s(?<time>[^\s]*)\s(?<host>[^\s]*)\s(?<tail>.*)$/;
      $PRIVAL   = $+{prival};   
      my $Mmm   = $+{month};       
      my $dd    = $+{day};         
      $TIME     = $+{time};
      $HOST     = $+{host};
      $CONT     = $+{tail};
      my $month = $Log2Syslog_BSDMonth{$Mmm};
      $TS       = "$year-$month-$dd $TIME";
}

Zitat
Wunsch: Könnte ich hier eventuell noch eine "exit"-Möglichkeit bekommen ähnlich wie in valueFn?
Du meinst damit sicherlich die Variable $IGNORE, die wenn gesetzt, den Datensatz ins Nirvana entlässt, oder ?

LG,
Heiko
ESXi 6.5 auf NUC6i5SYH mit FHEM auf Debian 9/64 Bit  (Stretch), DbLog/DbRep mit MariaDB auf Synology 415+
Maintainer: SSCam, DbLog/DbRep, Log2Syslog, Dashboard (interims)
aktive Mitarbeit:SMAEM, SMAInverter
Kaffeekasse: https://www.paypal.me/HMaaz

Offline JoeALLb

  • Hero Member
  • *****
  • Beiträge: 1473
Hallo Heiko,


Da muss ich versuchen den BSD Standard zu verfeinern. Sollte eigentlich machbar sein diesen Fall (XX:XX:XX...) mit zu berücksichtigen.
Da steck ich leider noch nicht tief genug drinnen um mitreden zu können....

Du meinst damit sicherlich die Variable $IGNORE, die wenn gesetzt, den Datensatz ins Nirvana entlässt, oder ?

Genau!! Mich interessiert praktisch nur ob eine dhcp adresse vergeben wurde und wann sie wieder deassigned wurde.
Dazu muss ich aus relativ vielen Meldungen die richtige herausfiltern.
Ist es so gedacht, dass im Reading immer alle diese Daten angezeigt werden müssen?
Mir würde für meinen Fall ein einfacher kurzer Text völlig ausreichen, den ich  $CONT setzen könnte,
also zB  $CONT = "online" oder eben  $CONT = "offline".
Aber ich fürchte fast,ass mein spezieller Usecase damit weit von deiner ursprünglichen Intention entfernt ist?!??

Danke jedenfalls, macht spaß mit dem Modul zu experimentieren!!!

sG
Joe
FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

Online DS_Starter

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3131
Habe soeben eine Version nach contrib gebracht die deinen Fall mit dem Standard BSD-Parsing mit abdeckt.
Kannst du mal probieren, aber mit der parseFn zu arbeiten übt auch und macht Spaß  :)

Das IGNORE baue ich nachher mit ein.

Zitat
Ist es so gedacht, dass im Reading immer alle diese Daten angezeigt werden müssen?
Nein. Du kannst das Attr "outputFields" benutzen um die anzuzeigenden Felder sowie deren Reihenfolge zu bestimmen.
In deinem Fall wäre es eben nur CONT.
Hast du das Attr "makeEvent" auch schon gesehen ?
ESXi 6.5 auf NUC6i5SYH mit FHEM auf Debian 9/64 Bit  (Stretch), DbLog/DbRep mit MariaDB auf Synology 415+
Maintainer: SSCam, DbLog/DbRep, Log2Syslog, Dashboard (interims)
aktive Mitarbeit:SMAEM, SMAInverter
Kaffeekasse: https://www.paypal.me/HMaaz

 

decade-submarginal