SpringBoot之Actuator基本使用
- 引入
- 分类
- 常用接口含义
- health
- beans
- conditions
- heapdump
- mappings
- threaddump
- loggers
- metrics
引入
<!-- actuator start-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!-- actuator end-->
启动SpringBoot项目,浏览器访问
actuator
好了,完事,恭喜你已经完成了actuator的基本启动配置,但是这里面的url点开除了health里面是UP,其他基本没啥用啊!!! 就这?
好,下面开启完整版,在application.yml加入配置
management:
endpoints:
web:
exposure:
include: "*"
如果只需要部分的话,只开启beans,trace,后面出于安全考虑可以设置拦截器,只在线下环境开启,校验用户信息等
management:
endpoints:
web:
exposure:
exclude: beans,trace
如果想更换url,可以加上下面配置
management:
endpoints:
web:
base-path: /healthcheck #记得要加上/
重新启动
下面详细介绍各个页面配置
分类
Actuator 监控分成两类:原生端点和用户自定义端点;自定义端点主要是指扩展性,用户可以根据自己的实际应用,定义一些比较关心的指标,在运行期进行监控。
原生端点是在应用程序里提供众多 Web 接口,通过它们了解应用程序运行时的内部状况。原生端点又可以分成三类:
- 应用配置类 :可以查看应用在运行期的静态信息:例如自动配置信息、加载的 springbean 信息、yml 文件配置信息、环境信息、请求映射信息;
- 度量指标类 :主要是运行期的动态信息,例如堆栈、请求连、一些健康指标、metrics 信息等;
- 操作控制类 :主要是指 shutdown,用户可以发送一个请求将应用的监控功能关闭。
常用接口含义
GET | /auditevents | 显示应用暴露的审计事件 (比如认证进入、订单失败) |
---|---|---|
GET | /beans | 描述应用程序上下文里全部的 Bean,以及它们的关系 |
GET | /conditions | 就是 /autoconfig ,提供一份自动配置生效的条件情况,记录哪些自动配置条件通过了,哪些没通过 |
GET | /configprops | 描述配置属性(包含默认值)如何注入Bean |
GET | /env | 获取全部环境属性 |
GET | /env/{name} | 根据名称获取特定的环境属性值 |
GET | /flyway | 提供一份 Flyway 数据库迁移信息 |
GET | /liquidbase | 显示Liquibase 数据库迁移的纤细信息 |
GET | /health | 报告应用程序的健康指标,这些值由 HealthIndicator 的实现类提供 |
GET | /heapdump | dump 一份应用的 JVM 堆信息 |
GET | /httptrace | 显示HTTP足迹,最近100个HTTP request/repsponse |
GET | /info | 获取应用程序的定制信息,这些信息由info打头的属性提供 |
GET | /logfile | 返回log file中的内容(如果 logging.file 或者 logging.path 被设置) |
GET | /loggers | 显示和修改配置的loggers |
GET | /metrics | 报告各种应用程序度量信息,比如内存用量和HTTP请求计数 |
GET | /metrics/{name} | 报告指定名称的应用程序度量值 |
GET | /scheduledtasks | 展示应用中的定时任务信息 |
GET | /sessions | 如果我们使用了 Spring Session 展示应用中的 HTTP sessions 信息 |
POST | /shutdown | 关闭应用程序,要求endpoints.shutdown.enabled设置为true |
GET | /mappings | 描述全部的 URI路径,以及它们和控制器(包含Actuator端点)的映射关系 |
GET | /threaddump | 获取线程活动的快照 |
health
health 主要用来检查应用的运行状态,这是我们使用最高频的一个监控点。通常使用此接口提醒我们应用实例的运行状态,以及应用不”健康“的原因,比如数据库连接、磁盘空间不够等。
但是这个只比较笼统的显示服务的状态,详细的信息需要配置
management:
endpoint:
health:
show-details: always
beans
根据示例就可以看出,展示了 bean 的别名、类型、是否单例、类的地址、依赖等信息。
访问:http://localhost:8080/actuator/beans返回部分信息如下:
conditions
Spring Boot 的自动配置功能非常便利,但有时候也意味着出问题比较难找出具体的原因。使用 conditions 可以在应用运行时查看代码了某个配置在什么条件下生效,或者某个自动配置为什么没有生效。
访问:http://localhost:8080/actuator/conditions返回部分信息如下:
heapdump
访问:http://localhost:8080/actuator/heapdump会自动生成一个 Jvm 的堆文件 heapdump,我们可以使用 JDK 自带的 Jvm 监控工具 VisualVM 打开此文件查看内存快照。类似如下图:
mappings
描述全部的 URI 路径,以及它们和控制器的映射关系
访问:http://localhost:8080/actuator/mappings返回部分信息如下:
threaddump
/threaddump 接口会生成当前线程活动的快照。这个功能非常好,方便我们在日常定位问题的时候查看线程的情况。 主要展示了线程名、线程ID、线程的状态、是否等待锁资源等信息。
访问:http://localhost:8080/actuator/threaddump返回部分信息如下:
loggers
访问 http://localhost:8080/actuator/loggers 可以查看当前应用的日志级别等信息:
metrics
metrics 是一个非常重要的监控端点,其监控内容覆盖了 JVM 内存、堆、类加载、处理器和 tomcat 容器等一些重要指标:
可以看到这里面包含了非常多的指标,任意访问一个指标就可以查看对应的指标信息: