मेरे लॉग इस के प्रारूप में हैं:Logstash grok बहु संदेश
2014-06-19 02:26:05,556 INFO ok
2014-06-19 02:27:05,556 ERROR
message:space exception
at line 85
solution:increase space
remove files
घटनाओं के 2 प्रकार के होते हैं:
-log एक लाइन की तरह कई लाइन पर पहले
-log की तरह पर दूसरा
मैं एक लाइन घटना को संसाधित करने में सक्षम हूं, लेकिन मैं दूसरे प्रकार को संसाधित करने में सक्षम नहीं हूं, जहां मैं एक चर में संदेश और दूसरे में समाधान को स्टॉक करना चाहता हूं । तो यह है कि मैं क्या किया है
input {
file {
path => ["logs/*"]
start_position => "beginning"
codec => multiline {
pattern => "^%{TIMESTAMP_ISO8601} "
negate => true
what => previous
}
}
}
filter {
#parsing of one line event
grok {
patterns_dir => "./patterns"
match=>["message","%{TIMESTAMP_ISO8601:timestamp} %{WORD:level} ok"]
}
#the parsing fail, so we assumed we are in multiline events, now I process them and I am stuck when I am getting to the new line.
if "_grokparsefailure" in [tags] {
grok {
patterns_dir => "./patterns"
match=>["message","%{TIMESTAMP_ISO8601:timestamp} %{WORD:level}\r\n"]
}
}
}
, और मैं अपने सांत्वना उत्पादन में है करने के लिए निम्नलिखित चाहते हैं:
यह मेरा config है
{
"@timestamp" => "2014-06-19 00:00:00,000"
"path" => "logs/test.log"
"level"=>"INFO"
},
{
"@timestamp" => "2014-06-19 00:00:00,000"
"path" => "logs/test.log"
"level"=>"ERROR"
"message" => "space exception at line 85"
"solution"=>"increase space remove files"
}
Concretely, मैं चाहते हैं संदेश चर के लिए दो शब्द ("संदेश" और "समाधान" के बीच सभी अभिव्यक्ति प्राप्त करें, "समाधान" और समाधान चर के लिए ईवेंट का अंत), और इससे कोई फर्क नहीं पड़ता कि अभिव्यक्ति एक या एकाधिक पंक्तियों पर है।
अग्रिम धन्यवाद
तुम सिर्फ' संदेश की कोशिश की है ( *?।)?।? मुझे नहीं पता कि क्या। ग्रोक में नई लाइन से मेल खाता है या नहीं - यदि नहीं, तो आप '। *' –
Alcanzar