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, authusw 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 der input?? 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 hat servername=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}} ???
Schreibe einen Kommentar