Page 1 of 1

Remot loging

PostPosted: Fri Mar 10, 2017 1:44 pm
by thhoe
Hallo zusammen,

ich habe hier ein sehr spezielles Problem .
Ich bin dabei einen zentralen Syslogserver für meine Netzwerkgeräte einzurichten. Das ganze funktioniert grundsätzlich, die Meldungen werden auf UDP und TCP angenommen und in einer Datenbank gespeichert.
Problem macht ein HPE- Switch (HPE 1920-24G, JG924A). Dieser schickt die Meldungen nach diesen Format (mit TCPDUMP ermittelt):
Code: Select all
       
Facility local7 (23), Severity warning (4)
Msg: Mar 10 12:54:17 2017 DEV006.THHOE.LAN %%10WEB/4/WEBOPT_LOGIN_SUC(l): admin logged in from 192.168.0.52

Rsyslog schreibt die Meldung so in das Logfiele:
Code: Select all
Mar 10 12:54:17 2017 DEV006.THHOE.LAN %%10WEB/4/WEBOPT_LOGIN_SUC(l): admin logged in from 192.168.0.52

bzw. so in die Datenbank:
Code: Select all
Date :        Today 12:52:40
Facility :    LOCAL7
Severity :   WARNING
Host :        2017
Syslogtag : DEV006.THHOE.LAN
ProcessID :
Message :   %%10WEB/4/WEBOPT_LOGIN_SUC(l): admin logged in from 192.168.0.52

Das größte Problem ist das Jahr im Datum. Das wird bei der weiteren Verarbeitung als Device erkannt.
Hat jemand eine Idee wie ich die Meldung so verarbeite das folgendes herauskommt:
Code: Select all
Date :        2017-03-10 12:54:17
Facility :    WEB
Severity :   WARNING
Host :        DEV006.THHOE.LAN
Syslogtag : WEBOPT_LOGIN_SUC(l)
ProcessID :
Message :   admin logged in from 192.168.0.52

Viele Grüße
Thomas

Re: Remote logging

PostPosted: Fri Mar 10, 2017 5:09 pm
by PascalWithopf
Hallo Thomas,

du kannst das Problem umgehen indem du mmnormalize benutzt.

Hier die dazugehörige rulebase, die ich erstellt habe:
Code: Select all
rule=:<188> %udate:date-rfc3164% 2017 %uhostname:word% \x25\x2510%usyslogtag:char-to:\x3a%: %umsg:rest%


Wenn du jetzt im Template anstatt der Properties die Variablen benutzt dann sollte alles funktionieren.
Hier ein Template mit den Variablen, du kannst diese dann einfach so benutzen wie du sie brauchst, um in die Datenbank zu schreiben.
Code: Select all
template(name="template" type="string" string="%TIMESTAMP% %syslogfacility-text% %syslogseverity-text% %$!uhostname% %$!usyslogtag% %$!umsg%\n")


Viele Grüße
Pascal Withopf

Re: Remote logging

PostPosted: Sat Mar 11, 2017 3:36 pm
by thhoe
Hallo Pascal,

vielen Dank für die Antwort.
PascalWithopf wrote:
du kannst das Problem umgehen indem du mmnormalize benutzt.



Leider habe ich keine Ahnung wie das geht.
Kannst du mir bitte erklären wie ich das in der Konfiguration angehen muss?

Im Netz finde ich nur englische Beiträge die ich nicht verstehe.

Gruß

Thomas

Re: Remot loging

PostPosted: Sat Mar 11, 2017 4:51 pm
by PascalWithopf
Um mmnormalize zu benutzen, musst du rsyslog konfigurieren und dabei
Code: Select all
--enable-mmnormalize

angeben.

Dann kannst du in der rsyslog.conf Datei das Modul verwenden, dazu lädst du es zuerst und verwendest dann eine action in deinem ruleset.
So könnte das dann zum Beispiel aussehen.
Code: Select all
module(load="mmnormalize")
[...]
ruleset(name="ruleset") {
      action(type="mmnormalize" useRawMsg="on" rulebase="/path/to/file.rulebase")
      [...]
}


Jetzt musst du als Parameter für rulebase den Pfad zu der Rulebase mitgeben. Die rulebase hab ich ja schon vorher beschrieben.
Sobald du auf die Messages das ruleset verwendest werden diese durch mmnormalize normalisiert.

Nach dem normalisieren kannst du dann bei der action die für den Output zuständig ist ein Template verwenden, dass die Variablen aus der rulebase verwendet.
Wie du die Variablen benutzt hab ich auch im letzten Kommentar schon gezeigt.

Grüße
Pascal