2013-11-26 3 views
8

युक्त मेरी Logstash shipper में मैं लाइनों बाहर फ़िल्टर करना चाहते हैं हैश चरित्र के साथ टिप्पणी की:ड्रॉप लॉग लाइन हैश चरित्र

#This log row should be dropped. 
But one this should not. 

मैं grep फिल्टर का उपयोग करने में सक्षम था, लेकिन के रूप में यह हतोत्साहित किया जाता है (डिकमीशन किया जा रहा), मैं इसके बजाय ऐसा करने के लिए grok फ़िल्टर प्राप्त करने का प्रयास कर रहा हूं। यह फ़िल्टर काम नहीं कर रहा है:

grok { 
    match => ["message", "^#.*"] 
    drop_if_match => true 
} 

मैंने रेगेक्स को कस्टम पैटर्न फ़ाइल में रखने का भी प्रयास किया, लेकिन मदद नहीं की। कोई विचार?

उत्तर

21

यहां तक ​​कि सरल, अगर आप रुचि रखते हैं:

filter { 
    if ([message] =~ /^#/) { 
     drop{} 
    } 
} 

Logstash के अंतिम कुछ संस्करणों तर्क directly in the config files शाखाओं पर अधिक जोर डाल दिया है। थोड़ी देर के लिए उपयोग किया जाता है, लेकिन एक बार आप काम करते हैं।

+1

यदि आपको स्थिति के आस-पास अतिरिक्त() की आवश्यकता नहीं है। अगर [संदेश = ~ "^ #"] {अब पर्याप्त है। – jmcollin92

2

सही उत्तर यह है कि drop_if_match=>true (लॉगस्टैश v1.2.2) में एक बग है। इस तरीके का उपयोग का उपयोग करें:

grok { 
    ... 
    add_tag => ["some_comment"] 
} 
if "some_comment" in [tags] { 
    drop {} 
} 
+0

add_tag ​​वाक्यविन्यास खराब है। आपको इसका उपयोग करना होगा: mutate {add_tag ​​....} – jmcollin92

संबंधित मुद्दे