我有一個配置為從 S3 讀取物件的 Logstash 容器。要求是過濾舊物件,假設應該洗掉 3 個月前的物件。
我注意到我可以公開 s3 元資料,所以我在每個事件中都有以下元資料:
"@metadata" => {
"s3" => {
"etag" => "\"xxx"",
"content_length" => 33,
"metadata" => {},
"version_id" => "null",
"accept_ranges" => "bytes",
"last_modified" => 2021-12-21T13:30:28.000Z,
也許我可以使用過濾器/ruby 代碼來過濾“舊”物件并洗掉它們?
任何幫助表示贊賞!
uj5u.com熱心網友回復:
您是對的,在 logstash 中有洗掉過濾器,您可以將它與if洗掉符合條件的事件結合使用,例如檔案中的示例:
filter {
if [loglevel] == "debug" {
drop { }
}
}
除此之外,您還需要一種方法來檢查事件的年齡。為此,您可以使用年齡過濾器。參考檔案:
此過濾器通過從當前時間戳中減去事件時間戳來計算事件的年齡。您可以將此插件與洗掉過濾器插件一起使用,以洗掉比某個閾值更舊的 Logstash 事件。
這個插件似乎直接與@timestamp欄位一起作業,所以你必須在你的欄位周圍做一些洗牌。
祝你好運!
uj5u.com熱心網友回復:
因此,經過 Logsatsh 社區的調查和幫助,我設法按如下方式處理了此要求
使用 mutate 插件將上次修改時間復制到時間戳
變異{復制=>{“[@metadata][s3][last_modified]”=>“@timestamp”}}
使用年齡插件根據更改的時間戳進行過濾
年齡{} if [@metadata][age] > ${number in seconds} { drop {} }
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/391737.html
