📜  使用Spring Boot Actuator监视API(1)

📅  最后修改于: 2023-12-03 14:49:51.620000             🧑  作者: Mango

使用Spring Boot Actuator监视API

Spring Boot Actuator是Spring Boot框架中的一个功能强大的子项目,可以通过HTTP、JMX、SSH等方式来监控和管理Spring Boot应用程序。其中,HTTP API是常用的一种方式,可以方便地在生产环境中对应用程序进行远程监控和管理。

配置

在pom.xml文件中添加依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

然后在application.properties或application.yml文件中添加以下配置:

management.endpoints.web.exposure.include=*

这样就可以开启所有的Actuator Endpoint,可以通过"/actuator"来访问Actuator。同时我们也可以通过配置指定需要暴露的Endpoint,例如:

management.endpoints.web.exposure.include=health,info,mappings

以上配置将仅暴露health、info、mappings三个Endpoint。

常用Endpoint

Spring Boot Actuator提供了很多Endpoint,用于监控应用程序的状态和行为。以下是常用的Endpoint:

  • /actuator/health:应用程序的健康状态,包括数据库、磁盘空间、内存等的健康状态。
  • /actuator/info:应用程序的基本信息,例如版本号、运行环境等。
  • /actuator/metrics:应用程序的度量指标,例如请求数、错误率、性能指标等。
  • /actuator/mappings:应用程序中所有的URL映射情况。
  • /actuator/env:应用程序环境变量的信息。
  • /actuator/configprops:应用程序中所有的配置属性情况。
  • /actuator/beans:应用程序中所有的Bean信息。
访问Endpoint

通过HTTP GET请求访问指定的Endpoint,可以获取到相关信息。例如:

  • 访问/actuator/health即可获取健康状态信息,如下所示:
{
    "status": "UP",
    "details": {
        "diskSpace": {
            "status": "UP",
            "details": {
                "total": 499963170816,
                "free": 32002162048,
                "threshold": 10485760
            }
        },
        "db": {
            "status": "UP",
            "details": {
                "database": "MySQL",
                "hello": 1
            }
        }
    }
}
  • 访问/actuator/info即可获取应用程序的基本信息,如下所示:
{
    "app": {
        "name": "myapp",
        "description": "My Spring Boot Application",
        "version": "1.0.0",
        "timezone": "Asia/Shanghai"
    },
    "java": {
        "version": "1.8.0_202",
        "vendor": "Oracle Corporation",
        "vmVersion": "25.202-b08",
        "vmName": "Java HotSpot(TM) 64-Bit Server VM",
        "vmMaxMemory": "64M",
        "compiler": "jit"
    },
    "os": {
        "name": "Windows 10",
        "version": "10.0",
        "architecture": "amd64",
        "processors": 8
    },
    "user": {
        "name": "admin",
        "timezone": "Asia/Shanghai"
    }
}
安全性

Actuator Endpoint是开放给外部应用程序访问的,因此需要增强安全性,防止非法访问。可以通过Spring Security、访问IP限制等方式来增强安全性。

为了增加安全性,我们可以通过以下方式配置:

management.endpoints.web.exposure.include=health,info,mappings
management.endpoint.health.show-details=when-authorized
management.endpoint.info.sensitive=false
spring.security.user.name=admin
spring.security.user.password=password

以上配置将仅暴露health、info、mappings三个Endpoint,并要求认证后才能查看更多健康信息。同时,禁用了应用程序的基本信息中的敏感信息。最后,使用Spring Security提供的基本认证方式,确定了用户名和密码。

结语

Spring Boot Actuator是一个强大的监控和管理工具,在生产环境中非常实用。通过此文的介绍,我们可以更加清晰地了解Actuator的使用方法和常用Endpoint,同时也要注意增强安全性,避免不必要的风险。