我可以向现有指标 http_server_requests_seconds 添加新的 dimension/tag 吗?

Can I add a new dimension/tag to the existing metric http_server_requests_seconds?

我有一个 Java Spring 引导应用程序正在使用 Prometheus 收集指标。这是一个 REST API,一切正常。

Spring,默认情况下,提供一些指标。例如,具有以下维度的指标 http_server_requests_seconds_count

http_server_requests_seconds_count{application="metrics-demo-app", exception="None", instance="host.docker.internal:8080", job="metrics-demo-app", method="GET", outcome="SUCCESS", status="200", uri="/actuator/prometheus"}

维度是指 key/value 对(application="metrics-demo-app", exception="None", 等。 .) 上面例子中的标签。

我可以向这些指标添加新维度(key/value 对)吗?我的想法是,当创建用户的调用失败时,向该指标中插入更多信息。

我知道我可以创建一个新的自定义指标,但我想知道是否有一些方法可以在现有指标中添加内容。

这可能吗?怎么做?

提前致谢:D

这是可以做到的,在文档中是如何做到的,在这里: https://docs.spring.io/spring-boot/docs/current/reference/html/actuator.html#actuator.metrics.supported.system

我的代码是这样结束的:

@Configuration
public class MetricsConfig implements WebMvcTagsProvider {

  private final WebMvcTagsProvider delegate = new DefaultWebMvcTagsProvider();

  @Override
  public Iterable<Tag> getTags(HttpServletRequest request, HttpServletResponse response, Object handler, Throwable exception) {
    final String channelId = ServiceContextHolder.getContext().getXItauChannelId();

    return Tags.of(this.delegate.getTags(request, response, handler, exception)).and("channelId", channelId);
  }

  @Override
  public Iterable<Tag> getLongRequestTags(HttpServletRequest request, Object handler) {
    return null;
  }
}