2016-03-30 6 views
0

Ich erstelle eine Rsyslog-Vorlage, um Apache-Logs in JSON zu analysieren, um an die elastische Suche zu senden.Rsyslog Vorlage Erfassungsgruppen

Ich versuche derzeit, die Anfrage Zeit von der access_log zu erfassen, kann aber nicht scheinen, meine regulären Ausdruck ordnungsgemäß zu funktionieren.

Rsyslog Config der Vorlage konstant:

constant(value="\",\"request_time\":\"")  property(name="msg" regex.expression="(\\[(.*)\\])" regex.type="ERE" regex.match="2") 

ich ständig "NO MATCH" aus dem, obwohl die Regex auf der rsyslog regex Testseite zu funktionieren scheint. Wenn ich regex.match durch 0 ersetze, erhalte ich den vollen Zeitstempel, aber er enthält die [], die ich vermeiden möchte.

Beispiel Anfrage:

192.168.33.1 - - [30/Mar/2016:08:45:38 +0000] "GET /TEST HTTP/1.1" 404 281 "-" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36" 

Irgendwelche Vorschläge geschätzt würde. Danke!

Antwort

0

schaffte ich es durch Eingrenzung der spezifischen Daten, die ich eher „zwischen diesen eckigen Klammern etwas“ als wollte arbeiten lassen:

constant(value="\",\"request_time\":\"")  property(name="msg" regex.expression="([0-9]*\\/[a-zA-Z]*\\/[0-9]*:[0-9]*:[0-9]*:[0-9]{2})" regex.type="ERE" regex.match="0")