作为个人站长,将 Spring Boot 应用部署到公有云虚拟机或 VPS 上后,最重要的事情就是监控应用的状态、性能和配置。Spring Boot Actuator 就是实现这一目标的神器。
spring-boot-starter-actuator 提供了一系列生产级别的端点(Endpoints),允许你通过 HTTP 或 JMX 接口获取应用程序的内部信息,例如健康状况、度量指标、环境配置等。掌握这些端点是运维 Spring Boot 应用的基础。
第一步:引入 Actuator 依赖
要使用 Actuator,你需要将相应的 starter 依赖添加到你的 pom.xml 文件中:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!-- 通常我们也会依赖 web,确保可以通过 HTTP 访问 Actuator 端点 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
第二步:配置 Actuator 端点暴露
出于安全考虑,Spring Boot 默认只暴露 /health 和 /info 两个端点。如果你希望在 VPS 上进行深度调试和监控,你需要修改 application.properties 或 application.yml 来暴露更多的端点。
注意: 生产环境中,强烈建议仅在受保护的网络或通过安全验证后暴露这些端点。
application.properties 配置示例
要暴露所有端点,使用星号 *****:
# 启用所有端点(仅用于开发或安全内网环境!)
management.endpoints.web.exposure.include=*
# 默认路径是 /actuator,你也可以修改它
# management.endpoints.web.base-path=/monitor
第三步:核心 Actuator 端点详解与实操
假设你的 Spring Boot 应用运行在 http://localhost:8080 上,Actuator 接口默认为 http://localhost:8080/actuator/。
1. /health – 应用程序健康检查
用途: 这是最常用的端点,用于检查应用程序的运行状态、数据库连接状态、磁盘空间等。对于负载均衡器判断实例是否存活至关重要。
# 检查整体健康状态
curl http://localhost:8080/actuator/health
# 示例输出 (状态 UP 代表正常)
# {"status":"UP","components":{"db":{"status":"UP","details":{...}},"diskSpace":{"status":"UP","details":{...}},"ping":{"status":"UP"}}}
2. /info – 应用信息展示
用途: 显示应用程序的任意自定义信息。通常用于展示构建版本号、Git 提交信息或许可证信息,方便快速识别当前部署的版本。
你可以在 application.properties 中添加自定义信息:
info.app.name=My-Website-Service
info.app.version=1.0.1-RELEASE
curl http://localhost:8080/actuator/info
3. /metrics – 性能度量指标
用途: 提供了 JVM、CPU、内存、HTTP 请求计数、数据库连接池等详细的性能数据。这是性能调优和故障排除的关键。
首先,请求 /metrics 查看所有可用的指标名称:
curl http://localhost:8080/actuator/metrics
然后,查询特定的指标,例如 JVM 内存使用量:
# 查询 JVM 已使用的内存量
curl http://localhost:8080/actuator/metrics/jvm.memory.used
# 查询 HTTP 请求总数(例如 /actuator 路径的请求数)
curl http://localhost:8080/actuator/metrics/http.server.requests
4. /env – 环境属性信息
用途: 查看 Spring 环境变量、系统属性、命令行参数以及 application.properties 中加载的配置信息。在部署或配置出现问题时,这个端点是极好的排查工具。
# 查看所有环境信息
curl http://localhost:8080/actuator/env
# 查看特定属性(例如服务器端口)
curl http://localhost:8080/actuator/env/server.port
5. /loggers – 动态修改日志级别
用途: 无需重启应用,即可实时调整特定包或类的日志级别(例如从 INFO 调整到 DEBUG),这对在生产环境中临时定位问题非常有帮助。
实操:将特定包的日志级别临时调整为 DEBUG:
curl -X POST http://localhost:8080/actuator/loggers/com.mywebsite.controller -H "Content-Type: application/json" -d '{"configuredLevel": "DEBUG"}'
通过 Actuator,站长可以远程、非侵入性地监控部署在 VPS 上的 Spring Boot 应用,确保其稳定运行和快速响应潜在的性能瓶颈。
汤不热吧