1 概述
Spring Boot Actuator 的关键特性是在应用程序里提供众多 Web 端点,通过它们了解应用程序运行时的内部状况,比如:
Spring 应用程序上下文里配置的 Bean
Bean 在 Spring 应用程序上下文里是如何组装在一 起的
Spring Boot 的自动配置做的决策
应用程序取到的环境变量、系统属性、配置属性和命令行参数
应用程序里线程的当前状态
应用程序最近处理过的 HTTP 请求的追踪情况
各种和内存用量、垃圾回收、Web 请求以及数据源用量相关的指标……
Spring Boot Actuator 提供的端点,可以查看官方文档:
https://docs.spring.io/spring…
2 启用 Actuator
要启用 Actuator 的端点,只需在项目中引入 Actuator 的起步依赖即可
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
同时在 properties 里面设置 management.security.enabled=false
3 autoconfig
该端点用来获取应用的自动化配置报告,其中包括所有自动化配置的候选项。同时还列出了每个候选项自动化配置应用或未应用的原因。该报告内容将自动化配置内容分为两部分:
- positiveMatches 中返回的是条件匹配成功的自动化配置
- negativeMatches 中返回的是条件匹配不成功的自动化配置
4 beans
该端点用来获取应用上下文中创建的所有 Bean
5 configprops
该端点用来获取应用中配置的属性信息报告
6 env
用来获取应用所有可用的环境属性报告。包括:环境变量、JVM 属性、应用的配置配置、命令行中的参数。
7 health
用来获取应用的各类健康指标信息。springboot 自带了一些常用资源的健康指标检测器,都通过 HealthIndicator 接口实现,并且会实现自动化装配,可以查看官方目前提供的 HealthIndicators。
8 自定义 health 检测器
1:写一个类实现 HealthIndicator 接口,并注册为 bean
2:在实现方法中使用 Health 类
9 info
用来返回一些应用自定义的信息。默认返回一个空的 json 串。可以在配置文件中通过 info 前缀来设置一些属性,如:info.app.author=cc
10 metrics
用来返回当前应用的各类重要度量指标,比如:
1:系统信息:包括处理器数量 processors、运行时间 uptime 和 instance.uptime、系统平均负载 systemload.average
2:mem.*:内存概要信息,包括分配给应用的总内存数量以及当前空闲的内存数量
3:heap.*:堆内存使用情况
4:nonheap.*:非堆内存使用情况
5:threads.*:线程使用情况,包括线程数、守护线程数(daemon)、线程峰值(peak)等
6:classes.*:应用加载和卸载的类统计
7:gc.*:垃圾收集器的详细信息,包括垃圾回收次数 gc.ps_scavenge.count、垃圾回收消耗时间 gc.ps_scavenge.time、标记 - 清除算法的次数 gc.ps_marksweep.count、标记 - 清除算法的消耗时间 gc.ps_marksweep.time
8:httpsessions.*:Web 容器的会话使用情况。包括最大会话数 httpsessions.max 和活跃会话数 httpsessions.active。该度量指标信息仅在引入了嵌入式 Tomcat 作为应用容器的时候才会提供。
9:gauge.*:表示一个绝对数值的指标
10:counter.*:主要作为计数器来使用,记录了增加量和减少量
11 自定义 Counter
1:需要注入计数服务:
@Autowired
private CounterService counterService;
@Autowired
private GaugeService gaugeService;
2:直接使用计数服务来计数
counterService.increment(“abc.call.count”);
gaugeService.submit(“cc.redis.hit”, 79);
12 mappings
用来返回所有 Spring MVC 的控制器映射关系
13 dump
用来暴露程序运行中的线程信息
14 trace
用来返回基本的 HTTP 跟踪信息。默认情况下,跟踪信息的存储采用 org.springframework.boot.actuate.trace.InMemoryTraceRepository 实现的内存方式,始终保留最近的 100 条请求记录
15 shutdown
用来提供远程关闭应用的功能,比较危险,建议不要打开。
16 常见配置
1:修改端点名称
直接配置 endpoints.endpoint-id.id,例如:endpoints.beans.id=bs
这么设置过后,访问就不是:http://localhost:8080/beans,而是:
http://localhost:8080/bs
2:启用和禁用端点
设置 endpoints.endpoint-id.enabled
3:设置管理端口
management.port,- 1 表示关闭 Http 访问端口
4:设置管理地址
management.address=127.0.0.1
5:设置指定的根路径
management.context-path=/admin