Ich habe ein Problem, ein Recht grok Muster für alle meine Protokolle zu finden, um alle von ihnen durch logstash zu analysieren.Logstash grok Muster für pgpool Protokolle
Beispiel meiner logs:
1) 2016-04-13 19:55:40: pid 21950: LOG: pool_send_and_wait: Fehler oder Hinweismeldung vom Backend:: DB-Knoten-ID: 4 backend pid: 65156 Anweisung: "UPDATE certname ......" ... (Der Rest des Protokolls spielt keine Rolle)
2) 2016-04-13 19:55:40: pid 17555: FATAL: fehlgeschlagen lesen Art von Back-End-
Mein grok Muster (die zum Teil funktioniert):
grok { Spiel => { "Message" => "% {GREEDYDATA: LogDate}: pid% {NUMBER: pid}:% {LOGLEVEL: loglevel}:% {GREEDYDATA: logmessage}"} }
Wie Sie können diese sehen die Dinge sind mir wichtig: 1) das Datum der Protokoll 2) die PID 3) die loglevel 4) die Nachricht selbst
mit Ausnahme von dem Muster oben ich das Datum auch mit dem angeben versucht \ Ein% {TIMESTAMP_ISO8601: timestamp} -Muster (genau wie der Grok-Debugger mich vorgeschlagen hat).
Meine Annahme ist, dass das erste Protokoll die Art meiner problematischen Logs ist, weil es das Wort "log" zweimal drin hat, obwohl es in der zweiten Zeit nicht nach einem Doppelpunkt erscheint (im Gegensatz zu meinem Grokmuster) Ich habe also keine Ahnung, warum die Parsing-Operation fehlschlägt.
In der Tat, meine Protokolle, die nicht enthält das Wort "log" zweimal erfolgreich geparst - mein Muster funktioniert teilweise.
Thanks :)
Versuchen Sie, GREEDYDATA nur am Ende von Mustern zu verwenden. Wechseln Sie zu ISO8601, um die Datetime anzupassen und sehen Sie, wie das geht. –
Ich habe versucht, es hat nicht funktioniert –