2016-04-22 9 views
0

Ich habe Probleme Logstash zu arbeiten. Die Basic logstash Example funktioniert. Aber dann kämpfe ich um die Advanced Pipeline Example. Vielleicht könnte es auch ein Problem mit elasticsearch sein.logstash einfache Datei Eingabe/Ausgabe

Jetzt mag ich nur, wenn eine einfaches Beispiel Arbeit überprüfen:

  • Eingang: read Text-Datei-a
  • Ausgabe: Neue Text-Datei-b mit Eingang der Text-Datei-a

Aber ich streite damit. Meine Konfiguration ist folgende:

# foo.conf 
input { 
    file { 
     path => "C:/logstash-2.3.1/logstash-tutorial-dataset" 
     start_position => "beginning" 
    } 
} 
output { 
    stdout {} 
    file { 
     #message_format => "%{foo},%{bar},%{fii},%{bor},%{bing}" 
     #codec => { line { format => "custom format: %{message}"}} 
     path => "C:/output.txt" 
    } 
} 

Wenn ich logstash, bekomme ich die folgende Antwort und nichts passiert passiert.

bin/logstash -f foo.conf -v --debug --verbose 
io/console not supported; tty will not be manipulated 
{:timestamp=>"2016-04-22T13:41:15.514000+0200", :message=>"starting agent", :level=>:info} 
{:timestamp=>"2016-04-22T13:41:15.518000+0200", :message=>"starting pipeline", :id=>"main", :level=>:info} 
{:timestamp=>"2016-04-22T13:41:16.035000+0200", :message=>"Registering file input", :path=>["C:/logstash-2.3.1/logstash-tutorial-dataset"], :level=>:info} 
{:timestamp=>"2016-04-22T13:41:16.039000+0200", :message=>"No sincedb_path set, generating one based on the file path", :sincedb_path=>"c:/Users/foobar/.sincedb_802dc9c88c8fad631bf3d3a5c96435e4", :path=>["C:/logstash-2.3.1/logstash-tutorial-dataset"], :level=>:info} 
{:timestamp=>"2016-04-22T13:41:16.103000+0200", :message=>"Starting pipeline", :id=>"main", :pipeline_workers=>4, :batch_size=>125, :batch_delay=>5, :max_inflight=>500, :level=>:info} 
{:timestamp=>"2016-04-22T13:41:16.106000+0200", :message=>"Pipeline main started"} 

Wie bekomme ich das einfache Beispiel funktioniert?

Antwort

0

ignore_older => 0 haben den Trick, siehe Dokumentaion: ignore_older.

Die Arbeitskonfiguration ist folgende:

# foo.conf 
input { 
    file { 
     path => "C:/logstash-2.3.1/logstash-tutorial-dataset" 
     start_position => "beginning" 
     ignore_older => 0 
    } 
} 
output { 
    stdout {} 
    file { 
     path => "C:/output.txt" 
    } 
} 

Nun ist die .sincedb* Datei als auch Inhalte enthält.

0

Logstash merkt sich, welche Dateien verarbeitet wurden und wie viele davon verarbeitet wurden. Im normalen Betrieb ermöglicht dies einen Neustart im Falle eines Fehlers und keine erneute Verarbeitung von Protokollen.

In Ihrem Fall stelle ich mir vor, dass Ihre Log-Datei bereits einmal verarbeitet wurde, Logstash ignoriert sie also. Der von Ihnen bereitgestellte Parameter "start_position" ist nur für neue Dateien dokumentiert.

Sie müssten entweder Ihre Registrierung zurücksetzen (vielleicht Dateien wie /var/lib/logstash/.sincedb*) oder den Parameter "sincedb_path" in Ihrer Datei {} auf/dev/null setzen, so dass dies nicht der Fall ist Behalte den Verlauf nicht beim Testen.

+0

Die sincedb ist leer. Ich habe es mehrmals entfernt, aber das Ergebnis hat sich nicht geändert. Etwas ist verkabelt. Gibt es noch einen einfachen Hallo-Welt-Test, mit dem ich testen kann? – jerik

+0

Wenn die Datei leer ist, verarbeitet logstash Ihre Datei nicht. Vielleicht ist es jetzt zu alt (siehe "ignore_older")? –