【发布时间】: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