编程语言
首页 > 编程语言> > java – Spring Boot REST API的度量标准集合

java – Spring Boot REST API的度量标准集合

作者:互联网

我正在尝试收集Spring Boot(2.1.0.RELEASE)应用程序的指标.具体来说,我想知道

>无论何时调用单个REST端点.
>每个端点处理请求所花费的时间.
>我的请求被处理/错误的平均速率.

执行器/执行器/指标端点提供了大量信息,但我不确定这些是否对我的情况有用.此外,有人可以判断是否可以使用@Timed(或任何其他开箱即用的注释)来实现这些统计数据,或者我必须在每个控制器方法中使用类似下面的内容:

  Timer timer = new SimpleMeterRegistry().timer("timer.name");
timer.record(() -> {
    // all logic here
});

我尝试在我的控制器方法上使用@Timed,但它没有向/ actuator / metrics端点添加任何新的响应.

解决方法:

您可以使用Spring Boot /actuator/metrics/http.server.requests来获取所有以其计数,异常,结果,状态,总时间等执行的endPoints,如下所示.

如果您想查看特定endPoint的详细信息,那么您可以通过调用请求来执行此操作,如下所示

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作为特定endPoint的次数

>您将获得COUNT作为特定endPoint的次数
使用特定状态调用
>要获得执行endPoint的平均时间,您可以这样做
特定端点以及整体的TOTAL_TIME / COUNT
应用

本地主机:8889 /致动器/度量/ 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"
            ]
        }
    ]
}

本地主机:8889 /致动器/度量/ http.server.requests标签= URI:/用户/资产/ 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"
            ]
        }
    ]
}

UPDATE

另一种方法是使用Spring Boot Admin.为此,我们必须配置客户端 – 服务器.为避免错误,请确保客户端 – 服务器依赖关系的版本相同.我们可以从下拉列表中添加所需的指标,如图所示.

客户端:

的pom.xml

<dependency>
     <groupId>de.codecentric</groupId>
     <artifactId>spring-boot-admin-starter-client</artifactId>
     <version>2.1.4</version>
</dependency>

application.properties

spring.boot.admin.api-path=/instances
spring.boot.admin.client.url=http://localhost:6699
management.endpoints.web.exposure.include=*

服务器端:

application.properties

server.port = 6699
spring.boot.admin.server.url=http://localhost:8889

的pom.xml

 <dependency>
         <groupId>de.codecentric</groupId>
         <artifactId>spring-boot-admin-starter-server</artifactId>
         <version>2.1.4</version>
    </dependency>

添加@EnableAdminServer

import de.codecentric.boot.admin.server.config.EnableAdminServer;

@SpringBootApplication
@EnableAdminServer
public class AdminApplication {

    public static void main(String[] args) {
        SpringApplication.run(AdminApplication.class, args);
    }

}

GUI http://localhost:6699/#/applications

主页
Homepage

度量
Metric Colletion

健康
enter image description here

图表
enter image description here

标签:spring-boot-actuator,java,spring-boot,spring-micrometer
来源: https://codeday.me/bug/20191008/1871955.html