【问题标题】:How to add a label to a target in Prometheus using Spring boot?如何使用 Spring Boot 为 Prometheus 中的目标添加标签?
【发布时间】:2022-12-20 00:09:56
【问题描述】:

我正在尝试向 Prometheus 中的目标添加标签,在 SpringBoot 中修改文件。

我尝试通过下面的方式在Springboot中添加一个Prometheus标签(在SpringBoot中修改application.yml),但是没有用。

management:
  metrics:
    tags:
      application: ${spring.application.name}
      threadLimitInPrometheus: 40 # This tag didn't work

你能告诉我在 Spring Boot 中添加 Prometheus 标签的方法吗?

我知道有一种方法可以将新标签添加到目标修改prometheus.yml下面的方式

- target_label: "foo"
  replacement: "bar"

但是,我想在 SpringBoot 中找到方法,而不是 Prometheus。

谢谢你。

【问题讨论】:

    标签: spring spring-boot prometheus spring-webflux micrometer


    【解决方案1】:

    有几种定义标签的方法。

    公共标签可以定义在application.yml

    management:
      metrics:
        tags:
          key2: value2
    

    如果它不起作用,请确保应用配置。您可以在本地运行您的服务并使用 http://localhost:<port>/actuator/prometheus 检查暴露的指标。

    作为替代方案,您可以使用MeterRegistryCustomizer

    @Configuration
    public class MeterRegistryConfiguration {
    
        @Bean
        public MeterRegistryCustomizer<MeterRegistry> metricsCommonTags() {
            return (registry) -> registry.config().commonTags("key2", "value2");
        }
    }
    

    如果你需要仅为特定指标定义标签, 使用MeterFilter

    @Bean
    public MeterFilter customMeterFilter() {
        return new MeterFilter() {
            @Override
            public Meter.Id map(Meter.Id id) {
                if (id.getName().contains("name")) {
                    return id.withTag(Tag.of("key3", "value3"));
                }
                return id;
            }
        };
    }
    

    【讨论】:

    • 嗨亚历克斯,谢谢你的回答。第一个选项恰到好处。看来我之前测试错了。我可以再问一个问题吗?是否可以使用 Prometheus 标签进行 Prometheus 查询?例如,下面的查询是制作threadLimit标签后的结果。 jvm_gc_overhead_percent{application="my-server", instance="my-instance", job="my-server", threadLimit="40"}。我想找到一种方法来使用上面的 threadLimit 来进行这样的查询。 jvm_gc_overhead_percent &gt; threadLimit
    • @Astrid 通常使用标签来过滤指标。不确定它在 PromQL 中是否可行,但您可以尝试利用 Grafana 中可用的 label_values 函数并定义一个变量,如 label_values({application="my-server", instance="my-instance", job="my-server"}, threadLimit),然后在查询 jvm_gc_overhead_percent &gt; $threadLimit 中使用它。作为替代方案,您可以将 threadLimit 报告为自定义指标,然后像 jvm_gc_overhead_percent &gt; threadLimit 一样使用它
    猜你喜欢
    • 2019-08-09
    • 2018-09-24
    • 1970-01-01
    • 2021-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多