了解 Spring 引导执行器 `http.server.requests` 指标 MAX 属性
Understanding Spring Boot actuator `http.server.requests` metrics MAX attribute
谁能解释一下下面回复中的 MAX 统计数据指的是什么。我没有在任何地方看到它的记录。
localhost:8081/actuator/metrics/http.server.requests?tag=uri:/myControllerMethod
回复:
{
"name":"http.server.requests",
"description":null,
"baseUnit":"milliseconds",
"measurements":[
{
"statistic":"COUNT",
"value":13
},
{
"statistic":"TOTAL_TIME",
"value":57.430899
},
{
"statistic":"MAX",
"value":0
}
],
"availableTags":[
{
"tag":"exception",
"values":[
"None"
]
},
{
"tag":"method",
"values":[
"GET"
]
},
{
"tag":"outcome",
"values":[
"SUCCESS"
]
},
{
"tag":"status",
"values":[
"200"
]
},
{
"tag":"commonTag",
"values":[
"somePrefix"
]
}
]
}
您可以使用根 /actuator/metrics/http.server.requests
调用的响应中定义的 ?tag=url:{endpoint_tag}
查看各个指标。 measurements
值的详细信息是;
- COUNT: 每秒呼叫速率。
- TOTAL_TIME:记录的次数总和。以监控系统基本时间单位上报
- MAX: The maximum amount recorded. When this represents a time, it is reported in the monitoring system's base unit of time.
您看到的差异是由于计时器的存在。这意味着在一段时间后,当前定义的任何标记指标的 MAX
值都可以重置回 0
。您可以向 /myControllerMethod
添加一些新调用,然后立即调用 /actuator/metrics/http.server.requests
以查看给定标签的非零 MAX
值吗?
这是因为为每个较小的周期获取 MAX
指标背后的想法。当您看到这些指标时,您将能够在很长一段时间内获得 MAX
个值的数组,而不是单个值。
您可以在 Micrometer 源代码中看到这一点。有一个 rotate()
方法专注于重置 MAX
值以创建上述行为。
您可以看到每次 poll()
调用都会调用它,每隔一段时间就会触发一次以收集指标。
- MAX代表什么
MAX 表示执行端点所花费的最长时间。
针对 /user/asset/getAllAssets
的分析
COUNT TOTAL_TIME MAX
5 115 17
6 122 17 (Execution Time = 122 - 115 = 17)
7 131 17 (Execution Time = 131 - 122 = 17)
8 187 56 (Execution Time = 187 - 131 = 56)
9 204 56 From Now MAX will be 56 (Execution Time = 204 - 187 = 17)
- 如果我们对特定端点的请求数量较少(或 1 个请求),MAX 是否会为 0?
特定端点的请求数量不影响 MAX (请参阅来自 Spring Boot Admin 的图片)
- 当MAX为0时
有 设置值为0。当端点未被调用或执行一段时间时,Timer将MAX设置为0。这里大约计时器值为 2 分钟(120 秒)
DistributionStatisticConfig有.expiry(Duration.ofMinutes(2)).
如果在到期时间或旋转时间之间没有请求,它将一些测量值设置为 0。
- 我是如何确定计时器值的?
为此,我采集了 6 个样本(对同一个端点执行了 6 次)。为此,我确定了调用端点的时间与 MAX 设置回零的时间之间的 时间差
更新
Document 已更新。
NOTE:
Max for basic DistributionSummary
implementations such as CumulativeDistributionSummary
, StepDistributionSummary
is a time
window max (TimeWindowMax
).
It means that its value is the maximum value during a time window.
If the time window ends, it'll be reset to 0 and a new time window starts again.
Time window size will be the step size of the meter registry unless expiry in DistributionStatisticConfig
is set to other value
explicitly.
谁能解释一下下面回复中的 MAX 统计数据指的是什么。我没有在任何地方看到它的记录。
localhost:8081/actuator/metrics/http.server.requests?tag=uri:/myControllerMethod
回复:
{
"name":"http.server.requests",
"description":null,
"baseUnit":"milliseconds",
"measurements":[
{
"statistic":"COUNT",
"value":13
},
{
"statistic":"TOTAL_TIME",
"value":57.430899
},
{
"statistic":"MAX",
"value":0
}
],
"availableTags":[
{
"tag":"exception",
"values":[
"None"
]
},
{
"tag":"method",
"values":[
"GET"
]
},
{
"tag":"outcome",
"values":[
"SUCCESS"
]
},
{
"tag":"status",
"values":[
"200"
]
},
{
"tag":"commonTag",
"values":[
"somePrefix"
]
}
]
}
您可以使用根 /actuator/metrics/http.server.requests
调用的响应中定义的 ?tag=url:{endpoint_tag}
查看各个指标。 measurements
值的详细信息是;
- COUNT: 每秒呼叫速率。
- TOTAL_TIME:记录的次数总和。以监控系统基本时间单位上报
- MAX: The maximum amount recorded. When this represents a time, it is reported in the monitoring system's base unit of time.
您看到的差异是由于计时器的存在。这意味着在一段时间后,当前定义的任何标记指标的 MAX
值都可以重置回 0
。您可以向 /myControllerMethod
添加一些新调用,然后立即调用 /actuator/metrics/http.server.requests
以查看给定标签的非零 MAX
值吗?
这是因为为每个较小的周期获取 MAX
指标背后的想法。当您看到这些指标时,您将能够在很长一段时间内获得 MAX
个值的数组,而不是单个值。
您可以在 Micrometer 源代码中看到这一点。有一个 rotate()
方法专注于重置 MAX
值以创建上述行为。
您可以看到每次 poll()
调用都会调用它,每隔一段时间就会触发一次以收集指标。
- MAX代表什么
MAX 表示执行端点所花费的最长时间。
针对 /user/asset/getAllAssets
COUNT TOTAL_TIME MAX
5 115 17
6 122 17 (Execution Time = 122 - 115 = 17)
7 131 17 (Execution Time = 131 - 122 = 17)
8 187 56 (Execution Time = 187 - 131 = 56)
9 204 56 From Now MAX will be 56 (Execution Time = 204 - 187 = 17)
- 如果我们对特定端点的请求数量较少(或 1 个请求),MAX 是否会为 0?
特定端点的请求数量不影响 MAX (请参阅来自 Spring Boot Admin 的图片)
- 当MAX为0时
有
DistributionStatisticConfig有.expiry(Duration.ofMinutes(2)).
如果在到期时间或旋转时间之间没有请求,它将一些测量值设置为 0。
- 我是如何确定计时器值的?
为此,我采集了 6 个样本(对同一个端点执行了 6 次)。为此,我确定了调用端点的时间与 MAX 设置回零的时间之间的 时间差
更新
Document 已更新。
NOTE:
Max for basic
DistributionSummary
implementations such asCumulativeDistributionSummary
,StepDistributionSummary
is a time window max (TimeWindowMax
).It means that its value is the maximum value during a time window.
If the time window ends, it'll be reset to 0 and a new time window starts again.
Time window size will be the step size of the meter registry unless expiry in
DistributionStatisticConfig
is set to other value explicitly.