Pat*_*mil 8 java spring spring-boot spring-boot-actuator spring-boot-admin
我正在使用 Spring Boot Actuator 依赖项来获取应用程序的见解。为此,我使用了 Spring Boot Admin。客户端-服务器的配置工作正常。我必须测量将要执行的端点的计数、总时间和最大值。
uri:/user/asset/getAllAssets
TOTAL_TIME: 831ms
MAX: 0ms
uri:/user/getEmployee/{employeeId}
TOTAL_TIME: 98ms
MAX: 0ms
Run Code Online (Sandbox Code Playgroud)
为什么MAX(时间)是0而TOTAL_TIME:是Xms
当我执行泛化形式时
localhost:8889/actuator/metrics/http.server.requests我得到的MAX 为 3.00..
我还看到了生产就绪功能,但找不到任何有关 MAX 是如何计算或它代表什么的描述
注:随着请求数量的增加,COUNT、TOTAL_TIME 也会增加,但 MAX 有时会减少(具体参见请求 1、请求 2)
{
"name": "http.server.requests",
"description": null,
"baseUnit": "seconds",
"measurements": [
{
"statistic": "COUNT",
"value": 597
},
{
"statistic": "TOTAL_TIME",
"value": 144.9057076
},
{
"statistic": "MAX",
"value": 3.0002913
}
],
"availableTags": [
{
"tag": "exception",
"values": [
"None"
]
},
{
"tag": "method",
"values": [
"GET"
]
},
{
"tag": "uri",
"values": [
"/actuator/metrics/{requiredMetricName}",
"/**/favicon.ico",
"/actuator",
"/user/getEmployee/{employeeId}",
"/user/asset/getAllAssets",
"/actuator/health",
"/actuator/info",
"/actuator/env/{toMatch}",
"/actuator/metrics",
"/**"
]
},
{
"tag": "outcome",
"values": [
"CLIENT_ERROR",
"SUCCESS"
]
},
{
"tag": "status",
"values": [
"404",
"200"
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
更新
localhost:8889/actuator/metrics/http.server.requests?tag=uri:/user/getEmployee/2
响应404 (我在请求执行器之前已经执行了/user/getEmployee/2)
localhost:8889/actuator/metrics/http.server.requests?tag=uri:/user/getEmployee/{employeeId}
回复 400
localhost:8889/actuator/metrics/http.server.requests?tag=uri:/user/asset/getAllAssets
{
"name": "http.server.requests",
"description": null,
"baseUnit": "seconds",
"measurements": [
{
"statistic": "COUNT",
"value": 1
},
{
"statistic": "TOTAL_TIME",
"value": 0.8311609
},
{
"statistic": "MAX",
"value": 0
}
],
"availableTags": [
{
"tag": "exception",
"values": [
"None"
]
},
{
"tag": "method",
"values": [
"GET"
]
},
{
"tag": "outcome",
"values": [
"SUCCESS"
]
},
{
"tag": "status",
"values": [
"200"
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
localhost:8889/actuator/metrics/http.server.requests
{
"name": "http.server.requests",
"description": null,
"baseUnit": "seconds",
"measurements": [
{
"statistic": "COUNT",
"value": 3346
},
{
"statistic": "TOTAL_TIME",
"value": 559.7992767999998
},
{
"statistic": "MAX",
"value": 2.3612968
}
],
Run Code Online (Sandbox Code Playgroud)
che*_*tts 11
指标MAX是滚动最大值。因此它代表滚动窗口中的最大测量值。
例如,如果您每分钟抓取一次指标:
Total Count Max
Minute 1 100 1 100
Minute 2 500 101 90
Minute 3 4500 1000 10
Minute 4 4500 1000 0
Run Code Online (Sandbox Code Playgroud)
在第 1 分钟内,您有 1 个请求,总共 100 毫秒,因此平均持续时间为 100 毫秒,最慢(最大)为 100 毫秒
在第 2 分钟内,总数增加了 400(因为总数是累积的),计数增加了 100。因此平均值为 4 毫秒。然而,由于最大值为 90 毫秒,因此您知道虽然该秒内的大多数请求都很快,但仍有一些请求较慢。
在第 3 分钟内,您又收到了 899 个请求(计数),总数增加了 4000 毫秒。(4000/899 = ~4.4ms) 所以你的平均测量时间是 4.4ms,最大值是 10ms。
因此 MAX 的目的是测量最差的异常值,以便您了解代码执行的一致性。
查看第 4 分钟,总数和计数没有增加,因为没有请求。由于没有请求,因此不可能存在对 MAX 的“最慢”请求,这就是 MAX 为 0 的原因。
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)
Run Code Online (Sandbox Code Playgroud)
对特定端点的请求数量不会影响 MAX
有一个定时器将值设置为0。当端点一段时间内没有被调用或执行时,定时器将MAX设置为0。这里近似的定时器值是2.30分钟(150秒)
为此,我采集了 6 个样本(执行同一端点 6 次)。为此,我确定了调用端点的时间与 MAX 设置回零的时间之间的时间差
.expiry(Duration.ofMinutes(2)).bufferLength(3)
如果在到期时间或轮换时间之间没有发出请求, DistributionStatisticConfig 会将
MAX属性属于 枚举统计,由Measurement 使用(在Measurement 中我们得到COUNT、TOTAL_TIME、MAX)
公共静态最终统计最大值
记录的最大金额。当它表示时间时,会以监控系统的基本时间单位进行报告。
注意:
这是特定端点的指标的情况(此处/actuator/metrics/http.server.requests?tag=uri:/user/asset/getAllAssets)。
对于广义度量actuator/metrics/http.server.requests
正如您从请求 1、请求 2(有问题)中看到的那样,MAX 已减少(从 3.0002913 到 2.3612968),因此可能由于计时器的原因,某些端点的 MAX 将被设置回 0。在我看来,MAX for/http.server.requests将与特定端点相同。(但可以肯定的是,正在对此进行调查)