के साथ Log4J का उपयोग कर मैं लॉगस्टैश के लिए नया हूं। मेरे पास Log4J में जावा एप्लिकेशन से कुछ लॉग लिखा गया है। मैं उन लॉग को ElasticSearch में प्राप्त करने की कोशिश करने की प्रक्रिया में हूं। मेरे जीवन के लिए, मैं इसे लगातार काम करने के लिए प्रतीत नहीं कर सकता। वर्तमान में, मैं निम्नलिखित लॉगस्टैश कॉन्फ़िगरेशन का उपयोग कर रहा हूं:LogStash
input {
file {
type => "log4j"
path => "/home/ubuntu/logs/application.log"
}
}
filter {
grok {
type => "log4j"
add_tag => [ "ApplicationName" ]
match => [ "message", "%{TIMESTAMP_ISO8601:timestamp} %{LOGLEVEL:level}" ]
}
}
output {
elasticsearch {
protocol => "http"
codec => "plain"
host => "[myIpAddress]"
port => "[myPort]"
}
}
यह कॉन्फ़िगरेशन हिट या मिस लगता है। मुझे यकीन नहीं है क्यों। उदाहरण के लिए, मेरे पास दो संदेश हैं। एक काम करता है, और दूसरा एक पार्स विफलता फेंकता है। फिर भी, मुझे यकीन नहीं है क्यों।
Tags Message
------ -------
["_grokparsefailure"] 2014-04-04 20:14:11,613 TRACE c.g.w.MyJavaClass [pool-2-
thread-6] message was null from https://domain.com/id-1/env-
MethodName
["ApplicationName"] 2014-04-04 20:14:11,960 TRACE c.g.w.MyJavaClass [pool-2-
thread-4] message was null from https://domain.com/id-1/stable-
MethodName
[ "ApplicationName"] timestamp
और level
की मेरी कस्टम फ़ील्ड है के साथ एक: यहाँ संदेशों और उनके संबंधित परिणाम हैं। हालांकि, ["_grokparsefailure"] के साथ प्रविष्टि में मेरे कस्टम फ़ील्ड नहीं हैं। अजीब टुकड़ा यह है कि लॉग ऊपर के संदेश कॉलम में दिखाए गए लगभग समान हैं। यह वास्तव में मुझे भ्रमित कर रहा है, फिर भी, मुझे नहीं पता कि समस्या क्या है या इससे आगे कैसे निकलना है।
- लॉग स्तर
- टाइमस्टैम्प
- लॉग संदेश
- मशीन नाम
- थ्रेड
आपके द्वारा प्रदान की जा सकने वाली किसी भी मदद के लिए धन्यवाद। यहां तक कि अगर मैं सिर्फ लॉग स्तर, टाइमस्टैंप, और लॉग संदेश कर सकता हूं, तो यह एक बड़ी मदद होगी। मैं ईमानदारी से इसकी सराहना करता हूं!
मैं नहीं देख सकते हैं कि कैसे अपनी grok पैटर्न कभी मेल खाता है आपके पास% {LOGLEVEL: level} "से पहले दो रिक्त स्थान हैं। यदि आपको रिक्त स्थान की एक चरणीय संख्या से निपटना है, तो एक या अधिक रिक्त स्थान से मेल खाने के लिए रिक्त स्थान के बजाय \ s + का उपयोग करें। और ग्रोक डीबगर उत्तर – Alcanzar