我有实现健康检查的要求,作为其中的一部分,我必须确定生产者是否能够发布消息,消费者是否能够消费消息,为此,我必须检查到集群的连接是否正常,这可以使用"connection_count"度量进行检查,但这并不能提供真实的情况,尤其是对于将绑定到特定代理的消费者来说
生产者的情况更为棘手,因为生产者可能会将消息发布给任何持有生产者发布主题分区的代理。
简言之,我如何在生产者/消费者肥皂上找到相关经纪人的健康状况。
最后,我将问题分为几个检查。
-
你能联系到经纪人吗?
AdminClient.describeCluster
适用于此 -
你能描述一下你正在使用的主题吗?
AdminClient.describeTopic
可以做到 -
这些主题的ISR列表是否高于
min.in.sync.replicas
?从(2(外推数据
在生产者端,如果您至少设置了acks=1
,并且没有ack回调,或者您可以暴露缓冲区大小附近的JMX数据,如果生产者的缓冲区没有定期刷新,那么它就不健康。
对于消费者来说,看看重新平衡将发生的条件(例如两次民意调查之间的处理时间很长(,然后你就可以快速确定这意味着什么;"不健康";为他们。附加分区分配+重新平衡侦听器可以在这里提供帮助。
我在之间写的一些概念
- dropwizard kafka(也有生产者和消费者检查(
- 雷莫拉
我想Spring也有类似的