Micrometer StackdriverMeterRegistry 仅向 GCP Monitoring 发布自定义指标,而不是自动检测指标?

Micrometer StackdriverMeterRegistry only publishes custom metrics to GCP Monitoring, not automatic instrumentation metrics?

我有这个例子https://quarkus.io/guides/micrometer(micrometer quickstart 目录)运行,它同时使用了 Quarkus 和 Micrometer。该示例使用 Prometheus 作为 MeterRegistry,但我将其更改为使用 StackdriverMeterRegistry,希望 Prometheus 中显示的相同自动检测将显示在 Google 云监控中。

但是,我只看到我制作的自定义指标出现在 Google 云监控中,而不是 micrometer 提供的自动检测。

我不确定我是否应该认为这只是 Micrometer StackdriverMeterRegistry 库本身的问题,或者我做错了什么。任何指导表示赞赏。

代码更改:

        // Update the constructor to create the gauge
    ExampleResource(MeterRegistry registry) {
        /* Code for micrometer */
        StackdriverConfig stackdriverConfig = new StackdriverConfig() {
            @Override
            public String projectId() {
                return "projectId";
            }

            @Override
            public String get(String key) {
                return null;
            }
        };
        this.registry = StackdriverMeterRegistry.builder(stackdriverConfig).build();
        registry.config().commonTags("application", "projectId");
        registry.gaugeCollectionSize("example.list.size", Tags.empty(), list);
    }

添加到 pom.xml

        <dependency>
            <groupId>io.micrometer</groupId>
            <artifactId>micrometer-registry-stackdriver</artifactId>
        </dependency>

在与 Micrometer 团队进行修补并直接交谈后,我发现了这个问题。文档有点混乱,但我错误地导入了 StackDriver 扩展,并且用于 quarkus 项目的默认注册表获得了所有自动检测,但没有 StackDriver 检测。所以这个默认注册表需要更改为 StackDriver 注册表。

我已经使用 Micrometer Quarkus 文档页面上的基本示例上传了一个结合使用 Quarkus StackDriver 和 Micrometer 的基本示例。

https://github.com/jayleenli/quarkus-micrometer-stackdriver-quickstart

变化:

添加到pom.xml


    <dependency>
      <groupId>io.quarkus</groupId>
      <artifactId>quarkus-micrometer</artifactId>
    </dependency>
    <dependency>
      <groupId>io.quarkiverse.micrometer.registry</groupId>
      <artifactId>quarkus-micrometer-registry-stackdriver</artifactId>
      <version>2.2.2</version>
    </dependency>
    <dependency>
      <groupId>io.micrometer</groupId>
      <artifactId>micrometer-core</artifactId>
      <version>1.7.3</version>
    </dependency>

然后添加一些 Quarkus 属性,我使用 application.properties 但还有其他方法可以做到这一点。

application.properties

quarkus.micrometer.export.stackdriver.enabled=true
quarkus.micrometer.export.stackdriver.default-registry=true
quarkus.micrometer.export.stackdriver.project-id=fake-id
quarkus.micrometer.export.stackdriver.publish=true
quarkus.micrometer.export.stackdriver.resource-type=global
quarkus.micrometer.export.stackdriver.step=1m

主要class

@Path("/")
public class ExampleResource {

    @ConfigProperty(name = "quarkus.micrometer.export.stackdriver.enabled")
    boolean enabled;
    @ConfigProperty(name = "quarkus.micrometer.export.stackdriver.default-registry")
    boolean export;
    @ConfigProperty(name="quarkus.micrometer.export.stackdriver.project-id")
    String projectId;
    @ConfigProperty(name="quarkus.micrometer.export.stackdriver.publish")
    boolean publish;
    @ConfigProperty(name="quarkus.micrometer.export.stackdriver.resource-type")
    String resourceType;
    @ConfigProperty(name="quarkus.micrometer.export.stackdriver.step")
    String step;