【问题标题】:Monitor if Kafka is up?监控 Kafka 是否启动?
【发布时间】:2021-07-19 23:00:00
【问题描述】:

我只需要监控我的 Kafka 集群是否已启动。运行 Kafka 的机器有时会关闭。如果集群不可用,我想发送电子邮件警报。

我可以创建一个生产者和消费者来定期发送和接收虚拟消息。有没有更简单的方法?

【问题讨论】:

  • 你使用的是哪个框架?
  • @MohamedSweelam Python Kafka
  • 您可以安装 Datadog/Nagios/Sysdig 等进行全面的系统监控,而不是只使用 Kafka

标签: apache-kafka kafka-python


【解决方案1】:

您可以使用https://github.com/obsidiandynamics/kafdrop 它不会向您发送电子邮件,但比发送虚拟消息要容易得多

【讨论】:

    【解决方案2】:

    实际上知道集群是否启动并不是那么容易,与社区讨论什么是确定 kafka 集群是否启动并处于活动状态的最佳实践,但目前没有获得此信息的好方法,因为 kafka 架构是分布式系统,您可能拥有大型集群,当一个或多个代理关闭时,您的集群仍然可以提供高可用性服务,而不影响数据的完整性。此外,您可能在某个主题上遇到问题,而在其他主题上它可能工作正常。

    我读到的一个建议可能会给您最确定的方法是为您的应用主题生成“虚拟”消息,并在消费时“跳过”这些消息,以保证您的应用程序能够正常工作。我不太喜欢这种方法,因为它需要“向您的主要主题发送垃圾”

    其他方法就像你说的“生产/消费到/从测试/健康检查主题”,但它可能不能完全保证你的应用程序可以工作,这很像其他数据库方法中的 select from dummy ......如果对他们来说足够好......

    另外一个建议是使用AdminClient读取集群的metrics,如果提供metrics通常意味着集群是健康的,也不是很好的保证...

    【讨论】:

      【解决方案3】:

      我在评论中询问您使用的是哪种语言,也许您正在使用类似 spring 的东西,它有 HealthIndicator 来检查组件状态,但对于您的情况来说,情况会有所不同。

      首先,你应该知道Kafka默认应该是High Available,所以在构建集群时你应该遵循粗体 最佳实践行,你应该确保你有副本 机器。这是一个很好的假设,会让您对实现所有这些感到满意。

      但是,如果你想检查集群的健康状况,你可以使用管理进程,你可以使用AdminClient,借助一些实用程序;您可以检查您拥有的主题、组等列表。但这不是 100% 的保证,尽管它是一个很好的解决方法。

      您可以使用您提到的定期调度程序来执行此操作,并根据您获得的结果发送电子邮件。但这又不是理想的解决方案,如果您从一开始就正确构建 HA 集群基础架构,它应该会为您节省大量时间。

      【讨论】:

        猜你喜欢
        • 2021-02-04
        • 2015-12-04
        • 2020-04-27
        • 2014-12-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多