2017-07-26 5 views
2

Wie erstelle ich einen grok benutzerdefinierten Musterfilter in logstash? Ich möchte ein Muster für HTTP-Antwortstatuscode erstellen, hier ist meine ModellcodeGROK benutzerdefinierter Musterfilter in logstash

STATUS_CODE __ %{NONNEGINT} __ 

was ich reaaly tun möchte, ist alle meine Web-Server mit Benutzer-IP-Hits haben, und fordern Sie HTTP-Header und Nutzlast und Antwort des Web-Servers.

und hier ist mein logstash.conf

input { 

    file { 
     type => "kpi-success" 
     path => "/var/log/kpi_success.log" 
     start_position => beginning 
    } 
} 

filter { 

    if [type] == "kpi-success" { 

    grok { 
     patterns_dir => ["./patterns"] 
     match => { "message" => "%{TIMESTAMP_ISO8601:timestamp} %{GREEDYDATA:message} "} 
    } 

    multiline { 
      pattern => "^\[" 
      what => "previous" 
      negate => true 
    } 

    mutate{ 
      add_field => { 
       "statusCode" => "[STATUS_CODE]" 
       } 
    } 
    } 
} 

output { 

    if [type] == "kpi-success" { 
     elasticsearch { 
      hosts => "elasticsearch:9200" 
      index => "kpi-success-%{+YYYY.MM.dd}" 
     } 
    } 
} 
+0

Lesen Sie die [doc] (https://www.elastic.co/guide/en/logstash/current/plugins-filters-grok.html#_custom_patterns)? – baudsp

+0

ja Ich habe bereits die gesamte Dokumentation gelesen, aber es ist nicht so klar – mhndev

+0

Können Sie einige Beispielzeilen des Protokolls bereitstellen, das Sie verarbeiten möchten? – niglesias

Antwort

1

Sie haben keine benutzerdefinierte Pattern-Datei zu verwenden, können Sie ein neues direkt in den Filter definieren.

grok { 
    match => { "message" => "(?<STATUS_CODE>__ %{NONNEGINT} __)"} 
}