Extrahieren der Felder aus der Eingabe-Datei Pfad logstash?
Ich Lesen möchte meine log Dateien aus verschiedenen Verzeichnissen, wie: Server1, Server2
...
Server1
hat Unterverzeichnisse als cron, auth
...innerhalb dieser Unterverzeichnisse ist die log file
bzw.
So, ich bin der Betrachtung von Lesen von Dateien wie diese:
input{
file{
#path/to/folders/server1/cronLog/cron_log
path => "path/to/folders/**/*_log"
}
}
Ich bin jedoch Schwierigkeiten haben, zu filtern ich.e zu wissen, dass für die server (Server1
) und logtype (cron
), muss ich anwenden grok
Muster:
ZB: ich dachte, etwas wie das zu tun
if [path] =~ "auth"{
grok{
match => ["message", ***patteren****]
}
}else if [path] =~ "cron"{
grok{
match => ["message", ***pattern***]
}
Oben cron
ist für die log-Datei (nicht cronLog-Verzeichnis).
Aber wie ich auch filtern möchten server name
wie jeder server haben cron
, auth
usw logs.
Wie filter auf beide?
Gibt es eine Möglichkeit zu greifen-Verzeichnis-Namen aus path
im Eingang ?? Wie von hier aus
path => "path/to/folders/**/*_log"
Wie soll ich Vorgehen? Jede Hilfe ist willkommen?
- Siehe stackoverflow.com/questions/23561684/...
- Ich sah Ihre Antwort. Ihre
filter
angewendet werden, die außerhalb derinput
?? Derzeit mache ich:filter { if [path] =~ "auth"{ grok...
Also ich pick auth aus Pfad. Ebenso möchte ich pick server und logtype und anwenden bedingte wie: Pfad hatservername=XYZ && logtype=YYY
dann ein grok-Muster für das Protokoll. Bin ich etwas fehlt? Können Sie erklären, mit etwas code? - Sie können mehrere grok. So verwenden Sie einen grok auf dem Weg zu extrahieren Sie die Stücke aus, dass Sie über Pflege.
- So etwas Wie dieses:
filter{ grok {on path to extract fields} if extract_field1 ==XYZ { grok{pattern matching log message}}
???
Du musst angemeldet sein, um einen Kommentar abzugeben.
seine sehr geradlinig und fast genau wie in meiner anderen Antwort... benutzt du die grok auf dem Weg zu extrahieren Sie die Stücke heraus, die Sie interessieren und dann können Sie tun, was Sie wollen von dort aus