Sono nuovo in LogStash. Ho alcuni registri scritti da un'applicazione Java in Log4J. Sto cercando di trasferire quei log in ElasticSearch. Per la vita di me, non riesco a farlo funzionare in modo coerente. Attualmente, sto usando la seguente configurazione del logstash:Utilizzo di Log4J con LogStash
input {
file {
type => "log4j"
path => "/home/ubuntu/logs/application.log"
}
}
filter {
grok {
type => "log4j"
add_tag => [ "ApplicationName" ]
match => [ "message", "%{TIMESTAMP_ISO8601:timestamp} %{LOGLEVEL:level}" ]
}
}
output {
elasticsearch {
protocol => "http"
codec => "plain"
host => "[myIpAddress]"
port => "[myPort]"
}
}
Questa configurazione sembra essere incostante. Non sono sicuro del perché. Ad esempio, ho due messaggi. Uno funziona e l'altro lancia un fallimento di analisi. Eppure, non sono sicuro del perché. Qui ci sono i messaggi ei loro rispettivi risultati:
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
Quello con [ "ApplicationName"] ha i miei campi personalizzati di timestamp
e level
. Tuttavia, la voce con ["_grokparsefailure"] NON ha i miei campi personalizzati. Il pezzo strano è che i registri sono quasi identici, come mostrato nella colonna dei messaggi sopra. Questo mi sta davvero confondendo, tuttavia, non so come capire quale sia il problema o come andare oltre. Qualcuno sa come come posso utilizzare i registri delle importazioni log4j in logstash e ottenere i seguenti campi in modo coerente:
- Livello registro
- timestamp
- messaggio Log
- Nome macchina
- Discussione
Grazie per l'aiuto che puoi fornire. Anche se posso solo il livello di log, il timestamp e il messaggio di log, questo sarebbe un aiuto ENORME. Lo apprezzo sinceramente!
non riesco a vedere come il vostro modello di Grok sempre partite. Hai due spazi prima di% {LOGLEVEL: livello} ". Se devi gestire un numero variabile di spazi, usa \ s + invece di spazi per abbinare uno o più spazi e +1 sulla risposta del debugger di grok – Alcanzar