目前,我有 2 个定制弹簧制品 -
metrics-util
和 web-utils
。 metrics-util 包含与测量指标相关的所有功能,例如用于计算所有其余控制器的指标的网络过滤器。 Web-utils 使用metrics-util 中的一些函数来测量函数内的指标。
我的主 spring 程序调用其中的 web-utils 函数。我使用相同的名称和不同的标签。我面临的问题是我可以在
/actuator/metrics/{metric_name}
看到指标和不同的标签,但只有指标名称的第一个实例显示在 Prometheus 抓取的端点处。
千分尺版本:
implementation 'io.micrometer:micrometer-core:1.12.3'
implementation 'io.micrometer:micrometer-registry-prometheus:1.12.3'
我的注册表配置:
@Configuration
@ComponentScan(basePackages = ["co.hyperface.ark.metricsutil.*"])
class BaseMetricsConfig {
@Bean
MeterRegistry meterRegistry() {
return new PrometheusMeterRegistry(PrometheusConfig.DEFAULT)
}
}
我如何在我的程序中注入:
class MetricsUtil {
private MeterRegistry meterRegistry
@Autowired
MetricsUtil (MeterRegistry meterRegistry) {
this.meterRegistry = meterRegistry
}
}
预期结果:
对于任何端点,web-filter 首先被激活,因此它的
callcount{call_type='rest_controller'}
必须增加,然后因为我在该控制器内调用 web-utils 函数,所以调用 callcount{call_type='external'}
必须增加。
但在抓取端点我只得到
callcount{call_type='rest_controller'}
。但我可以在 /actuator/metrics/callcount
看到他们两个
预先感谢。
metrics-util 包含与测量指标相关的所有功能,例如用于计算所有其余控制器指标的网络过滤器。 Web-utils 使用metrics-util 中的一些函数来测量函数内的指标。
您知道如果添加 Spring Boot Actuator,您将免费获得它吗?
我使用相同的名称和不同的标签。我面临的问题是我可以在 /actuator/metrics/{metric_name} 中看到指标和不同的标签,但只有指标名称的第一个实例显示在 Prometheus 抓取的端点处。
Prometheus 服务器不鼓励这样做,而 Prometheus 客户端则不可能这样做。请不要这样做。如果标签不同,则它是不同的指标。如果相同,标签也应该相同。如果您没有值或不知道值,您可以随时使用
null
、none
、na
、unknown
等
解决方案:您可以删除“metrics-util”和“web-utils”,添加 Spring Boot 执行器来完成这一切(请参阅
http_server_requests
metric)。