spring-boot - 如何在 Spring-boot 2 中使用 Actuator 修改 prometheus 公开的指标名称

标签 spring-boot prometheus spring-boot-actuator

我在 springboot 2 中使用 Actuator 来公开/actuator/prometheus 端点,普罗米修斯实例将从中提取指标。

Everithing 完美无缺,除非我需要调整指标名称。我的意思不是对 Prometheus 有意义的后缀 (_count, _total, _bucket, ...) 而是类似于:

http_server_requests_seconds_count -> http_server_requests_count http_server_requests_seconds_max -> latency_seconds_max http_server_requests_seconds_sum -> latency_seconds_sum http_server_requests_seconds_bucket -> latency_seconds_bucket



有没有更好的方法来解决这个问题?

附言

我知道我可以使用
management.metrics.web.server.requests-metric-name=different

要得到
different_seconds_count
different_seconds_max 
different_seconds_sum 
different_seconds_bucket

但很难:

1º 删除 _seconds 后缀

2º 仅对其中一个使用不同的基本名称

我猜我可以写一个替代方案 PrometheusRenameFilter但不确定如何将其配置为默认注册表。

最佳答案

您可以覆盖此方法并更新命名约定:

@Configuration
public class MetricsConfiga {
@Bean
MeterRegistryCustomizer<MeterRegistry> configurer(String applicationName) {
    return (registry) -> registry.config().namingConvention(new NamingConvention() {
        @Override
        public String name(String name, Meter.Type type, String baseUnit) {
            return "PREFIX" + Arrays.stream(name1.split("\\."))
                .filter(Objects::nonNull)
                .collect(Collectors.joining("_"));
        }
       });
    }
}

关于spring-boot - 如何在 Spring-boot 2 中使用 Actuator 修改 prometheus 公开的指标名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49614147/

相关文章:

java - 执行器/指标端点不包括http.server.requests

java - 将 Spring Boot Actuator/health 和/info 合二为一

validation - spring boot 验证器成功但没有异常抛出

java - 找不到类 org.springframework.data.mongodb.core.query.GeoCommand 的编解码器

monitoring - 来自 WIndows 的 Prometheus 的准确 CPU 使用率

linux - cAdvisor 不显示所有容器的正常运行时间(Prometheus+cAdvisor+Grafana)

java - Spring boot Tomcat场景下如何清除线程上下文?

spring-boot - 使用 Spring Boot Actuator 计算每秒请求数

java - Spring Boot、JPA 和 MySQL 8 方言错误

javascript - `model.addAttribute` 从 Controller 发送到 JSP 的数据类型是什么