SpringBoot - Actuator应用监控使用详解1(开启、暴露端点,获取监控信息)
当一个 Spring Boot 项目运行时,我们可能需要对这个项目进行实时监控,获取项目运行情况,在项目出错时能够自动报警等。
(2)如果是一个 Web 应用,还会有如下所示的端点:
(2)如果不想暴露那么多端点,可以关闭默认的配置,然后手动指定需要开启哪些端点。比如下面配置表示关闭所有端点, 只开启 info 端点:

(2)如果要暴露所有端点,则添加如下配置即可:
Spring Boot 提供了 actuator 来帮助开发者获取应用程序的实时运行数据。开发者可以选择使用 HTTP 端点或者 JMX 来管理和监控应用程序,获取应用程序的运行数据,包括健康状况、应用信息、内存使用等情况。
一、开启端点
1,开启应用监控
我们只需要编辑项目的 pom.xml 文件,添加 spring-boot-starter-actuator 依赖即可。
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>
2,默认端点介绍
(1)我们可以使用执行器(actuator)中的端点(EndPints)对应用进行监控或者于应用进行交互,Spring Boot 默认包含如下许多端点:
注意:这些端点大部分都是默认开启的,只有 shutdown 端点默认未开启。
端点 | 端点描述 | 是否默认开启 |
---|---|---|
auditevents |
显示当前应用程序的审计事件信息 | Yes |
beans |
显示应用 Spring Beans 的完整列表,即获取应用上下文中创建的所有 Bean | Yes |
caches |
显示可用缓存信息 | Yes |
conditions |
显示自动装配类的状态及及应用信息 | Yes |
configprops |
显示所有 @ConfigurationProperties 列表,即获取应用中配置的所有属性的信息报告 | Yes |
env |
显示 ConfigurableEnvironment 中的属性,它用来获取应用所有可用的环境属性报告。包括环境变量、JVM 属性、应用的配置属性、命令行中的参数。 |
Yes |
flyway |
显示 Flyway 数据库迁移信息 | Yes |
health |
显示应用的健康信息(未认证只显示status ,认证显示全部信息详情) |
Yes |
loggers |
展示并修改应用的日志配置 | Yes |
info |
显示任意的应用信息(在资源文件写 info.xxx 即可) | Yes |
liquibase |
展示 Liquibase 数据库迁移 | Yes |
metrics |
展示当前应用的 metrics 信息,即放回当前应用的各类重要度量指标,比如内存信息、线程信息、垃圾回收信息等 | Yes |
mappings |
显示所有 @RequestMapping 路径集列表,即返回所有 Spring MVC 的控制器映射关系报告 | Yes |
scheduledtasks |
显示应用程序中的计划任务 | Yes |
sessions |
允许从 Spring 会话支持的会话存储中检索和删除用户会话。 | Yes |
shutdown |
允许应用以优雅的方式关闭(默认情况下不启用) | No |
threaddump |
执行一个线程 dump | Yes |
httptrace |
显示 HTTP 跟踪信息(默认显示最后 100 个 HTTP 请求 - 响应交换) | Yes |
(2)如果是一个 Web 应用,还会有如下所示的端点:
端点 | 端点描述 | 是否默认开启 |
---|---|---|
heapdump |
返回一个 GZip 压缩的 hprof 堆转储文件 | Yes |
jolokia |
展示通过 HTTP 暴露的 JMX beans | Yes |
logfile |
返回日志文件内容 | Yes |
prometheus |
展示一个可以被 Prometheus 服务器抓取的 metrics 数据 | Yes |
3,开启、关闭端点
(1)比如 shutdown 端点默认未开启,如果需要开启,可以在 application.properties 中通过如下配置开启:management.endpoint.shutdown.enabled=true
(2)如果不想暴露那么多端点,可以关闭默认的配置,然后手动指定需要开启哪些端点。比如下面配置表示关闭所有端点, 只开启 info 端点:
management.endpoints.enabled-by-default=false management.endpoint.info.enabled=true
二、暴露端点
1,端点默认暴露情况
(1)由于有的端点包含敏感信息,因此端点启用和暴露是两码事。下面展示了端点的默认暴露情况:

(2)可以发现,在 Web 应用中,默认只有 health 和 info 这两个端点暴露。也就是说,当项目启动后只有这两个端点可以访问,比如下面我请求 health 端点查看相关信息:
注意:请求结果 "status": "UP" 表示应用在线,默认展示的 health 信息较少,后续文章会详细介绍 health 端点的其他配置。

2,自定义暴露的端点
(1)我们同样可以在 application.properties 中自定义需要暴露哪些端点。例如要暴露 mapping 和 metrics 端点,添加如下配置即可:management.endpoints.web.exposure.include=mapping,metric
(2)如果要暴露所有端点,则添加如下配置即可:
management.endpoints.web.exposure.include=*