我有一个关键的Kafka应用程序,需要一直启动并运行。源主题由 debezium kafka connect for mysql binlog 创建。不幸的是,此设置可能会出错很多。很多时候 debezium 连接器出现故障并需要重新启动,我的应用程序也是如此(因为如果没有引发任何异常,它只会挂起并停止消耗(。我手动测试和发现故障的方法是检查 kibana 日志,然后通过终端使用可疑主题。我可以在代码中模仿这一点,但显然不是最佳实践。我想知道 KafkaStream api 中是否有能力允许我进行这样的健康检查,并检查 kafka 集群的其他部分? 困扰我的另一点是,我是否可以保持流处于活动状态并在连接器再次启动时重新加入主题。
您可以检查 Kafka 流状态以查看它是否正在重新平衡/运行,这将指示正常运行。虽然,如果没有数据进入拓扑,我认为不会发生错误,因此您需要查找上游依赖项的运行状况。
总体而言,听起来您可能希望投入一些时间来使用Consul或Sensu等监视工具,这些工具可以运行本地服务运行状况检查并在服务出现故障时发出警报。或者至少松紧器每个警报
就Kafka健康检查而言,您可以通过多种方式做到这一点。
- 代理和动物园管理员进程是否正在运行?(SSH到节点,检查进程(
- 代理和动物园管理员端口是否打开?(使用插座连接(
- 是否有可以跟踪的重要 JMX 指标?(公制节拍(
- 您能找到活动的控制器代理吗(使用
AdminClient#describeCluster
( - 作为控制器元数据的一部分,您是否希望响应所需的最小代理数量(可从
AdminClient
获得( - 您使用的主题是否具有正确的配置?(保留期、最小 ISR、复制因子、分区计数等(?(再次使用
AdminClient
(