Spring Boot Actuator:Spring Boot 中的生产级特性
Spring Boot Actuator 是 Spring Boot 框架中最强大和最有用的特性之一。Spring Boot 中的 Actuator 模块帮助应用程序开发者轻松实现生产级特性,例如指标、健康检查、安全性等。
本文将指导您如何启用 Spring Boot Actuator,配置端点以及如何在 application.properties 文件中修改默认设置。请注意,Spring Boot Actuator 仅适用于 Spring Boot 应用程序,无法集成到非 Spring Boot 应用程序中。
支持的端点列表
以下是撰写本文时支持的 Actuator 端点列表。每个新版本都会向端点添加新功能。在本文中,我将解释在生产环境中常用的几个端点。
- actuator
- autoconfig
- beans
- configprops
- dump
- env
- health
- info
- metrics
- mappings
- shutdown
- trace
- logfile
- flyway
- liquibase
如何启用 Actuator 端点?
默认情况下,Actuator 端点已在您的 Spring Boot 应用程序中启用。但是,在您的应用程序中启用 Actuator 功能非常简单。如果您将所需的依赖项添加到您的 pom.xml 文件中,则将启用您的应用程序的 Actuator 功能。
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>
在 pom.xml 文件中添加上述条目后,重新启动应用程序。它将被启用。请注意,Actuator 模块中有多个端点。默认情况下,只有少数端点启用,并且只有少数端点可供匿名用户访问。某些端点将具有安全保护以禁止未经授权的访问。可以修改这些配置以更改每个端点的行为。
端点配置
每个端点都具有在应用程序启动时启用的默认配置。端点的一个重要属性是“sensitive”,如果此属性的值为“false”,则表示可以在无需任何身份验证的情况下访问此端点。如果值为“true”,则必须在类路径中添加 Spring Security 模块才能访问端点。这些值也可以在 application.properties 文件中配置。
这是一个配置示例
endpoints.info.id=information endpoints.info.sensitive=false endpoints.info.enabled=true information.app.name=Actuator Example information.app.description=Actuator Example information.app.version=1.0.0
指标 (Metrics)
此端点的默认 URI 为 */metrics*。当您在类路径中添加 Spring Boot Actuator 模块时,此端点将默认启用。顾名思义,此功能对于查找有关内存、堆、处理器、类加载和线程池的信息非常有用。
我们可以将指标分类为系统指标、数据源指标、缓存指标和会话指标。应用程序开发人员还可以将他们自己的指标实现添加到他们的 Spring Boot 应用程序中。
如果您运行应用程序并访问 /metrics 端点 URI,您将获得如下所示的 JSON 响应
{ "mem":200162, "mem.free":42675, "processors":4, "instance.uptime":11631, "uptime":27519, "systemload.average":-1.0, "heap.committed":153088, "heap.init":65536, "heap.used":110412, "heap":921600, "nonheap.committed":48320, "nonheap.init":2496, "nonheap.used":47075, "nonheap":0, "threads.peak":13, "threads.daemon":10, "threads.totalStarted":16, "threads":12, "classes":5773, "classes.loaded":5773, "classes.unloaded":0, "gc.ps_scavenge.count":8, "gc.ps_scavenge.time":196, "gc.ps_marksweep.count":1, "gc.ps_marksweep.time":127, "httpsessions.max":-1, "httpsessions.active":0 }
健康检查 (Health)
对于任何生产应用程序而言,定期检查应用程序是启动还是关闭都非常重要。此端点通过公开一个返回应用程序状态消息的端点 URI /health 来满足此要求。当您访问 URI 时,您将获得如下所示的响应消息
{ "status" : "UP" }
上述消息表示应用程序当前正在运行,没有任何问题。监控工具可以使用此服务来检查并警告应用程序是否未运行。
信息 (Info)
Info 端点在 URI /info 处默认公开。如果您访问此端点,它将显示有关应用程序的信息。请查看以下配置
endpoints.info.id=information endpoints.info.sensitive=false endpoints.info.enabled=true info.app.name=Spring Boot Actuator Sample Application info.app.description=Spring Boot Actuator Sample Application info.app.version=1.0.0
上述配置将默认端点 *info* 修改为 *information*。还设置了应用程序的详细信息名称、描述和版本。端点的 sensitive 属性确保相应的端点可以公开或需要身份验证。另一个启用的属性是确保您是否要公开该端点。
如果您运行应用程序并访问 /information 端点,您将看到以下信息以 JSON 格式显示。
{ “app”: { “description”:“Spring Boot Actuator Sample Application”, “name”:“Spring Boot Actuator Sample Application”, “version”:“1.0.0” } }
示例应用程序
我编写了一个非常简单的示例应用程序来演示 Spring Boot Actuator 功能。您可以按照以下步骤完成第一个 Spring Boot Actuator 应用程序的设置。
创建 Maven 项目
第一步是创建一个 Maven 项目。示例应用程序的最终包结构将类似于以下结构
创建 Maven 构建文件
创建一个 pom.xml 文件并将以下条目添加到 Maven 构建文件中。
project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.spring</groupId> <artifactId>boot-sample</artifactId> <packaging>war</packaging> <version>0.0.1-SNAPSHOT</version> <name>boot-sample Maven Webapp</name> <url>http://maven.apache.org</url> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.3.3.RELEASE</version> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> </dependencies> <build> <finalName>boot-sample</finalName> </build> </project>
创建 Spring Boot 应用程序文件
Spring Boot 应用程序启动器文件用于运行 Spring Boot 应用程序。此类必须使用 @SpringBootApplication 注解进行注解。
Application.java
package spring.boot; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
创建应用程序属性文件
此文件是用于加载自定义配置的重要 Spring Boot 配置文件。
application.properties
server.contextPath=/nature endpoints.info.id=information endpoints.info.sensitive=false endpoints.info.enabled=true info.app.name=Spring Boot Actuator Sample Application info.app.description=Spring Boot Actuator Sample Application info.app.version=1.0.0
运行 Spring Boot Actuator 示例应用程序
构建项目后,只需右键单击 *Application.java* 文件即可启动 Spring Boot 应用程序。启动应用程序时,将启用 Actuator 端点。以下是访问 Actuator 端点的 URL 和示例应用程序的屏幕截图。
https://127.0.0.1:8080/nature/health
https://127.0.0.1:8080/nature/metrics
https://127.0.0.1:8080/nature/info
在本文中,我解释了关于 Spring Boot Actuator 的关键概念,并提供了一个简单的示例来演示如何启用端点以及如何配置几个端点,例如 info、metrics 和 health。您可以通过类似的方式配置 Actuator 模块支持的任何其他端点。