首页 > 解决方案 > 如果生产者方确认延迟非常高,应监控哪些 Kafka 代理指标

问题描述

如果生产者端的确认延迟非常高,我们是否可以使用一些代理指标来监控 Kafka 代理。

我们正在使用 datadog 来监控生产者和 Kafka 代理端。可以看出producer ack lag超过10秒。但是,在broker端,我觉得只用message.in.ratekafka.net.bytes_in.rate效率不高。最好我们可以在代理端有一些 LAG 指标来指示the broker is fully loaded to acknowledge back the producer.

此外,我们仅kafka.acks = 1用于分区领导者。

我想知道是否有人对此有一些经验,欢迎任何建议。:) 提前致谢。

标签: apache-kafkamonitoring

解决方案


我猜你在谈论“指标”而不是矩阵!

在 Producer 上,您有kafka.producer:type=producer-metrics,client-id="{client-id}". 该指标有 2 个有趣的属性:

  • request-latency-avg:平均请求延迟,以毫秒为单位

  • request-latency-max:最大请求延迟,以毫秒为单位

在代理方面,您需要检查一些指标来调查您的问题:

  • 消息转换时间:如果生产者使用比代理更旧的消息格式,则会发生向下转换。kafka.network:type=RequestMetrics,name=MessageConversionsTimeMs,request=Produce
  • 请求总时间:Kafka 处理请求所花费的总时间。kafka.network:type=RequestMetrics,name=TotalTimeMs,request=Produce

    如果这很高,您可以检查细分指标:

    • 请求在请求队列中等待的时间:kafka.network:type=RequestMetrics,name=RequestQueueTimeMs,request=Produce
    • 在领导者处处理请求的时间:kafka.network:type=RequestMetrics,name=LocalTimeMs,request=Produce
    • 请求在响应队列中等待的时间:kafka.network:type=RequestMetrics,name=ResponseQueueTimeMs,request={Produce|FetchConsumer|FetchFollower}
    • 发送响应的时间:kafka.network:type=RequestMetrics,name=ResponseSendTimeMs,request=Produce

这些都列在 Kafka 文档中建议监控的指标列表中:http: //kafka.apache.org/documentation/#monitoring


推荐阅读