【发布时间】:2020-12-12 11:18:47
【问题描述】:
当 kafka-streams 应用程序运行时 Kafka 突然宕机,应用程序进入“等待”模式,发送警告日志的消费者和生产者线程无法连接,当 Kafka 恢复时,一切都应该(理论上)恢复正常。 我正在尝试就这种情况发出警报,但我无法找到捕获并发送日志/指标的地方。 我尝试了以下方法:
-
streams.setUncaughtExceptionHandler但这只发生在异常情况下,这里不是这种情况 - 扩展
ProductionExceptionHandler并将default.production.exception.handler属性更改为我的扩展此接口的类。同样,与setUncaughtExceptionHandler一样,这里没有抛出异常,所以什么都没有发生。
我知道 Kafka 有自己的指标,我可以听这些指标并找出代理是否已关闭。但在某些情况下,Kafka 代理很好,而我的 kafka-streams 应用程序无法连接(即身份验证配置错误或 vpn/vpc 问题)
我能做些什么来发现这些问题并记录/报告它们?
更新
如果 kafka 不可用,请查看消费者/生产者日志:
2020-08-24 21:41:32,055 [my-kafka-streams-app-23a462fe-28c6-415a-a08a-b11d3ffffc2e-StreamThread-1] WARN o.apache.kafka.clients.NetworkClient - [] [Consumer clientId=my-kafka-streams-app-23a462fe-28c6-415a-a08a-b11d3ffffc2e-StreamThread-1-consumer, groupId=my-kafka-streams-app] Bootstrap broker localhost:9092 (id: -1 rack: null) disconnected
2020-08-24 21:41:32,186 [kafka-admin-client-thread | my-kafka-streams-app-23a462fe-28c6-415a-a08a-b11d3ffffc2e-admin] WARN o.apache.kafka.clients.NetworkClient - [] [AdminClient clientId=my-kafka-streams-app-23a462fe-28c6-415a-a08a-b11d3ffffc2e-admin] Connection to node -1 (localhost/127.0.0.1:9092) could not be established. Broker may not be available.
2020-08-24 21:41:32,250 [kafka-producer-network-thread | my-kafka-streams-app-23a462fe-28c6-415a-a08a-b11d3ffffc2e-StreamThread-1-producer] WARN o.apache.kafka.clients.NetworkClient - [] [Producer clientId=my-kafka-streams-app-23a462fe-28c6-415a-a08a-b11d3ffffc2e-StreamThread-1-producer] Connection to node -1 (localhost/127.0.0.1:9092) could not be established. Broker may not be available.
【问题讨论】:
-
很好奇,在这些情况下,在等待或超时之后是否会引发任何异常?您提到记录的消息 - 这是否记录良好,是否记录了异常?这可能有助于确定您可以使用的回调,或者您甚至可以为此使用自定义日志处理。
-
感谢您的评论,没有例外,只有“警告”日志消息。我可以在日志管理系统中对这些日志设置警报,但这将在我的代码之外。我可以以某种方式从我的应用程序中捕获它并以我想要的方式报告..
-
您是否可以通过更新您的原始问题来分享这些日志(根据需要编辑)?这可能会让其他人了解您的应用程序中可能检测到的内容。
-
@javabrett 我已经用相关日志更新了我的问题,
标签: apache-kafka kafka-consumer-api apache-kafka-streams