对于Logstash Kafka输入不准确地生成数据,确实存在大的检索延迟

时间:2017-08-09 12:22:16

标签: logstash logstash-configuration

我正在使用logstash 2.4和kafka输入5.1.6。在我的配置中,我创建了一个名为input_lag的字段,以监控logstash处理日志所需的时间:

ruby {
      code => "event['lag_seconds'] = (Time.now.to_f - event['@timestamp'].to_f)"
}

我从单个logstash实例中听取几个kafka主题,并且对于定期生成日志的主题,一切正常,滞后很小(几秒钟)。但是,对于不规则地产生少量日志的主题,我会遇到很大的滞后。有时它是几万秒。 我对Kafka输入的配置如下:

input {
    kafka {
        bootstrap_servers => "kafka-broker1:6667,kafka-broker2:6667,kafka-broker3:6667"
        add_field => { "environment" => "my_env" }
        topics_pattern => "a|lot|of|topics|like|60|of|them"
        decorate_events => true
        group_id => "mygroup1"
        codec => json
        consumer_threads => 10
        auto_offset_reset => "latest"
        auto_commit_interval_ms => "5000"
   }
} 

logstash实例看起来很健康,因为正在定期检索来自其他主题的日志。我已经检查过,如果我使用其控制台消费者连接到Kafka,那么延迟日志就在那里。我还认为,单个logstash实例提供太多主题并将这些小主题提取到单独的logstash实例可能会出现问题但滞后完全相同,所以这不是问题。

有什么想法吗?我怀疑logstash可能会使用一些指数延迟来进行日志检索,但不知道如何确认和修复它。

1 个答案:

答案 0 :(得分:0)

仍缺少一些信息:

  • Kafaka客户端版本?
  • @timestamp
  • 的内容是什么?
  • 过滤器的顺序是什么?红宝石是最后一个吗?
  •   

    延迟日志在那里 - &#39>那里'在卡法卡意味着什么?

时间戳

如果我们没有使用date过滤器来更改此字段,@timestamp应该是读取日志条目的时间。

在这种情况下,滞后到秒,所以我想使用date过滤器,这里的时间戳是生成日志的时间。

等待之前

当使用Kafka输入插件来消费消息时,它将在服务器响应之前等待一段时间。这可以通过两个选项配置:

  • fetch_max_wait_ms
  • poll_timeout_ms

您可以在配置文件中查看它们。

等待过滤

Logstash批量处理输入日志以提高性能,因此如果没有足够的日志,它将等待一段时间。

  • pipeline.batch.delay

您可以在logstash.yml中查看。

公制

Logstash本身具有生成的度量信息,结合Elasticseach和Kibana,可以非常方便地使用。所以我建议你试一试。

参考