2016-04-08 23 views
1

Grok ayrıştırma ile ilgili sorunlar yaşıyorum. ElasticSearch/Kibana'da eşleştirdiğim çizgiler _grokparsefailure etiketiyle geliyor. Aşağıda böyleLogstash _grokparsefailure sorunları?

input { 
snmptrap { 
yamlmibdir => "/opt/logstash/vendor/bundle/jruby/1.9/gems/snmp- 1.2.0/data/ruby/snmp/mibs" 
codec => plain { 
charset => "BINARY" 
     } 
type => "snmptrap" 
     } 
     } 

filter { 

    if [type] == "snmptrap" 
      { 
       grok { 
       match => { "message" => "%{IP:@source_ip=\\""}" } 
       add_field => { "source_ip" =>"%{@source_ip=\"}" } 
      } 
     } 

    } 

    output {elasticsearch { hosts => localhost } 


     } 

benim giriş görünüm:

İşte benim logstash yapılandırma olduğunu.

"mesaj" => "# @ işletme = [1.3.6.1.3.92.1.1.7] @timestamp = # @ değeri = 802.993.822>, @varbind_list = [# @ adı = [1.3.6.1 .3.92.1.1.5.1.3.202.169.174.90], @ değer = # @ değer = 1 >>], @ specific_trap = 2, @source_ip = \ "10.10.10.12 \", @agent_addr = # @ değer = \ "\ xC0 XA8 \ \ a \ f \">, @ generic_trap = 6>",

nasıl @source_ip almak ve değer için yeni bir alan eklemek için?

Birisi sorunu nasıl çözebilirim?

cevap

0

Yapılandırmanızın bile derhal yapılmasına şaşırdım. Grok'un nasıl çalıştığı hakkında biraz daha düşünmelisin. Örneğin, genellikle grok ile add_field kullanmanız gerekmez.

Grok kalıbı, yakalamak istediğiniz verilerin öncesinde ve sonrasında gelenleri içerir. Bu öğeler düzenli ifadenizi "çapa". Sizin durumunuzda, başlamak için '@ source_ip = "' ve sonlandırmak için '' '. Ortadaki şeyler, yeni bir alana girmek istediğin şey.

Sizin desen daha bu şekilde görünecektir:

match => { "message" => "@source_ip=\\\"%{IP:source_ip}\\\"" } 

Bu, değeri içeren yeni bir "source_ip" alanını vermelidir.

\\\ "eğik çizgi ve tırnaklardan kaçar ve eşleşecektir \".

+0

\\ "Sadece hata ayıklama çıktısındaki gösterilerden bahse girerim ve sadece IP'yi çevreleyen (kaçtı) alıntılarla eşleşmeniz gerekir. –