0

问题

嗨,我正在尝试使用 Grafana 可视化 Kafka 滞后。我一直在尝试使用 Metricbeat 记录 kafka 滞后并自己进行数学计算,因为 Metricbeat 不支持在我正在使用的版本中记录 Kafka 滞后(但它最近已经实现)。max(partition.offset.newest) - max(consumergroup.offset)我没有使用来计算滞后,而是sum(partition.offset.newest) - sum(consumergroup.offset)在特定的kafka.topic.name. 但是,总和不合,经过进一步调查,我发现计数甚至不合!分区偏移的计数是每 10 秒 30 个,而消费者组偏移的计数是每 10 秒 12 个。我希望两者的计数相同

主题偏移与消费者偏移

我不明白为什么 Metricbeat 记录的分区多于消费者组。起初我以为是因为我的 Metricbeat 配置定义了 2 个主机组,这可能导致它被多次记录。但是,在更改我的配置后,计数只下降了一半。

具有 1 个主机的主题偏移量与消费者偏移量

TL;博士

为什么partition和consumergroup的Metricbeat计数不同?

设置

  1. 卡夫卡 2 经纪人
  2. Kafka 主题分区:
Topic: xxx     PartitionCount:3        ReplicationFactor:2     Configs:
Topic: xxx     Partition: 0    Leader: 2       Replicas: 2,1   Isr: 2,1
Topic: xxx     Partition: 1    Leader: 1       Replicas: 1,2   Isr: 1,2
Topic: xxx     Partition: 2    Leader: 2       Replicas: 2,1   Isr: 2,1
  1. Metricbeat 配置(modules.d/kafka.yml):
- module: kafka
  #metricsets:
  #  - partition
  #  - consumergroup
  period: 10s
  hosts: ["xxx.yyy:9092"]

版本

  • 卡夫卡 2.11-0.11.0.0
  • Elasticsearch-7.2.0
  • Kibana-7.2.0
  • Metricbeats-7.2.0
4

1 回答 1

1

经过多次调试,我发现出了什么问题:

  1. 由于某种原因,我的 kafka 代理 1 只有生产者指标而没有消费者指标,连接到代理 2 解决了这个问题。连接两个代理会将两个指标加在一起。
  2. Lucene 使用模糊搜索,因此我的数据中还有其他一些消费者群体。对于精确的单词匹配,请kafka.partition.topic.keyword: 'xxx'改用。这使得我的 kafka 生产者偏移量与消费者偏移量的比率为 2:1
  3. metricbeat 也会记录副本,所以我需要设置NOT kafka.partition.partition.is_leader: false为获取所有分区领导者。这使得消费者与分区的比例为 1:1。

完成 3 个步骤后,我可以使用公式sum(partition.offset.newest) - sum(consumergroup.offset)来获得滞后

但是,我不知道为什么代理 1 没有消费者信息。

于 2019-12-10T07:42:41.640 回答