我的 Quarkus 应用程序正在使用 Micrometer 和 Smallrye 容错扩展,并且我很欣赏使用 @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
最佳答案
嗯。我认为,您应该能够使用 MeterFilter 来完成此操作,但要正确处理字符串(以拆分包/类名/方法名)
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;
}
};
}
关于Quarkus 配置 SmallRye 容错指标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65063496/