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

gno*_*nos 7 spring-boot-actuator apache-kafka-streams

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

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

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

PS:也没有与 java jmx_prometheus_agent 一起工作

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

谢谢

Vas*_*kyi 5

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

@Bean 
KafkaStreamsMicrometerListener kafkaStreamsMicrometerListener(MeterRegistry meterRegistry) { 
    return new KafkaStreamsMicrometerListener(meterRegistry); 
}
Run Code Online (Sandbox Code Playgroud)

哪里MeterRegistry来自micrometer-core依赖。

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

streamsBuilderFactoryBean.addListener(kafkaStreamsMicrometerListener);
Run Code Online (Sandbox Code Playgroud)

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

kafkaStreamsMicrometerListener.streamsAdded(beanId, kafkaStreams);
Run Code Online (Sandbox Code Playgroud)

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

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

如果您需要具有这些指标的 Grafana Prometheus 图,则需要将它们添加为Gauge metric type


小智 0

我没有完整的示例,但指标可以很好地访问并记录在有关监控 Kafka Streams的 Confluence 文档中。

也许可以忽略执行器并使用@RestControllerSpring Web 来KafkaStreams#metrics()发布您所需要的内容。