千分尺公制更新值慢?

Posted

技术标签:

【中文标题】千分尺公制更新值慢?【英文标题】:Micrometer gauge metric update value slowly? 【发布时间】:2021-01-27 14:17:37 【问题描述】:

我正在使用千分尺度量来监控 Vertx 服务中的 Http_max_response_time。 (使用 Prometheus 配置指标)。

在测试时,我在 13:15:16 发送了一个超时 3 秒的请求,并且仪表指标返回大约 Http_max_response_time (3s) 的正确值。但是在该请求之后,没有任何超时 3 秒的请求发送到服务器,仪表度量仍然返回 Http_max_response_time = 3 秒,直到 13:17:51,然后将新值 Http_max_response_time 更新为 less超过 3s。我认为它需要更频繁地更新。

我的问题在这里:

    仪表指标更新新值多长时间或保持当前值多长时间? 计量指标 Http_max_response_time 执行哪个逻辑?它只是更新一个全局值并在有观察时返回它吗?

如果我的问题不清楚,请发表评论,我会详细说明。 提前致谢,

【问题讨论】:

你能详细说明你的设置是什么以及谁提供了这个“Http_max_response_time”仪表吗?在 vertx-micrometer-metrics 模块中,没有这样的量规,见vertx.io/docs/vertx-micrometer-metrics/java 除了我上面的问题,我可以回答这个问题:正如您所怀疑的,以微米为单位的测量指标只有在观察时才会提供价值。与计数器或摘要不同,它们无法跟踪两次观察之间发生的任何事情。在 vertx-micrometer-metrics 中,我们使用 Timer 度量来表示响应时间,这是一种特殊的 Summary。 谢谢@Joel,你是对的,vertx-micrometer-metrics 使用 Timer 指标来衡量响应时间。在我认为这是显示在 localhost:8080/metrics 上的信息之前,它是 Gauge 指标。 # TYPE vertx_http_server_responseTime_seconds_max 仪表。我更改了 DistributionStatisticConfig,这对我有用。 【参考方案1】:

更新

Vertx-micrometer-metrics 使用 Timer 指标来衡量响应时间,并使用 TimeWindowMax 来更新最大值。

Max 对于基本的 Timer 实现,例如 CumulativeTimer,StepTimer 是一个时间窗口最大值 (TimeWindowMax)。这意味着它的值是一个时间窗口内的最大值。如果没有记录时间窗长度的新值,则随着新时间窗的开始,最大值将重置为 0。时间窗口大小将是仪表注册表的步长,除非 DistributionStatisticConfig 中的到期明确设置为其他值。之所以使用时间窗口最大值,是为了在资源压力过大触发延迟并阻止发布指标后,在后续间隔中捕获最大延迟。

因此,我们可以根据需要将 DistributionStatisticConfig 中的默认到期配置更改为更小的值。

这是我将包含 responseTime 的指标的 TimeWindowMax 更改为 2 秒的代码:

registry.config().meterFilter(
            new MeterFilter() 
                @Override
                public DistributionStatisticConfig configure(Meter.Id id, DistributionStatisticConfig config) 
                    if(id.getName().contains("responseTime")) 
                        return DistributionStatisticConfig.builder()
                                .expiry(Duration.ofSeconds(5))
                                .build()
                                .merge(config);
                    
                    return config;
                
            );

它奏效了。

【讨论】:

以上是关于千分尺公制更新值慢?的主要内容,如果未能解决你的问题,请参考以下文章

android小部件更新期千分尺不起作用

如何更新以微米为单位的导出度量的标签值?

如何正确使用千分尺?

mapbox tileset 部分更新

Spring Boot 执行器保持状态

js常用工具函数大全