代码之家  ›  专栏  ›  技术社区  ›  Thiru

监控卡夫卡主题的消费者数量

  •  2
  • Thiru  · 技术社区  · 8 年前

    我们使用普罗米修斯和格拉法纳来监控我们的卡夫卡集群。

    在我们的应用程序中,我们使用Kafka流,并且有可能由于异常而停止Kafka流。我们正在记录事件 setUnCaughtExceptionHandler 但是,当流停止时,我们也需要某种警报。

    我们目前拥有的是,jmx_导出器作为代理运行,通过端点公开kafka度量,prometheus从端点获取度量。

    我们看不到任何一种指标能够给出每个主题的活跃消费者数量。我们错过什么了吗?有关如何获取活动用户数并在用户停止时发送警报的任何建议。

    1 回复  |  直到 7 年前
        1
  •  2
  •   Thiru    7 年前

    我们有类似的需求,并在grafana中添加了每个分区的kafka使用者延迟,如果延迟超过了指定的阈值,则还添加了警报(每个主题的阈值应不同,取决于负载,例如,对于某些主题,它可能是10,对于高负载-100000)。因此,如果您有超过1000条未处理的消息,您将收到警报。

    您可以为每个kafka流添加状态侦听器,如果流处于错误状态,则记录错误或发送电子邮件:

    kafkaStream.setStateListener((newState, oldState) -> {
        log.info("Kafka stream state changed [{}] >>>>> [{}]", oldState, newState);
        if (newState == KafkaStreams.State.ERROR || newState == KafkaStreams.State.PENDING_SHUTDOWN) {
            log.error("Kafka Stream is in [{}] state. Application should be restarted", newState);
        }
    });
    

    还可以添加健康检查指示器(例如,通过REST端点或通过 spring-boot HealthIndicator )它提供流是否正在运行的信息:

    KafkaStreams.State streamState = kafkaStream.state(); state.isRunning();

    我也没有发现任何Kafka流度量可以提供关于活动用户或可用连接分区的信息,但是对于我来说,如果Kafka流提供这些数据(并希望在将来的版本中可以使用)会更好。

    推荐文章