Micrometer StackdriverMeterRegistry仅上报自定义指标不上报自动埋点指标
问题根因
- 你手动初始化了独立的StackdriverMeterRegistry实例,Quarkus框架自动生成的JVM、HTTP、数据源等通用埋点指标,默认只会绑定到Quarkus生命周期托管的MeterRegistry实例上。你自行创建的实例没有接入Quarkus的MeterBinder自动绑定体系,因此只有你手动给该实例添加的自定义指标能成功上报。
- 你直接引入了原生micrometer-registry-stackdriver依赖,缺少Quarkus针对该Registry的适配逻辑,也是自动埋点无法同步上报的原因之一。
修复步骤
1. 替换依赖
将pom.xml中手动添加的micrometer-registry-stackdriver依赖,替换为Quarkus官方适配的Stackdriver Registry扩展:
<dependency> <groupId>io.quarkus</groupId> <artifactId>quarkus-micrometer-registry-stackdriver</artifactId> </dependency>
2. 删除手动实例化逻辑
移除你代码中自行创建StackdriverConfig、StackdriverMeterRegistry的相关代码,Quarkus会自动完成Registry的初始化、配置加载、生命周期管理,所有官方自动埋点会默认绑定到该托管实例上。
3. 新增配置项
在application.properties配置文件中添加Stackdriver上报相关配置:
# 替换为你的GCP项目ID quarkus.micrometer.export.stackdriver.project-id=your_project_id # 开启Stackdriver指标上报 quarkus.micrometer.export.stackdriver.enabled=true # 配置全局通用标签 quarkus.micrometer.export.stackdriver.common-tags.application=your_application_name
注意:如果服务运行在GCP外部环境,需要额外配置
GOOGLE_APPLICATION_CREDENTIALS环境变量指向服务账号密钥文件,确保服务账号拥有monitoring.metricDescriptors.create、monitoring.timeSeries.create权限。
4. 调整自定义指标逻辑
保留自定义指标的上报逻辑,直接注入Quarkus托管的MeterRegistry即可:
ExampleResource(MeterRegistry registry) { this.registry = registry; registry.gaugeCollectionSize("example.list.size", Tags.empty(), list); }
验证方式
启动项目后触发几次HTTP请求、接口调用等操作,等待1~2分钟(Google Cloud Monitoring指标上报有延迟),即可在GCP控制台Monitoring模块的指标资源管理器中,搜索到custom.googleapis.com开头的自动埋点指标(HTTP请求耗时、JVM内存、GC次数等)和你的自定义指标。
内容的提问来源于stack exchange,提问作者Jayleen
相关产品推荐
相关产品推荐

