2015-01-13 3 views
5

में ऑर्डर से बाहर संग्रहीत किया जाता है। मैं elasticsearch में लॉग संदेशों को केंद्रीकृत करने के लिए fluentd का उपयोग कर रहा हूं और उन्हें किबाना के साथ देख सकता हूं। जब मैं लॉग संदेशों को देखने, संदेशों है कि एक ही दूसरे में हुई क्रम से बाहर हैं और @timestamp में मिलीसेकेंड सब शून्यफ्लैंटड मिलीसेकंड खो देता है और अब लॉग संदेशों को लोचदार खोज

2015-01-13T11:54:01.000-06:00 DEBUG my message 

है मैं कैसे मिलीसेकेंड स्टोर करने के लिए fluentd मिलता है?

उत्तर

12

fluentd वर्तमान में उप-दूसरे संकल्प का समर्थन नहीं करता: https://github.com/fluent/fluentd/issues/461

मैं अगर युग

के बाद से नैनोसेकंड स्टोर करने के लिए उदाहरण के लिए record_reformer साथ लॉग संदेशों के सभी के लिए एक नया क्षेत्र जोड़कर इस के आसपास काम अपने fluentd तो जैसे कुछ आदानों है: तो फिर उन्हें बदलने

# 
# Syslog 
# 
<source> 
    type syslog 
    port 5140 
    bind localhost 
    tag syslog 
</source> 

# 
# Tomcat log4j json output 
# 
<source> 
    type tail 
    path /home/foo/logs/catalina-json.out 
    pos_file /home/foo/logs/fluentd.pos 
    tag tomcat 
    format json 
    time_key @timestamp 
    time_format "%Y-%m-%dT%H:%M:%S.%L%Z" 
</source> 

इस तरह दिखेगा और एक record_reformer कि एक nanosecond क्षेत्र कहते हैं जोड़ने के लिए

012,
# 
# Syslog 
# 
<source> 
    type syslog 
    port 5140 
    bind localhost 
    tag cleanup.syslog 
</source> 

# 
# Tomcat log4j json output 
# 
<source> 
    type tail 
    path /home/foo/logs/catalina-json.out 
    pos_file /home/foo/logs/fluentd.pos 
    tag cleanup.tomcat 
    format json 
    time_key @timestamp 
    time_format "%Y-%m-%dT%H:%M:%S.%L%Z" 
</source> 

<match cleanup.**> 
    type record_reformer 
    time_nano ${t = Time.now; ((t.to_i * 1000000000) + t.nsec).to_s} 
    tag ${tag_suffix[1]} 
</match> 

फिर अपने किबाना डैशबोर्ड पर time_nano फ़ील्ड जोड़ें और @Timestamp के बजाय सॉर्ट करने के लिए इसका उपयोग करें और सब कुछ क्रम में होगा।

+1

उत्तर के लिए धन्यवाद। यहां एक फ्लुएंटेड रखरखाव। मैं इस मुद्दे को ध्यान में रखूंगा क्योंकि हम उप-दूसरे टाइमस्टैम्प समर्थन के बारे में अधिक सोचते हैं (यह ज्ञात समस्या/डिज़ाइन निर्णय है)। –

+0

इस मुद्दे पर ध्यान देने के लिए धन्यवाद Kiyoto Tamura। वर्कअराउंड आदर्श से कम है क्योंकि टाइमस्टैम्प फ्लैंटड बनाम एक लॉग फ़ाइल से उत्पन्न होता है जो कम से कम मिलीसेकंड सटीक हो सकता है। पहली बार मिलीसेकंड सटीक समय प्रारूप के लिए उपयोग करना सबसे अच्छा होगा और फिर उसी मिलीसेकंड में ऑर्डर रखने के लिए पार्सिंग के समय फ्लैंटड में वर्तमान दूसरे से वर्तमान नैनोसेकंड वैल्यू जोड़ें। या दूसरा अगर पार्स किए गए लॉग संदेश में उदाहरण के लिए सिसलॉग जैसे 1 सेकंड रिज़ॉल्यूशन था। –

+1

हाय @ डेविडवार्टेल, क्या आपको लगता है कि फ्लैंट-प्लगइन-रिकॉर्ड-सुधारक से परिवर्तनीय $ {time} का उपयोग करना बेहतर होगा? तो 'टाइम.now' के बजाय हम फ्लैंटड के समय की बजाय घटना का समय प्राप्त कर सकते हैं। – clarete

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