我正在尝试为我的 Spring Boot(2.1.0.RELEASE) 应用程序收集指标。具体来说,我想知道
- 调用单个 REST 端点的次数。
- 每个端点处理请求所花费的时间。
- 处理/出错我的请求的平均速率。
执行器 /actuator/metrics
端点提供了很多信息,但我不确定其中是否对我的情况有用。另外,有人可以告诉我是否 @Timed (或任何其他开箱即用的注释)可用于实现这些统计信息,或者我必须在每个 Controller 方法中使用如下所示的内容:
Timer timer = new SimpleMeterRegistry().timer("timer.name");
timer.record(() -> {
// all logic here
});
我尝试在我的 Controller 方法上使用 @Timed,但它没有向 /actuator/metrics
端点添加任何新响应。
最佳答案
您可以使用 Spring Boot /actuator/metrics/http.server.requests
获取所有执行的端点及其计数、异常、结果、状态、总时间等,如下所示。
如果你想查看特定端点的详细信息,那么你可以通过调用请求来实现
localhost:8889/actuator/metrics/http.server.requests?tag=uri:<endPoint>
localhost:8889/actuator/metrics/http.server.requests?tag=uri:/user/asset/getAllAssets
localhost:8889/actuator/metrics/http.server.requests?tag=uri:/user/asset/getAllAssets&tag=status:200
- 您将得到
COUNT
作为特定端点的次数 叫 - 您将得到
COUNT
作为特定端点的次数
以特定状态 调用
- 要获得执行 endPoint 的平均时间,您可以这样做
TOTAL_TIME/COUNT
特定端点以及整个端点 应用
localhost:8889/actuator/metrics/http.server.requests
{
"name": "http.server.requests",
"description": null,
"baseUnit": "seconds",
"measurements": [
{
"statistic": "COUNT",
"value": 3
},
{
"statistic": "TOTAL_TIME",
"value": 0.21817219999999998
},
{
"statistic": "MAX",
"value": 0.1379249
}
],
"availableTags": [
{
"tag": "exception",
"values": [
"MethodArgumentTypeMismatchException",
"None"
]
},
{
"tag": "method",
"values": [
"GET"
]
},
{
"tag": "uri",
"values": [
"/{id}.*",
"/user/asset/getAsset/{assetId}",
"/user/asset/getAllAssets"
]
},
{
"tag": "outcome",
"values": [
"CLIENT_ERROR",
"SUCCESS"
]
},
{
"tag": "status",
"values": [
"400",
"404",
"200"
]
}
]
}
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.1379249
},
{
"statistic": "MAX",
"value": 0
}
],
"availableTags": [
{
"tag": "exception",
"values": [
"None"
]
},
{
"tag": "method",
"values": [
"GET"
]
},
{
"tag": "outcome",
"values": [
"SUCCESS"
]
},
{
"tag": "status",
"values": [
"200"
]
}
]
}
关于java - Spring Boot REST API 的指标收集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56987541/