我使用 filebeat 將日志檔案提取到我的 logstash 中,然后過濾不必要的欄位。一切正常,我將這些輸出到elasticsearch,但是有一個欄位用于elasticsearch索引名稱,我在我的grok匹配中定義了這個變數,但是一旦它達到目的,我就找不到洗掉該變數的方法。我將在下面分享我的 logstash 配置
input {
beats {
port => "5044"
}
}
filter {
grok {
match => { "[log][file][path]" => ".*(\\|\/)(?<myIndex>.*)(\\|\/).*.*(\\|\/).*(\\|\/).*(\\|\/).*(\\|\/)" }
}
json {
source => message
}
mutate {
remove_field => ["agent"]
remove_field => ["input"]
remove_field => ["@metadata"]
remove_field => ["log"]
remove_field => ["tags"]
remove_field => ["host"]
remove_field => ["@version"]
remove_field => ["message"]
remove_field => ["event"]
remove_field => ["ecs"]
}
date {
match => ["t","yyyy-MM-dd HH:mm:ss.SSS"]
remove_field => ["t"]
}
mutate {
rename => ["l","log_level"]
rename => ["mt","msg_template"]
rename => ["p","log_props"]
}
}
output {
elasticsearch {
hosts => [ "localhost:9222" ]
index => "%{myIndex}"
}
stdout { codec => rubydebug { metadata => true } }
}
我只想從我的索引中洗掉“myIndex”欄位。有了這個組態檔,如果可能的話,我會在 elasticsearch 中看到這個欄位,我想洗掉它。我試圖將它與其他欄位一起完全洗掉,但它給出了一個錯誤。我想這是因為我在logstash 將其提供給elasticsearch 之前將其洗掉。
uj5u.com熱心網友回復:
在 [@metadata] 下創建欄位。這些欄位可在 logstash 中使用,但會被輸出忽略,除非它們使用 ruby??debug 編解碼器。
調整你的 grok 過濾器
match => { "[log][file][path]" => ".*(\\|\/)(?<[@metadata][myIndex]>.*)(\\|\/).*.*(\\|\/).*(\\|\/).*(\\|\/).*(\\|\/)" }
從 mutate remove_field 中洗掉 [@metadata] 并將輸出配置更改為
index => "%{[@metadata][myIndex]}"
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/456493.html
