SpringBoot学习笔记3 - Actuator监控器

tech2022-08-31  122

1、说明


Actuator执行器是 Spring Boot 提供的一个可插拔模块,用于对工程进行监控。其通过不同的监控终端实现不同的监控功能。其功能与 Dubbo 的监控中心类似,不同的是,Dubbo 的监控中心是需要专门部署的,而 Spring Boot 的 Actuator 是存在于每一个工程,实现对每一个工程进行监控。

2、导入依赖


在 pom.xml 文件的<dependencies>标签中添加以下依赖:

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>

3、 Actuator默认监控终端


在pom.xml中配置 Actuator 监控器依赖后,启动项目,我们会发现启动日志中多了一些内容:

日志中提到:根路径/actuator下暴露了两个终端,是Actuator监控默认暴露的两个监控终端:health、info:

health监控终端可以检查各个组件的健康状态,例如调用接口时,DB组件会返回OK。

info终端内容可以在application.yml文件中添加如下属性:

... info: author: name: blairscott age: 18 projInfo: groupId: @project.groupId@ # 从pom.xml中获取属性,获取机制如下图。 artifactId: @project.artifactId@ version: @project.version@

再次访问info监控终端:

4、Actuator监控器配置


4.1、修改actuator监控器端口与根目录

我们可以在application.yml文件中添加如下属性:

... management: server: port: 9090 # 指定actuator监听的端口号 servlet: context-path: /actuatorDemo # 指定actuator监控器上下问路径 endpoints: web: base-path: /act # 指定actuator监控终端的基本路径

重启服务后,启动日志显示上下:

最终显示结果如下:

4.2、开启默认关闭的Actuator节点

前文说过,Actuator监控器默认只开启两个监控终端:info终端与health终端。然而Actuator不仅仅这两个监控终端:

Http方法监控终端功能描述GET/autoconfig提供了一份自动配置报告,记录哪些自动配置条件通过了,哪些没通过。GET/configprops描述配置属性(包含默认值)如何注入 Bean。GET/beans描述应用程序上下文里全部的 Bean,以及它们的关系。GET/dump获取线程活动的快照。GET/env获取全部环境属性。GET/env/{name}根据名称获取特定的环境属性值。GET/health报告应用程序的健康指标,这些值由 HealthIndicator 的实现类提供。GET/info获取应用程序的定制信息,这些信息由 info 打头的属性提供。GET/mappings描述全部的 URI 路径,以及它们和控制器(包含 Actuator端点)的映射关系。GET/metrics报告各种应用程序度量信息,比如内存用量和 HTTP 请求计数。GET/metrics/{name}报告指定名称的应用程序度量值。POST/shutdown关闭应用程序,要求 endpoints.shutdown.enabled 设置为 true。GET/trace提供基本的 HTTP 请求跟踪信息(时间戳、HTTP 头等)。

除了默认打开的两个节点,其他节点在未打开的时候,无法进行访问,如我们在为设置的情况下访问env终端:

显然,我们不能获取env终端提供的信息,那么如何开启这些默认关闭的终端呢?同样,也是在application.yml文件中配置:

... management: ... endpoints: web: ... exposure: include: "*" # * 表示开启所有终端,然而yml文件中等元素不能以 * 作为开头,所以应该写成 "*"。

启动项目,在启动日志中我们可以发现,Actuator监控暴露的终端数量由原来的2个变成了现在的13个:

再次访问默认关闭的终端,发现案例中,env终端获取到了大量的信息,说明该监控终端开启成功:

当然,我们也可以选择性地开放部分监控终端,或者在开启所有终端的情况下(即使用*的情况)屏蔽部分终端:(此处不再截图说明)

... management: ... endpoints: web: ... exposure: include: ["env", "beans"] # 选择性地开放 env 和 beans 监控终端。 # 写法1 ... management: ... endpoints: web: ... exposure: include: "*" exclude: ["env", "health"] # 在 "*" 的基础上屏蔽 env 和 health 监控终端。 # 写法2 ... management: ... endpoints: web: ... exposure: include: "*" exclude: # 在 "*" 的基础上屏蔽 env 和 health 监控终端。 - env - health
最新回复(0)