使用弹簧执行器(普罗米修斯)公开卡夫卡流指标



我正在运行一个带有Springboot 2的Kafka Stream应用程序。

我想在host:8080/actuator/prometheus上以普罗米修斯格式提供我的 kafka 流指标

我无法拥有这个。我不确定我是否了解 kafka 流指标是如何导出的。actuator可以获得这些JMX指标吗? 有没有办法获取这些指标并以普罗米修斯格式公开它们?

PS:也没有使用java jmx_prometheus_agent

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

谢谢

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

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

其中MeterRegistry来自micrometer-core依赖关系。

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

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。

如果您需要具有包含这些指标的格拉法纳普罗米修斯图形,则需要将它们添加为仪表指标类型。

我没有一个完整的示例,但指标很容易访问并记录在关于监控 Kafka 流的 Confluent 文档中。

也许关闭执行器并使用Spring Web中的@RestController以及KafkaStreams#metrics()来发布您需要的内容。

最新更新