2013-12-17 7 views
12

प्रारंभ करने में थोड़ी मदद की तलाश है ... मेरे पास लॉगस्टैश स्थापित है (साथ ही लोचदार खोज) लेकिन मैं अपने पहले फ़िल्टर से संघर्ष कर रहा हूं। [: 09: 21: 327 पीएसटी 11/5/13 4] पीछालॉगस्टैश फ़िल्टर के साथ प्रारंभ करना

एक परीक्षण मैं यह है कि 6 रेखाएं हों, एक छंटनी की लॉग फ़ाइल से पढ़ने के लिए कॉन्फ़िगर किया गया है, प्रत्येक पंक्ति एक समय स्टाम्प जैसे साथ शुरू होता है अन्य डेटा के एक समूह द्वारा।

अभी के लिए मेरे पास इस फ़ाइल को पढ़ने के लिए मेरी conf फ़ाइल सेट है और मैं लाइनों से मेल खाने के लिए एक बहुत ही बुनियादी ग्रोक फ़िल्टर करने की कोशिश कर रहा हूं, शायद टाइमस्टैम्प को पकड़ने के लिए और फिर शेष डेटा (जहां से मैं कर सकता हूं इसे विभाजित करना शुरू करें)।

यहाँ मैं क्या है:

input { 
    file { 
    type => "chris" 
    path => "/home/chris/Documents/test.log" 
    } 
} 
filter { 
    grok { 
    type => "chris" 
    pattern => "%{GREEDYDATA:logline}" 
    } 
} 
output { 
    stdout {debug => true debug_format => "json"} 
} 

मैं एक तरह से उम्मीद कर रहा था (उम्मीद) कि जब मैं Logstash भाग गया यह प्रत्येक पंक्ति और आउटपुट यह, तो मैं लाइनों टूट शुरू कर सकता है और छानने से मेल होता मैं पैटर्न को समायोजित करता हूं लेकिन जैसा कि मुझे काम करने के लिए यह पहला मूलभूत बिट नहीं मिल रहा है, मैं थोड़ा स्टंप हूं।

क्या किसी के पास एक समान फ़ाइल है जो साझा करना ठीक होगा? मुझे लगता है कि अधिकांश उदाहरण अधिक उन्नत हैं और मैं गेट से बाहर निकलने की कोशिश कर रहा हूं।

धन्यवाद,

क्रिस।

+0

लॉगस्टैश का कौन सा संस्करण आप चल रहे हैं? [ग्रोक] (http://logstash.net/docs/1.3.1/filters/grok) 1.2 या उससे भी अधिक के बाद "पैटर्न" पैरामीटर नहीं है। – rutter

उत्तर

12

फ़िल्टर की सामग्री को हटाने से शुरू करें।

logstash grok फिल्टर प्लगइन के वर्तमान संस्करण (1.3.2) के लिये दस्तावेज यहां http://logstash.net/docs/1.3.2/filters/grok

हैं सुनिश्चित करें कि आप आप डाउनलोड की है logstash के संस्करण के लिए डॉक्स का सही संस्करण को देख रहे हैं।

एक उदाहरण

Grok फिल्टर होगा:

filter { 
    grok { 
    match => [ "message", "%{IP:client} %{WORD:method} %{URIPATHPARAM:request} %{NUMBER:bytes} %{NUMBER:duration}" ] 
    } 
} 

लेकिन यह अपने डेटा का मिलान करने की संभावना नहीं है।

"संदेश" डिफ़ॉल्ट फ़ील्ड है जो आपका पूरा लॉग समाप्त होता है, इसलिए संभवतः आपके लिए भी एक अच्छा विकल्प है।

अगला भाग आईपी, वर्ड इत्यादि जैसे पूर्वनिर्धारित ग्रोक पैटर्न, जैसे कि आईपी, वर्ड इत्यादि के साथ लॉगलाइन और मिलान भागों को पढ़कर 5 नए फ़ील्ड, क्लाइंट, विधि, अनुरोध, बाइट्स और अवधि बनाता है। आपको इसे बदलने की आवश्यकता होगी।

filter { 
    grok { 
    match => [ "message", "%{GREEDYDATA:logline}" ] 
    } 
} 

कौन वास्तव में सिर्फ एक अलग logline क्षेत्र में संदेश क्षेत्र नकल होगा, लेकिन शुरू करने के लिए कहीं न कहीं है के साथ बंद शुरू

। जैसे ही आप फिल्टर में अधिक ग्रोक पैटर्न जोड़ते हैं, लॉगलाइन फ़ील्ड में केवल कुछ भी नहीं होगा जो grokked नहीं है।

आप अपने Grok यहाँ पैटर्न बाहर का परीक्षण कर सकते http://grokdebug.herokuapp.com/

आप की संभावना अपने आप क्षेत्र में टाइमस्टैम्प बाहर grok की grok फिल्टर का उपयोग और उसके बाद की तारीख फिल्टर का उपयोग वास्तव में उपयोग करने के लिए करना चाहते हैं कि लॉग टाइमस्टैम्प के रूप में ।

filter { 
    grok { 
    match => [ "message", "%{TIMESTAMP_ISO8601:syslog_timestamp} %{GREEDYDATA:syslog5424_msg}" ] 
    } 
    date { 
    match => [ "syslog_timestamp", "ISO8601" ] 
    } 
} 

TIMESTAMP_ISO8601 एक बहुत वर्बोज़ प्रारूप (http://grokdebug.herokuapp.com/patterns#) में timestamps से मेल खाता है, तो यह आपके लिए काम नहीं कर सकता।

ISO8601 दिनांक फ़िल्टर के लिए पूर्व निर्धारित प्रारूप है, तो आपको इसके बजाय यहां अपना दिनांक प्रारूप मैन्युअल रूप से निर्दिष्ट करने की आवश्यकता हो सकती है। दस्तावेज़ देखें: http://logstash.net/docs/1.3.2/filters/date

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