丢弃过滤器不工作logstash
Posted
技术标签:
【中文标题】丢弃过滤器不工作logstash【英文标题】:Drop filter not working logstash 【发布时间】:2016-07-20 05:06:45 【问题描述】:我正在使用 logstash 过滤器插件处理的文件中有多个日志消息。然后,过滤后的日志将被发送到 elasticsearch。
日志消息中有一个名为 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"]
【问题讨论】:
【参考方案1】:您使用了错误的in
运算符。它用于检查一个值是否在数组中,而不是在文件中,这通常使用起来有点复杂。
解决方案是每次都使用 ruby 过滤器打开文件。 或者将 addId 值放入配置文件中,如下所示:
if [addID] == "addID"
drop
【讨论】:
感谢您的回复。那么,如果我使用 ruby 过滤器,那么我是否能够删除具有特定 addID 的日志消息?? @User24 是的。参照documentation以上是关于丢弃过滤器不工作logstash的主要内容,如果未能解决你的问题,请参考以下文章