0

我在一個文件中使用logstash過濾器插件處理多個日誌消息。然後,過濾的日誌將發送到elasticsearch。刪除過濾器不工作logstash

在日誌消息中有一個字段叫做addID。我想刪除所有具有特定addID的日誌消息。這些特定的addIDS存在於ID.yml文件中。

場景:如果日誌消息的addID與ID.yml文件中存在的任何addID匹配,則應刪除該日誌消息。

任何人都可以幫助我實現這一目標嗎?

下面是我的配置文件。

input { 


    file { 
    path => "/Users/jshaw/logs/access_logs.logs 
    ignore_older => 0 
    } 
} 

filter { 


    grok { 

     patterns_dir => ["/Users/jshaw/patterns"] 
     match => ["message", "%{TIMESTAMP:Timestamp}+{IP:ClientIP}+{URI:Uri}"] 

    } 


    kv{ 
     field_split => "&?" 
     include_keys => [ "addID" ] 
     allow_duplicate_values => "false" 

    } 

    if [addID] in "/Users/jshaw/addID.yml" { 
     drop{} 
    } 

} 

output { 

    elasticsearch{ 
     hosts => ["localhost:9200"] 

     } 
} 

回答

0

您正在使用in運算符錯誤。它用於檢查數值是否在數組中,而不是在文件中,這通常使用起來更復雜一些。

解決方法是使用ruby過濾器每次打開文件。
或將ADDID值在配置文件中,就像這樣:

if [addID] == "addID" { 
    drop{} 
} 
+0

感謝您的答覆。 所以,如果我使用紅寶石過濾器,那麼我將能夠刪除具有特定addID的日誌消息? – User24

+0

@ User24是的。 cf [文檔](https://www.elastic.co/guide/en/logstash/current/plugins-filters-ruby.html) – baudsp