Logstash无法使用allow_time_override并且数据丢失涌入

时间:2018-05-18 12:12:00

标签: logstash influxdb data-loss

我遇到了使用Influxdb输出插件的logstash 5.2版的数据丢失问题。

我的logstash配置是:

filter {
  grok {
 patterns_dir => ["/etc/logstash/patterns"]
      match => { "message" => "%{NGINXACCESSBLOG}"}
      if [type] == "nginx-access-router" {
    ruby { code => "event.set('epoc', event.get('@timestamp').to_i)" }
    date {
        match => [ "timestamp" , "dd/MMM/YYYY:HH:mm:ss Z" ]
    target => "newdate"
      }

    mutate { convert => [ "request_time", "float" ] }
    if ![response] {
      mutate { add_field => ["response", "nil"] }
    }
}
}
}


output {

  if [type] == "nginx-access" {

        influxdb {
      host => "localhost"
      port => 8086
      user => "admin"
      password => "XXX"
      db => "xx"
      allow_time_override => true
      retention_policy => "XX"
      measurement => "XXXX"
      enable_metric => false
      send_as_tags => ["response"]
      data_points => {

        "response" => "%{[response]}"

    "timestamp" => "%{[epoc]}"
        "time" => "%{[epoc]}"


     }
     coerce_values => {
        "request_time"   => "float"
    }
}
}
}

注意:我已经在调试日志中检查了所有收到的日志行都是用grok模式成功解析的。

然后为什么会有超过50%的数据丢失。

我试过一些解决方案:  按照 https://github.com/logstash-plugins/logstash-output-influxdb/issues/69

我尝试使用“allow_time_override”作为上述配置,但logstash停止将数据推送到涌入并在错误日志文件中得不到任何内容。

1 个答案:

答案 0 :(得分:0)

经过一步一步的跟踪,能够找到我昨天发布的数据丢失问题的根本原因和解决方法。

问题的根本原因是:

Influxdb会覆盖重复的时间戳

解决方案:覆盖时间为微秒