0
後的情況:Logstash:如果基於跌落在事件拆分
我輸入日誌是這個樣子:
{
"key1":"value1"
"key2":"value2"
"events":
[{
"Level":"Information",
"Code":"100"
},
{
"Level":"Information",
"SomeKey":"SomeValue"
},
{
"Level":"Error",
"Message":"Something went wrong"
}
]}
我想:
拆分events數組以創建單個對象,其中所有外層字段仍填充(key1和key2)。
拆分後選擇性地刪除日誌。如果它們包含「代碼」屬性,我只想保留「信息級別」日誌。
我logstash配置看起來像
filter {
split {
field => "[events]"
}
}
filter {
if ![events][Code]
{ drop {} }
}
output {
elasticsearch {}
}
問題:似乎
Logstash不執行第二過濾器之前的事件分開。換句話說,如果日誌中的任何事件沒有「代碼」字段,則整個日誌將被刪除,包括我必須保留的「錯誤」級別信息。
我已經在這裏待了大概一整天,它真的讓我很緊張。我會手動嘗試創建自己的插件,但我從來沒有使用任何Ruby。
我非常確定這並不重要,但我在Docker中運行ELK堆棧。我相信這些配置文件可以正確加載,並且可以被Logstash使用。
這個黑客做了這份工作,謝謝!我應該擔心黑客會在未來的更新中停止工作嗎? –
這個特殊的黑客應該不會破壞新版本...它將一個字段從一個位置複製到另一個位置,然後檢查它是否爲'%{[events] [Code]}' - 這將是確切的字符串如果沒有[events] [Code],因爲logstash不會替代未設置的值。 – Alcanzar