springBoot学习笔记-Actuator入门指南

159 阅读3分钟

前言

让时光积累真正的价值

在尝试搭建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 是什么东西,有什么用?

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提供的端点按照作用来分类,可以分为三种类型:

  1. 应用配置类:获取应用使用的配置信息、环境变量、自动化配置等与spring Boot应用相关的配置类信息。
  2. 度量指标类:获取应用运行过程中的监控指标,如内存信息,线程池状态、HTTP请求统计等
  3. 操作控制类:提供了对应用关闭的等功能。

除了官方提供的接口,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增加拦截规则来限制接口访问,来解决这个问题。