前言
让时光积累真正的价值
在尝试搭建spring cloud config 时,需要使用到Actuator 。我对Actuator的内容有点迷,我收集了一些相关的资料,形成了这一篇笔记。这里的内容仅仅为了初步了解spring Boot actuator。
这里使用的spring Boot 版本为2.2.2.RELEASE
参考文章:
Spring Boot Actuator详解与深入应用(二):Actuator 2.x
什么是spring Boot actuator
spring Boot actuator 是什么东西,有什么用?
spring boot actuator是暴露应用自身信息的模块。actuator提供了应用的监控和管理功能(监控、健康状态、指标收集和HTTP跟踪),这些功能可以提供JMX或者HTTP来访问。
actuator提供了一套开箱即用的服务监控功能,用户可以专心实现自己的监控逻辑,这样大大减小的监控系统的开发难度。
通过这些接口,Actuator可以和外部管理系统集成,提供图表、分析和警报等功能。
端点(endpoints)
什么是端点?
我并没有找到有关端点相关的定义,下面是我自己的理解。
actuator可以响应用户的数据请求、程序控制等操作。而在背后处理这些逻辑的业务单元就是端点。
常用的端点:
在spring Boot Actuaor中可以监控很多应用的信息,下面是常用的的端点:
路径 | 描述 |
---|---|
/autoconfig | 自动配置报告,记录哪些自动配置条件是否通过 |
/configprops | 描述配置属性(包括默认值)如何注入的 |
/beans | 描述上下文所有bean,以及它们之间的关系 |
/dump | 获取线程活动快照 |
/env/{name} | 获取特点环境属性 |
/health | 应用程序健康指标,由HealthIndicator的实现类提供 |
/info | 获取应用程序定制信息,这些信息有info打头的属性提供 |
/mappings | 描述全部URL路径,及它们和控制器(包括Actuator端点)的映射关系 |
/metrics | 报告各种应用程序度量信息,比如内存用量和http请求计算 |
actuator提供的端点按照作用来分类,可以分为三种类型:
- 应用配置类:获取应用使用的配置信息、环境变量、自动化配置等与spring Boot应用相关的配置类信息。
- 度量指标类:获取应用运行过程中的监控指标,如内存信息,线程池状态、HTTP请求统计等
- 操作控制类:提供了对应用关闭的等功能。
除了官方提供的接口,Actuator支持用户自定义接口。
在项目中使用Actuator
Actuator的依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
Actuator 的配置项:
端点开放
在Actuator2.X的HTTP模块中只开放了health、info的端点。用户可以自定义开放的端点。下面的例子是开放除了env和beans以外的所有端点。
management:
endpoints:
web:
exposure:
include: "*"
exclude: env,deans
读取Actuator端点提供信息
在默认的情况下,Actuator添加的的web接口都会放在/actuator的路径下。举个例子,我们的web的首页是localhost:8080,要访问mappering(所有接口的信息),在浏览器上输入localhost:8080/actuator/mappings就可以获取端点数据了。
其他内容
如果actuator的数据可以直接可以被访问到,就会有安全隐患。我们可以通过在shiro或者spring security增加拦截规则来限制接口访问,来解决这个问题。