2016-10-25 3 views
0

Ich versuche (und scheitert), benutzerdefinierte Muster mit logstash 2.4.0 zu arbeiten. Hier ist der relevante Teil der Conf-Datei:logstash 2.4.0: grok schlägt lautlos auf benutzerdefinierten Mustern fehl

#some parsing happens above... 
    grok { 
     patterns_dir => ["/config_dir/patterns"] 
     match => [ "syslog_message", "%{QID:qid}:" ] 
    } 

(vollständige Konfiguration am Ende ist) - das Muster-Verzeichnis der Datei nur sendmail.grok enthält:

######### 
QID a 

den Lauf ich (umformatiert Ausnahme):

{:exception=>"Grok::PatternError", 
:backtrace=>["/opt/logstash/vendor/bundle/jruby/1.9/gems/jls-grok-0.11.3/lib/grok-pure.rb:123:in `compile'", 
       "org/jruby/RubyKernel.java:1479:in `loop'", 
       "/opt/logstash/vendor/bundle/jruby/1.9/gems/jls-grok-0.11.3/lib/grok-pure.rb:93:in `compile'", 
       "/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-filter-grok-2.0.5/lib/logstash/filters/grok.rb:264:in `register'", 
       "org/jruby/RubyArray.java:1613:in `each'", 
       "/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-filter-grok-2.0.5/lib/logstash/filters/grok.rb:259:in `register'", 
       "org/jruby/RubyHash.java:1342:in `each'", 
       "/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-filter-grok-2.0.5/lib/logstash/filters/grok.rb:255:in `register'", 
       "/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-core-2.4.0-java/lib/logstash/pipeline.rb:182:in `start_workers'", 
       "org/jruby/RubyArray.java:1613:in `each'", 
       "/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-core-2.4.0-java/lib/logstash/pipeline.rb:182:in `start_workers'", 
       "/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-core-2.4.0-java/lib/logstash/pipeline.rb:136:in `run'", 
       "/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-core-2.4.0-java/lib/logstash/agent.rb:491:in `start_pipeline'"], 
:level=>:error, 
:file=>"logstash/agent.rb", 
:line=>"493", 
:method=>"start_pipeline" 
} 

Diese Ausnahme ist invariant mit dem Inhalt der Muster/sendmail.grok. Es ist ein PatternError, aber es sagt mir nicht wo/warum der Fehler passiert. Wenn ich aber das Spiel Line-Out Kommentar, ist alles in Ordnung (Probe otput unten):

{ 
       "message" => "Oct 25 13:18:27 alpha opendkim[1160]: u9PBIMwu011394: authsmtp79.register.it [195.110.122.164] not internal", 
       "@version" => "1", 
       "@timestamp" => "2016-10-25T11:25:35.072Z", 
        "path" => "/log/maillog", 
        "host" => "93fe70f98023", 
    "syslog_severity_code" => 5, 
    "syslog_facility_code" => 1, 
     "syslog_facility" => "user-level", 
     "syslog_severity" => "notice", 
        "tags" => [ 
     [0] "syslog_message_unparsed", 
     [1] "syslog_relay" 
    ], 
     "syslog_timestamp" => "Oct 25 13:18:27", 
      "syslog_host" => "alpha", 
       "program" => "opendkim", 
        "pid" => "1160", 
      "syslog_message" => "u9PBIMwu011394: authsmtp79.register.it [195.110.122.164] not internal", 
     "syslog_fullhost" => "alpha" 
} 

Ideen?

TIA, alf

Voll Konfiguration:

input { 
    file { 
     path => "/log/maillog" 
    } 
} 

filter { 
    syslog_pri { 
    } 
    mutate { 
    add_tag => [ "syslog_parsefailure", "syslog_message_unparsed" ] 
    } 

    grok { 
    match => [ "message", "%{CISCOTIMESTAMP:syslog_timestamp} %{IPORHOST:syslog_host} %{SYSLOGPROG}: %{GREEDYDATA:syslog_message}" ] 
    add_field => { "syslog_fullhost" => "%{syslog_host}" } 
    add_tag => [ "syslog_relay" ] 
    remove_tag => [ "syslog_parsefailure" ] 
    tag_on_failure => [ ] 
    } 

    if [program] == "sendmail" { 
    mutate { 
     add_tag => [ "sendmail_log" ] 
    } 
    grok { 
     patterns_dir => ["/config_dir/patterns"] 
     match => [ "syslog_message", "%{QID:qid}:" ] 
    } 
} 

} 

output { 
    stdout { codec => rubydebug } 
} 

Antwort

0

Es ist etwas falsch mit der grok Übereinstimmung mit dem Filter I als pro Ausnahme glauben. Könnten Sie bitte Ihre Spiele wie diese und überprüfen ändern:

grok { 
     patterns_dir => [""] 
     match => { "message" => "" }    
    } 

Sie könnten versuchen, here Ihre grok Filter zu testen, bevor Sie sie tatsächlich in der Conf-Datei verwenden.

Quelle: grok

0

OK, so dass es etwas scheint falsch war mit der Umwelt meines Docker Container-Hosting (a CentOS7 VM). Ich habe auf einem FC24 (non-VM) Rechner (neuere Docker, gleiche Container, etc.) dieselbe exakte Umgebung wiederhergestellt und die Ausnahme ist einfach verschwunden.

Lessons learned:

  • Der Traum von sich aus Umwelt Abhängigkeiten durch Containerisierung zu befreien ist, auf dem Gesicht von ihm, eine Täuschung. Ghost Bugs/Exceptions können - und tun - aufgrund der Container-Host-Umgebung auftreten, ohne Ihnen viel darüber zu erzählen, und daher schwieriger zu fassen als je zuvor.
  • Logstash (gut Gork) Ausnahmeprotokollierung ist weniger als ideal. Was auch immer verursacht wurde die ursprüngliche Ausnahme (wenn ich wetten müsste, würde ich Dateisystem setzen und/oder SELinux Probleme, aber ich wirklich noch nicht wissen) wurde am nachdrücklichsten nicht ein Muster Problem

Dank an alle, die stört (sogar) lesen verschwendete Zeit auf diese.