Çok satırlı olayları birleştiren ve bunları oduncu protokolü üzerinden gönderen bir uzak makinem var. Grok/logstash'daki yeni satırı nasıl eşleştirebilirim?
{
"message" => "2014-10-20T20:52:56.133+0000 host 2014-10-20 15:52:56,036 [ERROR ][app.logic ] Failed to turn message into JSON\nTraceback (most recent call last):\n File \"somefile.py", line 249, in _get_values\n return r.json()\n File \"/path/to/env/lib/python3.4/site-packages/requests/models.py\", line 793, in json\n return json.loads(self.text, **kwargs)\n File \"/usr/local/lib/python3.4/json/__init__.py\", line 318, in loads\n return _default_decoder.decode(s)\n File \"/usr/local/lib/python3.4/json/decoder.py\", line 343, in decode\n obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n File \"/usr/local/lib/python3.4/json/decoder.py\", line 361, in raw_decode\n raise ValueError(errmsg(\"Expecting value\", s, err.value)) from None\nValueError: Expecting value: line 1 column 1 (char 0), Failed to turn message into JSON"
}
Ben
grok {
match => [ "message", "%{TIMESTAMP_ISO8601:timestamp} \[%LOGLEVEL:loglevel}%{ SPACE}\]\[%{NOTSPACE:module}%{SPACE}\]%{GREEDYDATA:message}" ]
}
GREEDYDATA
ile mesaj oluşturmak üzere deneyin
şuna benzer bir şeydir.
Öyleyse ben gsub kullanmaya çalıştı:
mutate {
gsub => ["message", "\n", "LINE_BREAK"]
}
# Grok goes here
mutate {
gsub => ["message", "LINE_BREAK", "\n"]
}
ancak bir yerine
The Quick brown fox
jumps over the lazy
groks
Ben
The Quick brown fox\njumps over the lazy\ngroks
Yani var
...
işe yaramadıNasıl ekleyebilirim Verilerime yeni satır ekledim, GREEDYDATA
'u yeni satırlarımla eşleştir, yoksa başka bir şekilde mesajımın ilgili bölümünü al.
http://stackoverflow.com/questions/24307965/logstash-grok-multiline-message kopyası gibi. –
@ MagnusBäck temelde evet, bu soru yeni satırları önemsemese de, sonuç mesajında yeni satırların bulunmasını istiyorum. –