我正在使用Springboot 2运行Kafka Stream应用。
我想以host:8080/actuator/prometheus
的prometheus格式提供我的kafka流指标。
我没有这个。我不确定我是否了解如何导出kafka流指标。
actuator
可以获取这些JMX指标吗?
有没有办法获取这些指标并以Prometheus格式公开它们?
PS:不能同时使用Java jmx_prometheus_agent
有人有解决方案或示例吗?
谢谢
答案 0 :(得分:0)
我没有完整的示例,但是指标很容易获得,并记录在Monitoring Kafka Streams上的Confluent文档中。
也许解雇执行器,并使用Spring Web中的@RestController
和KafkaStreams#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_avg
、kafka_stream_thread_task_closed_rate
等。KafkaStreamsMicrometerListener
在幕后使用 KafkaStreamsMetrics。
如果您需要使用包含这些指标的 Grafana Prometheus 图,您需要将它们添加为 Gauge metric type。