如果生产者端 ack 延迟非常高,应该监控哪些 Kafka 代理指标

Xia*_*ong 4 monitoring apache-kafka

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

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

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

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

Mic*_*son 6

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

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

  • 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