Apache kafka 调试速率不平衡的kafka消息

Apache kafka 调试速率不平衡的kafka消息,apache-kafka,datadog,Apache Kafka,Datadog,在我的产品中有一个4节点的kafka集群,我们使用自定义分区器,它会修改id的64来确定分区。从上周开始,我们的一个节点上出现了卡夫卡消息速率不平衡的情况,如所附图表所示。粉色线显示kafka01节点上的消息传入速率,蓝黄色线显示所有其他3个框上的消息传入速率。我正在使用datadog进行监控,并使用度量kafka.messages\u in.rate。假设id分布没有变化,则消息在速率上的分布应该没有变化。我为调试该问题所采取的步骤如下 集群由4个节点中的每个节点上的16个引线进行平衡 ISR

在我的产品中有一个4节点的kafka集群,我们使用自定义分区器,它会修改id的64来确定分区。从上周开始,我们的一个节点上出现了卡夫卡消息速率不平衡的情况,如所附图表所示。粉色线显示kafka01节点上的消息传入速率,蓝黄色线显示所有其他3个框上的消息传入速率。我正在使用datadog进行监控,并使用度量kafka.messages\u in.rate。假设id分布没有变化,则消息在速率上的分布应该没有变化。我为调试该问题所采取的步骤如下

  • 集群由4个节点中的每个节点上的16个引线进行平衡
  • ISR在4个箱子中也保持平衡,每个箱子有32个ISR[复制系数为2]
  • 所有4个盒子上的网络输入和输出几乎相等
  • 请求任何帮助或可以查看的领域/指标来调试此异常

    对于将来正在搜索此信息的人 需要调试的东西很少

    • 启用代理日志以跟踪
    • 比较一个接收多个请求的日志和一个接收少个请求的日志,在短时间内有足够的生成请求进行分析比较
    • 在日志中搜索ProducerRequest,它将为您提供有关it分区是否按预期进行的详细信息,并提供有关从哪个主机接收更多请求的信息

    分区器逻辑中使用的id是什么?它是一个内部id,是表的自动递增主键。感谢Liju的观点,我在应用程序端发布日志上尝试了第三点,它们似乎分布在各个分区中。让我感到困惑的是,即使所有盒子的网络/输入/输出速率几乎相等,消息的输入/输出速率又是如何高的。那么,你的意思是数据在所有分区之间平均分布?这是否意味着监视工具显示不正确?您可以做的另一件事是在代理上启用jmx,如果您可以控制更改分区器,则可以在运行时通过visualVM类型的工具查看每个KPI。。将其更改为默认分区器,我还以循环方式进行分区,因此MSG将在分区之间平均分布,数据似乎平均分布,我开始这么认为[我可能更不正确]。jmx已在代理上启用。由于它的prod系统,我不能改变分区器,否则下游的一切都会崩溃。