Ich bin neu in LogStash. Ich habe einige Protokolle aus einer Java-Anwendung in Log4J geschrieben. Ich versuche gerade, diese Logs in ElasticSearch zu bekommen. Für das Leben von mir kann ich nicht scheinen, es konsequent zu arbeiten. Zurzeit verwende ich die folgende logstash-Konfiguration:Verwenden von Log4J mit LogStash
Diese Konfiguration scheint zu treffen oder zu treffen. Ich bin mir nicht sicher warum. Zum Beispiel habe ich zwei Nachrichten. Einer arbeitet, und der andere löst einen Parse-Fehler aus. Aber ich bin mir nicht sicher warum. Hier sind die Nachrichten und ihre jeweiligen Ergebnisse:
Tags Message
------ -------
["_grokparsefailure"] 2014-04-04 20:14:11,613 TRACE c.g.w.MyJavaClass [pool-2-
thread-6] message was null from https://domain.com/id-1/env-
MethodName
["ApplicationName"] 2014-04-04 20:14:11,960 TRACE c.g.w.MyJavaClass [pool-2-
thread-4] message was null from https://domain.com/id-1/stable-
MethodName
Der mit [ „Application“] hat meine benutzerdefinierten Felder von timestamp
und level
. Der Eintrag mit ["_grokparsefailure"] hat jedoch keine benutzerdefinierten Felder. Das seltsame Stück ist, die Protokolle sind fast identisch, wie in der Nachrichtenspalte oben gezeigt. Das verwirrt mich wirklich, aber ich weiß nicht, wie ich herausfinden soll, was das Problem ist oder wie ich darüber hinaus kommen kann. Wer weiß, wie, wie ich Import log4j Protokolle in logstash verwenden können und erhalten die folgenden Felder konsequent:
- Log Level
- Timestamp
- Log Nachricht
- Machine Name
- Thema
Vielen Dank für Ihre Hilfe. Selbst wenn ich nur die Log-Level, Timestamp und Log-Nachricht habe, wäre das eine riesige Hilfe. Ich schätze es sehr!
ich kann nicht sehen, wie Ihr grok Muster jemals passt. Du hast zwei Leerzeichen vor dem% {LOGLEVEL: level} ". Wenn du mit einer variablen Anzahl von Leerzeichen klarkommst, benutze \ s + anstelle von Leerzeichen um ein oder mehrere Leerzeichen zu finden. Und +1 auf die grok debugger Antwort – Alcanzar