apache-kafka - 如果生产者方确认延迟非常高,应监控哪些 Kafka 代理指标
问题描述
如果生产者端的确认延迟非常高,我们是否可以使用一些代理指标来监控 Kafka 代理。
我们正在使用 datadog 来监控生产者和 Kafka 代理端。可以看出producer ack lag超过10秒。但是,在broker端,我觉得只用message.in.rate
,kafka.net.bytes_in.rate
效率不高。最好我们可以在代理端有一些 LAG 指标来指示the broker is fully loaded to acknowledge back the producer.
此外,我们仅kafka.acks = 1
用于分区领导者。
我想知道是否有人对此有一些经验,欢迎任何建议。:) 提前致谢。
解决方案
我猜你在谈论“指标”而不是矩阵!
在 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
推荐阅读
- c++ - 用 in_addr 结构中的点显示 IP 地址
- hibernate - PrimaryKeyJoinColumn 中的列名和反列名
- android - 如何在 Android 中获取特定语言的语言名称?
- jquery - 如何滑动内容?
- python - 图形轴在 Python 中未正确显示
- android - Kotlin Android Studio - onClickListener 使用应用插件:'kotlin-android-extensions'
- mongodb - 嵌套数组中的 MongoDB addToSet
- python - 使用 encode('utf-8') 打印 Python 字符串给出 Execption
- elasticsearch - NEST 如何使用注释设置完成建议上下文
- javascript - 为什么我收到的 websocket 的频率有时为零?