千分尺计时器/直方图控制桶

问题描述 投票:0回答:0

我们在 non sprint-boot 应用程序和 Prometheus 中的目标监控系统中使用 Micrometer。我们创建了一个用于校准响应时间的过滤器。

定时器的示例代码在 servlet 过滤器中如下所示:

Timer.Sample sample = Timer.start(prometheusRegistry);
    HttpServletRequest servletRequest = (HttpServletRequest) request;
    HttpServletResponse servletResponse = (HttpServletResponse) response;
    String host = servletRequest.getServerName();
    String path = servletRequest.getRequestURI();
    String method = servletRequest.getMethod();
    try {
        chain.doFilter(request, response);
    } finally {
        sample.stop(Timer.builder(METRIC_NAME)
                .description(METRIC_HELP)
                .tags(HOST, host)
                .tags(PATH, path)
                .tags(METHOD, method)
                .tags(STATUS, Integer.toString(servletResponse.getStatus()))
                .publishPercentileHistogram(true) //create histogram, not summary
                .minimumExpectedValue(Duration.ofMillis(10))
                .maximumExpectedValue(Duration.ofSeconds(60))
                .register(prometheusRegistry);
    }

到目前为止,它正在为我添加的最小和最大期望值生成大约 55 个桶。我主要使用publishPercentileHistogram(true),以便可以跨维度(例如pod或实例)聚合存储桶。有没有办法控制桶的数量,但仍然可以跨维度聚合?

仅提及 serviceLevelObjectives() 而不提及publishPercentileHistogram() 是否允许在 prometheus 端进行聚合?

prometheus servlet-filters micrometer
© www.soinside.com 2019 - 2024. All rights reserved.