SpringBoot学习指南,超级全,真的细!挑战全篇无图教会你Java Springboot的使用。
考虑到大家学习的时间都比较碎片前面的9万字的文档确实阅读时间相对比较苛刻,故此将文档做一个分割,如果时间比较充足的小伙伴,建议还是直接阅读长篇这样学习会比较连贯
16.SpringBoot Actuator 组件
简介:
在Spring Boot中,执行器(Actuator)是一个重要的组件,它提供了对应用程序的监控、管理和操作的功能。执行器允许你通过HTTP端点或JMX(Java Management Extensions)来获取应用程序的各种信息,包括健康状况、度量指标、环境配置等。
以下是一些执行器组件的常用功能:
- 健康指标(Health Indicators):执行器提供了一个用于检查应用程序健康状态的端点(endpoint)。通过检查该端点,你可以了解应用程序是否运行正常。
- 信息指标(Info Endpoint):执行器提供了一个用于获取应用程序信息的端点。你可以自定义并在应用程序信息中添加自己的属性。
- 环境配置(Environment Endpoint):执行器的环境配置端点允许你获取应用程序的配置属性,包括系统属性、环境变量和应用程序特定的属性。
- 度量指标(Metrics Endpoint):执行器提供了一组用于收集和监控应用程序度量指标的端点。这些指标可以包括请求计数、响应时间、内存使用等信息。
- 日志文件(Logfile Endpoint):执行器允许你通过一个端点来访问应用程序的日志文件,你可以查看最近的日志内容。
- 线程转储(Thread Dump Endpoint):执行器提供了一个线程转储端点,用于获取应用程序当前活动线程的转储信息。
- 运行时配置(Configuration Properties):执行器可以显示应用程序中使用的配置属性,并提供了一种动态更改这些属性的方式。
执行器组件在Spring Boot中通过依赖添加到项目中,通常使用spring-boot-starter-actuator
依赖。在pom.xml
文件中添加以下依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
启用执行器组件后,你可以通过HTTP端点或JMX来访问执行器的功能。默认情况下,执行器的HTTP端点路径为/actuator
,例如/actuator/health
用于检查健康状态。
你还可以通过配置文件(如application.properties
或application.yml
)来自定义执行器的端点路径和其他属性。
执行器的详细配置和使用方法可以参考Spring Boot的官方文档:
注意:执行器提供了对应用程序的监控和管理功能,因此在生产环境中应谨慎使用,确保适当地保护和限制执行器端点的访问。
1.在我的项目里添加SpringBoot Actuator 组件
pom.xml
上面项目初始化时我们已经添加了
2.Actuator配置
当使用application.yml
进行配置时,你可以根据需要添加以下配置来自定义Spring Boot Actuator的行为:
# 配置Actuator端点的访问路径
management:
endpoints:
web:
base-path: /health # 设置Actuator的基本路径,默认为/actuator,这里我们设置为/health
exposure:
include: "*" # 包括所有Actuator端点
exclude: env # 排除env端点
health:
show-details: always # 显示详细的健康信息
endpoint:
health:
show-details: always # 显示详细的健康信息
# 配置Actuator的安全性
spring:
security:
user:
name: admin # 设置Actuator的用户名
password: password # 设置Actuator的密码
上述配置示例包括了几个常见的Actuator配置选项。你可以根据需要进行自定义配置:
management.endpoints.web.base-path
:设置Actuator的基本路径,默认为/actuator
。你可以将其更改为其他路径,以适应你的项目需要。management.endpoints.web.exposure.include
:指定要暴露的Actuator端点。在示例中,使用通配符*
表示包括所有端点。你可以根据需要指定特定的端点或排除某些端点。management.endpoints.web.exposure.exclude
:指定要排除的Actuator端点。在示例中,env
端点被排除在外。你可以根据需要排除其他端点。management.endpoint.health.show-details
:配置健康端点是否显示详细信息。在示例中,设置为always
表示始终显示详细信息。你也可以将其设置为never
以隐藏详细信息。spring.security.user.name
和spring.security.user.password
:配置Actuator的用户名和密码。在示例中,用户名为admin
,密码为password
。你可以根据需求设置不同的用户名和密码。
请注意,这只是一些常见的配置选项示例。你可以根据具体需求进行更多的自定义配置。同时,确保在生产环境中使用强大的密码和适当的安全措施来保护Actuator端点。
当前的application.yml
文件的所有配置
/src/main/resource/application.yml
# 服务器端口配置
server:
port: 9090
# Spring 数据源配置
spring:
datasource:
# 数据库连接 URL
url: jdbc:mysql://127.0.0.1:3306/springboot
# MySQL 驱动类
driver-class-name: com.mysql.cj.jdbc.Driver
# 数据库用户名
username: root
# 数据库密码
password:
# 数据源类型(这里使用了 Druid 数据源)
type: com.alibaba.druid.pool.DruidDataSource
redis:
host: 127.0.0.1
port: 6379
password:
# 配置Actuator的安全性
security:
user:
name: admin # 设置Actuator的用户名
password: password # 设置Actuator的密码
# 配置Actuator端点的访问路径
management:
endpoints:
web:
base-path: /health # 设置Actuator的基本路径,默认为/actuator,这里我们设置为/health
exposure:
include: "*" # 包括所有Actuator端点 对外暴露所有的访问路径 ,默认是/health 和 /info
# exclude: env # 排除env端点
health:
show-details: always # 显示详细的健康信息
server:
port: 9091 #设置Actuator的基的访问端口,不设置的话默认是同Web启动器的server.port一致
# MyBatis 配置
mybatis:
# MyBatis 类型别名包扫描路径,用于扫描指定包下的类作为 MyBatis 实体类
type-aliases-package: com.practice.pojo
3.访问执行器端点:启用执行器后,你可以通过HTTP端点或JMX来访问执行器的各种功能。以下是一些常用的执行器端点和其对应的功能:
注意:我这里是默认路径,按照上面的设置,路径为/health/***
以下是常用的Spring Boot Actuator端点及其对应的功能和请求方式:
端点路径 | 功能 | 请求方法 |
---|---|---|
/actuator/auditevents | 查看审计事件(Audit Events) | GET |
/actuator/beans | 查看应用程序中所有可用的Bean | GET |
/actuator/conditions | 查看自动配置条件是否满足 | GET |
/actuator/configprops | 查看所有配置属性(Configuration Properties) | GET |
/actuator/env | 查看应用程序的环境配置(Environment) | GET |
/actuator/flyway | 查看数据库迁移信息(Flyway) | GET |
/actuator/health | 查看应用程序的健康状况(Health) | GET |
/actuator/info | 查看应用程序的信息 | GET |
/actuator/loggers | 查看和修改日志记录器的配置 | GET, POST |
/actuator/liquibase | 查看数据库迁移信息(Liquibase) | GET |
/actuator/metrics | 查看应用程序的度量指标(Metrics) | GET |
/actuator/prometheus | 以Prometheus格式暴露应用程序的度量指标 | GET |
/actuator/scheduledtasks | 查看应用程序中的定时任务(Scheduled Tasks) | GET |
/actuator/sessions | 查看和失效用户会话(Sessions) | GET, DELETE |
/actuator/shutdown | 关闭应用程序(仅在启用时可用,需配置安全性) | POST |
/actuator/threaddump | 获取应用程序当前活动线程的转储信息 | GET |
/actuator/mappings | 查看应用程序的URL映射(URL Mappings) | GET |
/actuator/heapdump | 获取应用程序的堆转储信息 | GE |
/actuator/jolokia | 暴露JMX beans(需要Jolokia依赖) | GET |
这些端点提供了各种有用的功能,可以帮助你监控和管理Spring Boot应用程序。具体使用的请求方式取决于每个端点的设计和配置。
你可以使用类似curl
、浏览器或其他HTTP客户端工具来访问这些端点。例如,使用curl
命令来获取健康状况,如果你的配置同我一致请执行:
curl http://localhost:8080/health/health
如果你是默认的配置请访问:
curl http://localhost:8080/actuator/health
执行结果如下:
{
"status": "UP",
"components": {
"db": {
"status": "UP",
"details": {
"database": "MySQL",
"validationQuery": "isValid()"
}
},
"diskSpace": {
"status": "UP",
"details": {
"total": 499963174912,
"free": 115618381824,
"threshold": 10485760,
"exists": true
}
},
"ping": {
"status": "UP"
},
"redis": {
"status": "UP",
"details": {
"version": "6.2.6"
}
}
}
}
你还可以使用JMX工具(如JConsole或VisualVM)来连接到应用程序并查看执行器的MBeans。
4.SpringBoot Admin 组件
简介
Spring Boot Admin是一个用于监控和管理Spring Boot应用程序的开源组件。它提供了一个用户界面,用于实时监控应用程序的健康状况、运行状态、性能指标等,并且可以对应用程序进行远程管理操作。
以下是Spring Boot Admin的一些主要特性:
- 应用程序监控:Spring Boot Admin可以监控注册在其上的多个Spring Boot应用程序。它会收集应用程序的健康状况、内存使用情况、线程信息、日志等,并以可视化的方式展示在用户界面上。
- 健康状况检查:Spring Boot Admin会定期检查应用程序的健康状况,并提供实时的健康报告。你可以查看应用程序的健康状态,包括是否健康、是否存活、具体的健康指标等。
- 运行状态监控:Spring Boot Admin可以监控应用程序的运行状态,包括内存使用情况、线程数量、加载的类数等。这些指标可以帮助你了解应用程序的性能和资源利用情况。
- 日志管理:Spring Boot Admin提供了查看和管理应用程序日志的功能。你可以查看应用程序的日志文件,并支持日志级别的动态调整。
- 远程操作:Spring Boot Admin允许你对注册的应用程序进行远程操作,如重启应用程序、关闭应用程序、动态修改配置等。这使得你可以在不登录到服务器的情况下管理应用程序。
- 事件通知:Spring Boot Admin支持事件通知机制,可以将应用程序的状态变化、健康状况等信息发送到外部系统,如Slack、Email等。
Spring Boot Admin提供了一个易于使用和直观的用户界面,使得监控和管理Spring Boot应用程序变得简单和便捷。你可以通过引入相应的依赖并进行配置,将Spring Boot Admin集成到你的应用程序中。
注意,Spring Boot Admin是一个独立的项目,与Spring Boot本身并不直接相关。它是使用Spring Boot和Spring Cloud等技术栈构建的,但需要单独进行配置和部署。
操作
使用IntelliJ IDEA创建新的Maven项目并添加Spring Boot Admin组件
步骤1:打开IntelliJ IDEA
首先,启动IntelliJ IDEA并打开主界面。
步骤2:创建新项目
- 在主界面上选择 "Create New Project" 或 "New Project",进入新项目创建向导。
步骤3:选择项目类型
- 在向导中选择 "Maven" 作为项目类型,并点击 "Next"。
步骤4:配置项目
- 在 "GroupId" 字段中输入 "com.practice",在 "ArtifactId" 字段中输入 "springboot_admin_server",并选择存储项目的位置。然后点击 "Next"。
步骤5:这里我们不选择Maven模板
- 然后点击 "Next"。
步骤6:配置项目名称
- 在 "Project Name" 页面上,输入你的项目名称,并点击 "Finish"。
步骤7:POM文件配置
<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.practice</groupId>
<artifactId>springboot_admin_server</artifactId>
<version>1.0-SNAPSHOT</version>
<!-- 所有的Spring boot项目都要继承这个父工程,父工程对所有的jar包进行管理 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.8</version>
</parent>
<properties>
<!-- 将Java版本设置为1.8-->
<java.version>1.8</java.version>
</properties>
<!-- 依赖 -->
<dependencies>
<!-- Web启动器 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Spring Boot Admin Server -->
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-server</artifactId>
<version>2.7.13</version>
</dependency>
</dependencies>
</project>
注意spring-boot-admin-starter-server
对jdk的版本有要求请勿使用最新的3.X版本
步骤8:创建App.java文件
-
在
src/main/java
目录下创建一个多级的目录/com/practice/
,在该目录下创建一个名为App.java
的Java类文件,并将以下代码添加到文件中:/src/main/java/com/practice/App.java
package com.practice;
import de.codecentric.boot.admin.server.config.EnableAdminServer;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@EnableAdminServer // 启用Spring Boot Admin Server
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args); // 启动Spring Boot应用程序
}
}
在这段代码中,我们创建了一个简单的Spring Boot应用程序的入口点。
我们使用了@EnableAdminServer
注解来启用Spring Boot Admin Server。这个注解告诉Spring Boot应用程序要将当前应用程序作为Admin Server来运行,以监控和管理其他Spring Boot应用程序。
步骤9:创建application.yml文件
-
在
src/main/resources
目录下,创建一个名为application.yml
的配置文件,并将以下内容添加到文件中:src/main/resources/application.yml
server:
port: 8080 # 设置应用程序的端口号
spring:
application:
name: my-Admin # 设置应用程序的名称
在这个示例的配置文件中,我们设置了应用程序的端口为8080,并将应用程序的名称设置为"my-Admin"。你可以根据你的需求添加其他配置。
完成上述步骤后,你已经成功创建了一个包含Spring Boot Admin组件的Maven项目。
接下来可以再浏览器当中输入已下的地址就能看到我们的服务生效啦。
http://localhost:8888/applications