能否通过Micrometer暴露Apache Pulsar指标?含客户端及Spring Boot场景
Pulsar客户端指标通过Micrometer+Prometheus暴露方案
一、客户端指标能否通过Micrometer结合Prometheus暴露?
完全可以。Apache Pulsar客户端本身提供了MetricsProvider扩展接口,官方也实现了基于Micrometer的适配(MicrometerMetricsProvider),可以将生产者、消费者的核心指标(包括你需要的批量消费耗时、失败次数等)接入Micrometer,再通过Prometheus注册表暴露出去。
Pulsar客户端内置的相关核心指标包括:
- 批量消费耗时:
pulsar_consumer_batch_processing_time_seconds(分布型指标,记录批量消息处理的耗时分布) - 消费失败次数:
pulsar_consumer_message_failures_total(计数器,统计消费失败的消息总数) - 此外还包含生产者发送延迟、消息批量大小、消费堆积量等其他实用指标。
二、未使用Spring for Apache Pulsar的Spring Boot场景下的实现步骤
不需要依赖Spring for Apache Pulsar框架,纯Spring Boot环境下可手动完成集成,具体步骤如下:
1. 引入必要依赖
在pom.xml(Maven)中添加以下依赖(Gradle可对应转换):
<!-- Pulsar客户端核心依赖 --> <dependency> <groupId>org.apache.pulsar</groupId> <artifactId>pulsar-client</artifactId> <version>你的Pulsar版本,如2.11.0</version> </dependency> <!-- Pulsar与Micrometer的适配依赖 --> <dependency> <groupId>org.apache.pulsar</groupId> <artifactId>pulsar-micrometer</artifactId> <version>你的Pulsar版本</version> </dependency> <!-- Micrometer核心及Prometheus注册表 --> <dependency> <groupId>io.micrometer</groupId> <artifactId>micrometer-core</artifactId> </dependency> <dependency> <groupId>io.micrometer</groupId> <artifactId>micrometer-registry-prometheus</artifactId> </dependency> <!-- Spring Boot Actuator(用于暴露Prometheus端点) --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>
2. 配置Actuator暴露Prometheus端点
在application.yml中开启Actuator的metrics和prometheus端点:
management: endpoints: web: exposure: include: metrics,prometheus metrics: export: prometheus: enabled: true
3. 绑定Pulsar客户端与Micrometer指标提供者
在Spring Boot配置类中,创建PulsarClient实例时,指定MicrometerMetricsProvider并注入Spring自动配置的MeterRegistry:
import org.apache.pulsar.client.api.PulsarClient; import org.apache.pulsar.client.api.PulsarClientException; import org.apache.pulsar.micrometer.MicrometerMetricsProvider; import io.micrometer.core.instrument.MeterRegistry; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class PulsarConfig { @Bean public PulsarClient pulsarClient(MeterRegistry meterRegistry) throws PulsarClientException { return PulsarClient.builder() .serviceUrl("pulsar://你的Pulsar Broker地址:6650") // 绑定Micrometer指标收集器 .metricsProvider(new MicrometerMetricsProvider(meterRegistry)) .build(); } }
4. 验证指标暴露
启动Spring Boot应用后,访问http://localhost:8080/actuator/prometheus,即可看到Pulsar客户端的所有指标。比如:
- 批量消费耗时会以
pulsar_consumer_batch_processing_time_seconds_bucket、pulsar_consumer_batch_processing_time_seconds_sum等形式呈现 - 消费失败次数对应
pulsar_consumer_message_failures_total计数器
注意事项
- 确保Pulsar客户端版本与
pulsar-micrometer版本一致,避免兼容性问题 - 可通过Micrometer的标签功能,为不同生产者/消费者添加自定义标签(如topic名称、客户端ID),方便后续指标聚合分析
- 若需业务层面的自定义指标(如特定业务逻辑的消费耗时),可直接使用Micrometer的
Timer、Counter等API在消费逻辑中埋点,与Pulsar内置指标一同暴露
内容的提问来源于stack exchange,提问作者Scoby
相关产品推荐
相关产品推荐

