2016-07-18 12 views
2

Ich verwende ELK Stack mit Dateibeat.Was ist das Muster für die vollständige Eingabe in Logstash?

filebeat.conf

filebeat: 
    prospectors: 
    - 
     paths: 
     - /home/ubuntu/logs_* 
     input_type: log 
output: 
    logstash: 
    hosts: [${LOGSTASH_PORT_5044_TCP_ADDR}] 
    index: filebeat 
    console: 
    pretty: true 

Diese Protokolle aus einer Datei ist vorbei logs_test

Eine Probe log

{"name":"test","statusCode":0,"deployment":"production","hostname":"ip-random-address","level":30,"jobName":"testJob","date":"2016-07-18T03:15:02.075Z","jobType":"script","msg":"","time":"2016-07-18T03:15:02.076Z","v":0} 

Ich möchte einen HTTP-Aufruf an einen externen machen URL, wenn das Feld statusCode 1 ist

Das gesamte Protokollobjekt wird an logstash übergeben.

Mein logstash Config

input { 
    beats { 
     port => 5044 
     codec => "json" 
    } 
} 



output { 
    if ([statusCode] and [statusCode] == 1) { 
     http { 
      format=>"message" 
      http_method=>"post" 
      url=>"http://www.example.com" 
      message=>'{"text": "%{some_pattern_matcher}"}' 
      } 
     } 
} 

[Frage] Was sollte die "some_pattern_matcher" werden alle Felder HTTP-Anforderung zu senden.

PS:% {message} funktioniert nicht.

+0

haben Sie% {source} ausprobiert? –

Antwort

0
input { 
    beats { 
     port => 5044 
     codec => "json" 
    } 
} 
filter{ 
    grok{ 
      match => { "message" => "%{GREEDYDATA:data}" } 
    } 
} 
output { 
    if ([statusCode] and [statusCode] == 1) { 
     http { 
      format=>"message" 
      http_method=>"post" 
      url=>"http://www.example.com" 
      message=> %{data} 
      } 
     } 
} 

Ich habe es nicht ausprobiert. Versuchen Sie es also und lassen Sie mich wissen, ob diese Lösung funktioniert. Wenn nicht, poste bitte die Fehler die du hast.

+0

sicher, lass es mich versuchen. versuche zuerst% {source}. –

+0

% {source} hat nicht funktioniert. Weiter zu GREEDYDATA. –

+0

% {data} wurde gedruckt. Funktioniert nicht. –

Verwandte Themen