使用弹簧执行器(Prometheus)公开卡夫卡流指标

时间:2019-09-24 16:06:06

标签: apache-kafka-streams spring-boot-actuator

我正在使用Springboot 2运行Kafka Stream应用。

我想以host:8080/actuator/prometheus的prometheus格式提供我的kafka流指标。

我没有这个。我不确定我是否了解如何导出kafka流指标。 actuator可以获取这些JMX指标吗? 有没有办法获取这些指标并以Prometheus格式公开它们?

PS:不能同时使用Java jmx_prometheus_agent

有人有解决方案或示例吗?

谢谢

2 个答案:

答案 0 :(得分:0)

我没有完整的示例,但是指标很容易获得,并记录在Monitoring Kafka Streams上的Confluent文档中。

也许解雇执行器,并使用Spring Web中的@RestControllerKafkaStreams#metrics()来发布所需的内容。

答案 1 :(得分:0)

您可以使用 KafkaStreams.metrics()Prometheus 库将所有​​可用的 Kafka-Streams 指标(与 micrometer-core 中的相同)生成到 spring-kafka 中。要将 Kafka-Streams 与 micrometer 集成,您可以使用 KafkaStreamsMicrometerListener bean:

@Bean 
KafkaStreamsMicrometerListener kafkaStreamsMicrometerListener(MeterRegistry meterRegistry) { 
    return new KafkaStreamsMicrometerListener(meterRegistry); 
}

其中 MeterRegistry 来自 micrometer-core 依赖项。

如果您使用 StreamsBuilderFactoryBean 中的 spring-kafka 创建 Kafka Streams,则需要向其中添加侦听器:

streamsBuilderFactoryBean.addListener(kafkaStreamsMicrometerListener);

如果您直接创建 KafkaStreams 对象,那么您需要在每个 KafkaStreams 对象上调用

kafkaStreamsMicrometerListener.streamsAdded(beanId, kafkaStreams);

其中 beanId 是每个 KafkaStreams 对象的任何唯一标识符。

因此,Kafka Streams 提供了多种有用的 Prometheus 指标,例如 kafka_consumer_coordinator_rebalance_latency_avgkafka_stream_thread_task_closed_rate 等。KafkaStreamsMicrometerListener 在幕后使用 KafkaStreamsMetrics

如果您需要使用包含这些指标的 Grafana Prometheus 图,您需要将它们添加为 Gauge metric type