Logstash重复数据

时间:2016-09-04 10:48:04

标签: elasticsearch duplicates logstash kibana

我在Logstash中有重复的数据

我怎么能删除这个重复?

我的意见是:

输入

input {
  file {
    path => "/var/log/flask/access*"
    type => "flask_access"
    max_open_files => 409599
  }
  stdin{}
}

过滤

文件过滤器是:

filter {
  mutate { replace => { "type" => "flask_access" } }
  grok {
    match => { "message" => "%{FLASKACCESS}" }
  }
  mutate {
    add_field => {
      "temp" => "%{uniqueid} %{method}"
    }
  }
   if "Entering" in [api_status] {
     aggregate {
       task_id => "%{temp}"
       code => "map['blockedprocess'] = 2"
       map_action => "create"
     }
   }
   if "Entering" in [api_status] or "Leaving" in [api_status]{
     aggregate {
       task_id => "%{temp}"
       code => "map['blockedprocess'] -= 1"
       map_action => "update"
     }
   }
   if "End Task" in [api_status] {
     aggregate {
       task_id => "%{temp}"
       code => "event['blockedprocess'] = map['blockedprocess']"
       map_action => "update"
       end_of_task => true
       timeout => 120
     }
   }
 }

同时查看图像,相同的数据日志,我只发送了一个日志请求。

enter image description here

2 个答案:

答案 0 :(得分:1)

我解决了它

我在输出部分

中创建一个唯一的ID('document_id')

document_id指向我的temp和temp是我项目中唯一的id

我的输出更改为:

output {
  elasticsearch {
    hosts => ["localhost:9200"]
    document_id => "%{temp}"
#    sniffing => true
#    manage_template => false
#    index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
#    document_type => "%{[@metadata][type]}"
  }
  stdout { codec => rubydebug }
}

答案 1 :(得分:0)

在我的本地实验室执行测试时,我刚刚发现 logstash 对其保存在 /etc/logstash/conf.d 目录中的配置文件的数量很敏感。 如果配置文件超过 1 个,那么我们可以看到相同记录的重复项。

因此,尝试从 /etc/logstash/conf.d 目录中删除所有备份配置并重新启动 logstash。