You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否通过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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 20:25:15