Verwenden Sie grok hinzufügen der log-Dateinamen als Feld in logstash
Ich bin mit Grok & Logstash zu senden access-logs von Nginx zu Elastic search. Ich gebe Logstash alle meine access-logs (mit einer wildcard funktioniert gut) und ich würde gerne den Dateinamen (ein Teil davon, um genau zu sein) und verwenden Sie es als ein Feld.
Meine config ist wie folgt :
input {
file {
path => "/var/log/nginx/*.access.log"
type => "nginx_access"
}
}
filter {
if [type] == "nginx_access" {
grok {
match => { "message" => "%{COMBINEDAPACHELOG}" }
match => { "path" => "%{GREEDYDATA}/%{GREEDYDATA:app}.access.log" }
add_field => { "app" => "%{app}" }
}
}
}
output{
# whatever
}
Aber es scheint nicht zu funktionieren : die app
Feld Hinzugefügt wird, hat aber einen Wert von %{app}
(nicht ersetzt).
Ich verschiedene Sachen ausprobiert, aber ohne Erfolg. Ich kann etwas fehlt ... Irgendwelche Ideen ?
Vielen Dank
- mögliche Duplikate von Logstash: gewusst wie: hinzufügen-Datei-Namen wie ein Feld?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ok, fand es.
grok
Pausen im match standardmäßig. So das erste Spiel gut zu sein, springt das zweite ein.Ich löste es so :
path
aberfile
. Alles andere funktioniert perfekt.Fand ich es wünschenswert, zu verwenden, 2 grok-Blöcke, wenn es unmatching Zeilen in den log-Dateien.