当前位置: > > > SpringBoot - Actuator应用监控使用详解1(开启、暴露端点,获取监控信息)

SpringBoot - Actuator应用监控使用详解1(开启、暴露端点,获取监控信息)

    当一个 Spring Boot 项目运行时,我们可能需要对这个项目进行实时监控,获取项目运行情况,在项目出错时能够自动报警等。
    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=*
评论0