Spring Boot Actuator:让应用更健康,监控不再难!

🏆本文收录于「滚雪球学SpringBoot」专栏,手把手带你零基础入门Spring Boot,从入门到就业,助你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
环境说明:Windows 10 + IntelliJ IDEA 2021.3.2 + Jdk 1.8
前言
当你把一个应用从开发阶段推向生产环境时,保持应用的健康状态变得至关重要。尤其是大型应用,运行时的性能瓶颈、健康问题、资源耗尽等问题随时可能发生。此时,如果没有合适的监控手段,问题可能在不知不觉中变得严重,导致应用出现故障或性能下降。Spring Boot Actuator 就是在这个关键时刻登场,它是一个功能强大的工具,可以帮助你实时监控应用的运行状态,暴露重要的应用指标,甚至支持自定义监控端点和与外部工具(如Prometheus和Grafana)集成。让我们来看看如何借助Spring Boot Actuator来保障应用的健康运行。💡
1. Actuator简介:给你的应用插上“监控翅膀”🕊️
Spring Boot Actuator 是 Spring Boot 提供的一组生产环境特性,使得开发者能够轻松地进行应用监控和管理。Actuator 可以暴露一系列内置的 HTTP 端点,帮助你实时了解应用的健康状态、性能指标、环境信息、应用配置等关键数据。而且,Spring Boot Actuator 的实现方式高度灵活,支持根据需求进行扩展和自定义,极大地提高了开发和运维的效率。
Actuator 并不是一个新概念,它在 Spring Boot 的早期版本中就已经推出,随着版本的更新和功能的增强,它变得越来越强大,成为开发和生产环境监控中不可或缺的工具。
常见功能:
- 健康检查(Health Checks):确认应用的关键组件是否正常运行,及时发现问题。
- 性能指标(Metrics):获取应用的内存、CPU、请求响应时间等指标,帮助你优化性能。
- 审计(Auditing):记录和跟踪系统中发生的关键事件。
- 应用配置(Environment):暴露当前应用的配置和环境变量,帮助调试和配置管理。
2. 启用和使用 Actuator:安装、配置,轻松启用!🔧
Spring Boot Actuator 提供了一个开箱即用的监控解决方案,你只需要在项目中引入相应的依赖即可开始使用。接下来,我们来看一下如何启用和配置 Actuator。
2.1 添加依赖
在使用 Spring Boot Actuator 前,你需要在 pom.xml
(如果使用 Maven)或者 build.gradle
(如果使用 Gradle)文件中添加相应的依赖。
Maven:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
Gradle:
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-actuator'
}
添加依赖后,Spring Boot 会自动启用 Actuator,并提供一些默认的监控端点,帮助你直接查看应用的健康状态、性能指标等。默认情况下,所有端点都被禁用或仅对本地访问开放,增强安全性。
2.2 配置 Actuator
Spring Boot Actuator 默认提供一组端点,例如 /actuator/health
、/actuator/metrics
等,若要启用这些端点,你需要在 application.properties
或 application.yml
配置文件中进行相关配置。
示例配置(在 application.properties
中):
# 启用所有 Actuator 端点
management.endpoints.web.exposure.include=*
# 配置 Actuator 端点的访问路径
management.endpoints.web.base-path=/actuator
这样,所有 Actuator 端点都会暴露在 /actuator
路径下,你可以通过 http://localhost:8080/actuator/health
来访问健康检查端点。
2.3 基本端点访问
一旦启用 Actuator 后,你可以通过以下常见端点查看应用状态:
/actuator/health
:应用的健康状态。/actuator/metrics
:应用的性能指标。/actuator/env
:应用的环境信息。/actuator/info
:应用的基本信息(可以在代码中自定义该信息)。/actuator/loggers
:查看和修改日志级别。
访问这些端点,你可以轻松了解应用的运行状况,及时发现和排查问题。
3. Actuator 提供的监控端点:一站式查看应用健康🏥
Spring Boot Actuator 默认提供了多个有用的端点,帮助开发者监控和管理应用。接下来我们详细介绍几个常用的端点及其作用。
3.1 /actuator/health
:健康检查,给你的应用做个“体检”💓
这个端点返回应用的健康状态信息。它会检查应用的各个关键组件(如数据库、磁盘空间等)是否正常工作。如果一切正常,返回的状态为 UP
;如果检测到问题,状态为 DOWN
。
示例请求:
GET http://localhost:8080/actuator/health
返回内容(示例):
{
"status": "UP",
"details": {
"diskSpace": {
"status": "UP",
"total": 5000000000,
"free": 2000000000,
"threshold": 10485760
},
"db": {
"status": "UP"
}
}
}
status
:应用的健康状态,UP
表示健康,DOWN
表示不健康。details
:返回的详细健康信息,可能包括数据库、磁盘空间、内存等的状态。
3.2 /actuator/metrics
:性能监控,让应用的“运动”看得见🏃♀️
/actuator/metrics
端点提供了关于应用的各种性能数据,包括内存使用、请求数量、响应时间等。通过它,你可以实时监控应用的负载情况,确保应用的性能在可接受的范围内。
示例请求:
GET http://localhost:8080/actuator/metrics
返回内容(示例):
{
"names": [
"jvm.memory.used",
"jvm.threads.live",
"system.cpu.usage"
]
}
jvm.memory.used
:JVM使用的内存量。jvm.threads.live
:当前活跃的线程数。system.cpu.usage
:系统CPU的使用率。
3.3 /actuator/env
:查看应用的环境配置🔧
/actuator/env
端点提供了应用的环境信息,包括所有的配置属性、系统属性等。这个端点通常用于调试和排查配置问题,帮助你快速查看应用的所有配置。
示例请求:
GET http://localhost:8080/actuator/env
返回内容(示例):
{
"properties": {
"spring.datasource.url": "jdbc:mysql://localhost:3306/mydb",
"spring.datasource.username": "root",
"spring.datasource.password": "root"
}
}
3.4 /actuator/loggers
:查看日志级别,快速定位问题日志📝
/actuator/loggers
端点允许你查看和修改日志级别。你可以实时改变日志级别来排查问题,特别是当你不确定问题的根源时,调试级别的日志非常有帮助。
示例请求:
GET http://localhost:8080/actuator/loggers
返回内容(示例):
{
"levels": [
"OFF",
"ERROR",
"WARN",
"INFO",
"DEBUG",
"TRACE"
]
}
你还可以通过 POST 请求来动态修改日志级别,例如将某个包的日志级别设置为 DEBUG
。
4. 自定义 Actuator 端点:个性化监控,专属你的需求🔧
虽然 Spring Boot Actuator 提供了许多默认的端点,但你可能需要根据自己的需求来扩展功能。Spring Boot 允许你创建自定义的 Actuator 端点,以便暴露更多个性化的信息。
4.1 创建自定义端点
你可以通过继承 AbstractEndpoint
来实现自定义端点,或者使用 @Endpoint
注解来创建新的监控端点。例如,我们可以创建一个名为 /actuator/myCustomEndpoint
的端点,返回一些定制化的信息。
示例代码:
import org.springframework.boot.actuate.endpoint.annotation.Endpoint;
import org.springframework.boot.actuate.endpoint.annotation.ReadOperation;
import org.springframework.stereotype.Component;
@Component
@Endpoint(id = "myCustomEndpoint")
public class MyCustomEndpoint {
@ReadOperation
public String getInfo() {
return "This is my custom endpoint!";
}
}
上述代码定义了一个新的 Actuator 端点 myCustomEndpoint
,当你访问 /actuator/myCustomEndpoint
时,会返回 "This is my custom endpoint!"
的字符串。
4.2 启用自定义端点
通过简单的注解和配置,Spring Boot 会自动将你定义的自定义端点添加到 Actuator 中,供你在应用中使用。
5. 集成 Prometheus 与 Grafana:打造更高级的监控仪表盘📊
虽然 Actuator 提供了丰富的默认端点,但对于生产环境中的大规模应用,可能需要更加灵活和强大的监控工具。这时,Prometheus 和 Grafana 的结合就显得尤为重要,它们是目前最受欢迎的开源监控方案,能够帮助你更好地展示和分析应用数据。
5.1 集成 Prometheus
Prometheus 是一个强大的开源监控系统,特别适用于时序数据的收集和查询。你可以通过 Spring Boot Actuator 集成 Prometheus 来收集应用的各种监控指标。
步骤:
- 添加 Prometheus 依赖:
在 pom.xml
文件中添加 Prometheus 的支持。
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
</dependency>
- 配置 Prometheus 配置文件:
确保 Actuator 暴露的 /actuator/prometheus
端点可以被 Prometheus 服务器访问。你需要修改配置文件启用这个端点:
management.endpoints.web.exposure.include=prometheus
- 配置 Prometheus 服务:
在 Prometheus 的配置文件中,添加对 /actuator/prometheus
的抓取配置。
scrape_configs:
- job_name: 'spring-boot-actuator'
scrape_interval: 10s
static_configs:
- targets: ['localhost:8080']
- Grafana 配置:
安装并配置 Grafana,添加 Prometheus 作为数据源。然后你可以在 Grafana 中创建仪表盘,实时查看 Spring Boot 应用的性能数据。
6. 总结:Spring Boot Actuator 让监控更轻松!🎉
通过本章节的学习,相信你已经掌握了 Spring Boot Actuator 的基本用法及其如何帮助我们进行应用监控和管理。从启用 Actuator 到了解常用端点,再到如何创建自定义端点,Actuator 给我们提供了强大的监控能力。加上 Prometheus 和 Grafana 的集成,你可以让应用的监控更加可视化、智能化,帮助你实时掌控应用健康状况。
如果你对 Actuator 的更多高级功能有兴趣,别忘了深入探索!未来的项目开发中,记得使用 Actuator 这个小助手,它将帮助你节省很多排查问题和优化性能的时间。📈
🧧福利赠与你🧧
无论你是计算机专业的学生,还是对编程有兴趣的小伙伴,都建议直接毫无顾忌的学习此专栏「滚雪球学SpringBoot」,bug菌郑重承诺,凡是学习此专栏的同学,均能获取到所需的知识和技能,全网最快速入门SpringBoot,就像滚雪球一样,越滚越大, 无边无际,指数级提升。
最后,如果这篇文章对你有所帮助,帮忙给作者来个一键三连,关注、点赞、收藏,您的支持就是我坚持写作最大的动力。
同时欢迎大家关注公众号:「猿圈奇妙屋」 ,以便学习更多同类型的技术文章,免费白嫖最新BAT互联网公司面试题、4000G pdf电子书籍、简历模板、技术文章Markdown文档等海量资料。
✨️ Who am I?
我是bug菌,CSDN | 掘金 | InfoQ | 51CTO | 华为云 | 阿里云 | 腾讯云 等社区博客专家,C站博客之星Top30,华为云多年度十佳博主/价值贡献奖,掘金多年度人气作者Top40,掘金等各大社区平台签约作者,51CTO年度博主Top12,掘金/InfoQ/51CTO等社区优质创作者;全网粉丝合计 30w+;更多精彩福利点击这里;硬核微信公众号「猿圈奇妙屋」,欢迎你的加入!免费白嫖最新BAT互联网公司面试真题、4000G PDF电子书籍、简历模板等海量资料,你想要的我都有,关键是你不来拿。

-End-
- 点赞
- 收藏
- 关注作者
评论(0)