0

logstashフィルタープラグインを使用して処理しているファイルに複数のログメッセージがあります。その後、フィルタリングされたログがelasticsearchに送信されます。ドロップフィルターが動作していないlogstash

addIDと呼ばれる1つのフィールドがログメッセージにあります。特定の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演算子を間違って使用しています。これは、値がファイルではなく配列内にあるかどうかをチェックするために使用されます。通常、値は使用するには少し複雑です。

解決策は、毎回ファイルを開くためにルビーフィルタを使用することです。
またはこのように、あなたの設定ファイルにADDID値を置く:応答のための

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

感謝。 ルビーフィルタを使用すると、特定のaddIDを持つログメッセージを削除できますか? – User24

+0

@ User24はい。 Cf [documentation](https://www.elastic.co/guide/en/logstash/current/plugins-filters-ruby.html) – baudsp

関連する問題