Felder aus dem Logstash des Eingabedateipfads extrahieren?
Ich möchte meine Protokolldateien aus verschiedenen Verzeichnissen lesen, z.Server1, Server2
...
Server1
hat Unterverzeichnisse alscron, auth
... in diesen Unterverzeichnissen befindet sich daslog file
beziehungsweise.
Also denke ich darüber nach, Dateien wie diese zu lesen:
input{
file{
#path/to/folders/server1/cronLog/cron_log
path => "path/to/folders/**/*_log"
}
}
Ich habe jedoch Schwierigkeiten, sie zu filtern, d. H. Zu wissen, für welchen Server (Server1
) und logtype (cron
) Muss ich das anwendengrok
Muster:
ZB: Ich dachte daran, so etwas zu machen
if [path] =~ "auth"{
grok{
match => ["message", ***patteren****]
}
}else if [path] =~ "cron"{
grok{
match => ["message", ***pattern***]
}
Übercron
ist für die Protokolldatei (nicht das cronLog-Verzeichnis). Aber so möchte ich auch filternserver name
wie jeder Server haben wirdcron
, auth
usw. protokolliert.
Wie filtere ich nach beiden?
Gibt es eine Möglichkeit, Verzeichnisnamen von zu erfassen?path
in der Eingabe? Wie von hier
path => "path/to/folders/**/*_log"
Wie soll ich vorgehen? Jede Hilfe wird geschätzt?