Mysql 日志存储聚合重置值

Mysql 日志存储聚合重置值,mysql,logstash,Mysql,Logstash,我在做一个简单的日志存储聚合,在这里我检查SQL表上的特定值,每当发现这个值时,我就增加计数器。最后,我只是做了另一个简单的除法,计算了多少次,我把那个值和那天的所有值相加,以得到一个百分比。日期是我的任务id 从逻辑角度来看,百分比将从100%下降,并将一直下降,直到日期重置 每次我让logstash同时运行整个SQL表时,聚合都会起作用 但是,当logstash运行较长时间并且SQL表不断更新时,我无法工作。在这里,我看到由于某种原因,百分比计算在同一天被重置(我每天看到100%以上) 我不

我在做一个简单的日志存储聚合,在这里我检查SQL表上的特定值,每当发现这个值时,我就增加计数器。最后,我只是做了另一个简单的除法,计算了多少次,我把那个值和那天的所有值相加,以得到一个百分比。日期是我的任务id

从逻辑角度来看,百分比将从100%下降,并将一直下降,直到日期重置

每次我让logstash同时运行整个SQL表时,聚合都会起作用

但是,当logstash运行较长时间并且SQL表不断更新时,我无法工作。在这里,我看到由于某种原因,百分比计算在同一天被重置(我每天看到100%以上)

我不知道为什么重新计算。任何帮助都将不胜感激

这是我的完整日志存储配置:

input {
  jdbc { 
    jdbc_connection_string => "jdbc:mysql://localhost:3306/sql_failure"
    jdbc_user => "user"
    jdbc_password => "password"
    jdbc_driver_library => "D:\logstash-7.2.0\mysql-connector-java-5.1.40\mysql-connector-java-5.1.40-bin.jar"
    jdbc_driver_class => "com.mysql.jdbc.Driver"
    statement => "SELECT id, date, failure FROM sql_failure WHERE id > :sql_last_value"
    use_column_value => true
    tracking_column => "id"
    }
  }

filter {
 aggregate {
    task_id => "%{date}"
    code => "
      map['count'] ||= 0
      map['failure_counter'] ||= 0

      map['count'] += 1

      if event.get('failure') == 1
        map['failure_counter'] += 1
      end

      event.set('failure_rate', ((map['count'].to_f - map['failure_counter'].to_f)/(map['count'].to_f))*100)
      "
  }
}

output {
  elasticsearch {
  hosts => "localhost:9200"
  index => "failure"
  document_id => "%{uid}"
  }
}
这就是我的管道。yml:

pipeline.id: sql_failure
pipeline.workers: 1
queue.type: persisted
path.config: "/logstash/failure_rate.config"

请考虑给出一个可重复的例子。你是否用不同的工人数运行LogSTASH?运行这样的东西通常只需要运行一个工人。。。您还可以考虑向您的问题添加关于LogStAsAg配置的一些信息。@丹尼尔和@ NACKX,我将LogStuh和PiPuleLink配置中的信息添加到我的帖子中。我现在想知道管道的某些配置是否是罪魁祸首。例如,我没有配置<代码>队列。检查点。间隔< /代码>请考虑给出一个可重复的示例。您是否运行了不同工种计数的LogSTASH?运行这样的东西通常只需要运行一个工人。。。您还可以考虑向您的问题添加关于LogStAsAg配置的一些信息。@丹尼尔和@ NACKX,我将LogStuh和PiPuleLink配置中的信息添加到我的帖子中。我现在想知道管道的某些配置是否是罪魁祸首。例如,我没有配置
queue.checkpoint.interval