【问题标题】:Micrometer StackdriverMeterRegistry only publishes custom metrics to GCP Monitoring, not automatic instrumentation metrics?Micrometer StackdriverMeterRegistry 只向 GCP Monitoring 发布自定义指标,而不是自动检测指标?
【发布时间】:2021-11-09 04:24:32
【问题描述】:

我有这个例子https://quarkus.io/guides/micrometer(千分尺快速入门目录)正在运行,它同时使用了 Quarkus 和千分尺。该示例使用 Prometheus 作为 MeterRegistry,但我将其更改为使用 StackdriverMeterRegistry,希望显示在 Prometheus 中的相同自动检测能够显示在 Google Cloud Monitoring 中。

但是,我只看到我制作的自定义指标出现在 Google Cloud Monitoring 中,而不是 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>

【问题讨论】:

  • 使用 stackdriver Meter 注册表通过 micrometer 收集的所有指标都将显示为自定义指标(如本节所示:cloud.google.com/monitoring/custom-metrics)。对于 micrometer 收集的所有指标,发布/推送机制都是相同的(无论计量表是如何创建的)。
  • 正如 Micrometer 指南中提到的,我也会尝试使用 quarkiverse 扩展来支持堆栈驱动程序:io.quarkiverse.micrometer.registry:quarkus-micrometer-registry-stackdriver .. 有一个 1.x如果您使用的是 Quarkus 1.x,则为分支,如果您使用的是 Quarkus 2.x,则为 2.x 分支。发布在 Maven 中心

标签: quarkus google-cloud-stackdriver micrometer google-cloud-monitoring


【解决方案1】:

在修补并直接与 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

在主类中

@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;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-13
    • 2021-07-19
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多