【问题标题】:logstash and kafka and graylog and order of messageslogstash 和 kafka 和 graylog 以及消息的顺序
【发布时间】:2020-04-12 08:46:20
【问题描述】:

我们有一个带有event log 的应用程序,我们的应用程序将event log 发送到Kafka 和JSON format。我们在卡夫卡has one partition中的topic,因为我们需要读取order message,我们也使用Logstash来消费event log并将JSON格式转换为GELF格式,然后发送到Graylog。 我们的问题是考虑到topic有分区,但是consumer(Logstash)没有按顺序读取消息,我们的顺序被打乱了。我们使用

 stdout{ codec => rubydebug }

在输出Logstash 配置和此Logstash 日志中确认了问题,当然,我们在 GaryLag 中没有按顺序排列的事件。 为什么顺序混乱。 Kafka 或Logstash 或Graylog 或...的问题?

谢谢。

更新

logstash 配置:

input {
  kafka {
        bootstrap_servers => "kafka1:9092,kafka2:9092,kafka3:9092"
        group_id => "MyTopicReader"
        topics => "MyTopic"
        consumer_threads => 1
        enable_metric => "false"
        auto_offset_reset => "latest"
 }
}

filter {
   json {
     source => "message"
  }
}

output {
      gelf {

           host => "ip-graylog"
           port => 12201
           sender => "ip-logstash"

    }
 stdout{ codec => rubydebug }
}

管道配置pipelines.yml:

- pipeline.id: main
  path.config: "/etc/logstash/conf.d/*.conf"

logstash.yml 中的管道设置

pipeline.id: main
pipeline.workers: 2
pipeline.batch.size: 125
pipeline.batch.delay: 50

【问题讨论】:

  • 您的完整管道配置是什么?你用了多少工人?默认情况下,logstash 将工作人员的数量设置为等于 cpu 内核的数量,如果您有 4 个内核,您将有 4 个工作人员,这意味着您将有 4 个线程用于过滤器和输出。
  • @leandrojmp 请看更新(logstash config)
  • @pyramid13 你能解决这个问题吗?我也有类似的。
  • @Jags 您使用哪个版本的 Graylog?
  • @pyramid13 我不使用 Graylog。我有 kafka->logstash->弹性搜索。但是有同样的订购问题。在elastic.co/guide/en/logstash/current/processing.html 找到文档。似乎 akhilesh-bhardwaj 的答案可以解决问题。

标签: logging apache-kafka logstash graylog3


【解决方案1】:

使用 -w 1 启动 Logstash 以运行单个管道工作器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-15
    • 1970-01-01
    相关资源
    最近更新 更多