0

我的 Quarkus 应用程序正在使用 Micrometer 和 Smallrye Fault Tolarance 扩展,我很欣赏使用 @CircuitBreaker 注释自动添加指标的事实。然而,格式和标签有点难看,并且会使维护和操作仪表板以及监控变得很​​痛苦,因为它们似乎是基于包和类自动生成的。示例:重构或移动它们基本上会破坏 Prometheus 查询。

是否可以使用 Quarkus 进行配置?

这就是开箱即用的指标

ft_some_really_long_package_name_ClassName_methodName_circuitbreaker_halfOpen_total{} 0

我想要的是这样的

circuitbreaker_halfOpen_total{package="com.somepackage", class="SomeClass", method="SomeMethod"} 0

4

1 回答 1

0

hmmm. You should be able to do this with a MeterFilter, I think, but getting the string munging right (to split package/classname/methodName)

https://quarkus.io/guides/micrometer#using-meterfilter-to-configure-metrics

@Produces
@Singleton
public MeterFilter renameFaultToleranceMetrics() {
    return new MeterFilter() {
        @Override
        public Meter.Id map(Meter.Id id) {
            if (id.getName().endsWith("circuitbreaker_halfOpen_total")) {
                // Do things here to make a new list of tags based on string munging
              List<Tag> tags = ...
              return id.withName("circuitbreaker_halfOpen_total").replaceTags(tags);
            }
            return id;
        }
    };
}

An example is here: https://github.com/quarkusio/quarkus/blob/main/integration-tests/micrometer-mp-metrics/src/main/java/io/quarkus/it/micrometer/mpmetrics/RenameMeterFilterProducer.java

于 2021-06-14T17:20:27.157 回答