我正在运行一个带有Springboot 2的Kafka Stream应用程序。
我想在host:8080/actuator/prometheus
上以普罗米修斯格式提供我的 kafka 流指标
我无法拥有这个。我不确定我是否了解 kafka 流指标是如何导出的。actuator
可以获得这些JMX指标吗? 有没有办法获取这些指标并以普罗米修斯格式公开它们?
PS:也没有使用java jmx_prometheus_agent
有人有解决方案或示例吗?
谢谢
您可以使用micrometer-core
和spring-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_avg
、kafka_stream_thread_task_closed_rate
等。 引擎盖下的KafkaStreamsMicrometerListener
使用KafkaStreamsMetrics。
如果您需要具有包含这些指标的格拉法纳普罗米修斯图形,则需要将它们添加为仪表指标类型。
我没有一个完整的示例,但指标很容易访问并记录在关于监控 Kafka 流的 Confluent 文档中。
也许关闭执行器并使用Spring Web中的@RestController
以及KafkaStreams#metrics()
来发布您需要的内容。