Spring Boot Actuator(基于SpringBoot)

背景

由于微服务的出现,系统业务发展随之微型化,每个节点都是系统的组成部分,因此全方位的监控固然重要。所以我们需要一个具有非常强大的监控功能的框架支持,而Spring Boot Actuator 便能帮助我们全方位的监控应用结点!!

1、Spring Boot Actuator

1.简介

Spring Boot Actuator 是 SpringBoot 自带的一个组件,是对SpringBoot进行监控、追踪、审计、控制等,是用来帮助我们每个微服务推向生产环境时对其进行监控和管理的工具集。

我们可以使用JMX或HTTP端点来管理和监视应用程序,也可以使用可视化工具(Spring Boot Admin)来进行页面展示。

2.版本过渡(1.x——>2.x)

在这里插入图片描述

3.使用

1.引入Actuator的场景

 <!--springboot自动仲裁版本-->
 <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

2.查看监控状态

方式一:使用JMX(java管理扩展)

cmd中输入jconsole,进入java监视和管理控制台,并根据你当前springboot项目,选中当前项目启动类的全类名:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

方式二:通过http请求访问(强烈推荐)

访问 http://localhost:8080/actuator/** :
在这里插入图片描述
注:默认情况下,通过HTTP请求不能访问所有端点,只有暴露了health信息,而使用JMX可以查看所有端点信息

从SpringBoot2.6.1开始,默认不会暴露info端点
在这里插入图片描述

3.配置文件端点配置

示例:

management:
  #配置所有的端点
  endpoints:
    enabled-by-default: false #true为暴露所有端点,false为禁用所有端点
    #jmx方式配置
    jmx:
      exposure:
        include:
        exclude: 
    #web方式配置
    web:
      base-path: /maoge #修改访问路径
      exposure:
        include: '*'
        exclude:
        
  #配置单个端点
  endpoint:
    info:
      enabled: true #开启info端点


2、Actuator Endpoints

1.常用的Endpoints:

Endpoint描述
beans显示应用程序中所有Spring Bean的完整列表。
caches暴露可用的缓存。
conditions显示自动配置的所有条件信息,包括匹配或不匹配的原因。
configprops显示所有@ConfigurationProperties。
flyway显示已应用的所有Flyway数据库迁移。 需要一个或多个Flyway组件。
health显示应用程序健康状况信息。
info显示应用的基本信息
env暴露Spring的属性ConfigurableEnvironment,显示当前的环境特性
httptrace显示HTTP跟踪信息(默认情况下,最近100个HTTP请求-响应)。需要一个HttpTraceRepository
组件。
loggers显示和修改应用程序中日志的配置。
liquibase显示已应用的所有Liquibase数据库迁移。需要一个或多个Liquibase组件。
metrics显示当前应用程序的“指标”信息。
scheduledtasks显示应用程序中的计划任务。
sessions允许从Spring Session支持的会话存储中检索和删除用户会话。需要使用Spring Session的基于Servlet的Web应用程序。
shutdown使应用程序正常关闭。默认禁用。
threaddump执行线程转储

2.几个重要的Endpoint:

1.Health Endpoint

健康检查端点,我们一般用于在云平台;平台会定时的检查应用的健康状况,Health Endpoint 就可以为平台返回当前应用的一系列组件健康状况的集合(健康检查后的汇总报告),很多健康检查默认已经配置好了,比如:数据库、redis等;也可以很容易添加自定义的健康检查机制。

访问 http://localhost:8080/actuator/health 时,得到的是信息{“status”:“UP”},如果出现异常,status的值还有可能是DOWM:
在这里插入图片描述
如果想要查看health的详细信息(配置文件配置):

management:
    health:
      enabled: true
      show-details: always #开启总是显示详细信息,可显示每个模块的状态信息

2.Metrics Endpoints

Metrics端点是用来返回当前应用各类重要度量指标,比如内存信息、线程信息、垃圾回收信息等。也可以添加自定义Metrics或者扩展已有的Metrics。

访问 http://localhost:8080/actuator/metrics ,可以查看当前工程metrics端点所支持的度量指标:
在这里插入图片描述
由图可以知道metrics端点所支持的度量指标后,就可以通过 http://localhost:8080/actuator/metrics/{name} 请求获取每个度量指标的信息。比如 访问 http://localhost:8080/actuator/metrics/application.ready.time 来获取 application.ready.time对应的信息:
在这里插入图片描述

3.管理Endpoint

1.Endpoint的暴露

  • JMX方式:默认是暴露所有Endpoint
  • HTTP方式:默认是暴露health 和 info Endpoint(特别注意:从SpringBoot2.6.1开始,默认不再暴露info Endpoint
  • 如果引入了SpringSercurity,则会默认配置安全访问规则

2.Endpoint的开启&禁用

  • 默认除了shutdown,其他Endpoint都是开启的

  • 开启&禁用所有的Endpoint

    management:
      endpoints:
        #false为禁用所有端点,true为开启所有端点
        enabled-by-default: false
    
  • 开启单个Endpoint

    management:
      endpoint:
        metrics:
          enabled: true #开启metrics端点
        health:
          enabled: true #开启health端点
        info:
          enabled: true #开启infoduandian
    

3.自定义Endpoint

1.自定义health

  1. 继承AbstractHealthIndicator

    //示例:
    @Component
    public class MaogeHealthIndicator extends AbstractHealthIndicator {
        @Override
        protected void doHealthCheck(Health.Builder builder) throws Exception {
            builder.withDetail("msg","状态糟糕").down().build();
        }
    }
    
    
  2. 实现HealthIndicator接口

    //示例:
    @Component
    public class MyHealthIndicator implements HealthIndicator {
        @Override
        public Health health() {
            Health health = Health.down().withDetail("msg", "状态不错")
                                         .withDetail("hunnu", "湖南师范大学").build();
            return health;
        }
    }
    

运行结果:
请添加图片描述

2.自定义info

  1. 编写配置文件:

    info:
      appName: 毛哥test
      version: 555
    

    运行结果:
    在这里插入图片描述

  2. 实现InfoContributor接口

//示例:
@Component
public class SimpleInfoContributor implements InfoContributor {
    @Override
    public void contribute(Info.Builder builder) {
        builder.withDetail("内存","空间充足")
                .withDetail("磁盘", "空间充足").build();

    }
}

运行结果:
在这里插入图片描述

3.自定义Endpoint

  1. 实现指定的接口(已废弃,博主就不去详细展示了)

  2. 基于注解的形式实现

    • 常见的注解有:
      @Endpoint:既支持JMX又支持HTTP
      @WebEndpoint:只支持HTTP
      @JmxEndpoint:只支持JMX

    • 其中 @ReadOperation 这个注解相当于restful api的GET操作,@WriteOperation 相当于restful api的Post操作,@DeleteOperation 相当于restful api的DELETE操作。使用 @Selector注解进行传参

    • 在类上标注**@Endpoint**,然后对应类的方法上标注@ReadOperation、@WriteOperation或@DeleteOperation,并且方法通过JMX自动开启,并且在Web应用程序中也可以通过HTTP方式进行访问。

    示例:

    //自定义一个端点maoge
    @Endpoint(id = "maoge")
    @Component
    public class SimpleEndpoint {
    
        @ReadOperation
        public String read(){
            return "hello 同学";
        }
    
        @WriteOperation
        public void write(){
            System.out.println("同学们,加油!");
        }
    }
    

    运行结果:
    在这里插入图片描述

3、Spring Boot Admin(可视化工具)

查看下篇博客SpringBootAdmin(基于SpringBoot2)

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

springboot大神

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值