【丁雪丰(译)】SpringBoot实战第七节:深入Actuator《读后感》

前言

今天看完本章内容,收益颇多,也顺便了查阅了丁雪丰老师的个人的工作履历,是我学习的楷模,大神级别的人物,之前也学过丁老师的mysql相关的课程,感觉讲述的非常棒,言归正传,正如书中介绍样的,我们想弄清楚运行的应用程序里正在发生什么,这是一件很困难的事。springboot 的Actuator为我们打开了一扇大门,下面我们开始了解本章知识点,及展示一下我的demo


书中内容:

揭秘Actuator的端点

SpringBoot Actuator的关键特性是在应用程序里提供众多的Web端点,通过他们了解应用程序运行时的内部状况,

  • 查看Actuator的端点
HTTP方法 路径 描述
GET /autoconfig 提供了一份自动配置报告,记录哪些自动配置条件通过了,哪些没有通过
GET /configprops 描述配置属性(包含默认值)如何注入Bean
GET /beans 描述应用程序上下文里全部的Bean,以及他们的关系
GET /dump 获取线程活动的快照
GET /env 获取全部环境属性
GET /env{name} 根据名称获取特定的环境属性值
GET /health 报告应用程序的健康指标,这些值由HealthIndicator的实现类提供
GET /info 获取应用程序的定制信息,这些信息由info打头的属性提供
GET /mappings 描述全部的URI的路径,以及它们和控制器(包含Actuator端点)的映射关系
GET /metrics 报告各种应用程序度量的信息,比如内存用量和HTTP请求计数
GET /metrics/{name} 报告指定名称的引用程序度量值
POST /shutdown 关闭应用程序,要求endpoints.shutdown.enabled设置为true
GET /trace 提供基本的HTTP请求跟踪信息(时间戳,HTTP头等)

以上表格是作者帮我们分析好了,通过表格可以一目了然的查看到各个方法的作用,同时如果我们要使用以上的信息,我们需要在maven项目中添加以下信息:

  <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

如果我们的项目配置如上的信息,开始启动springboot项目,我们查看一些配置:通过配置完成以后我们可以监控我们不同的信息例如可以查看:

  • 获取Bean装配的报告
  • 同时也可以获取详解自动配置
  • 查看配置属性
  • 生成端点到控制器的映射
    各种参数的配置,学完本章内容以后我们总体感觉本章知识点讲解可以配置的参数,方便我们日后在预上线或者生产时通过多维度去监控我们bean的创建于销毁,也可以跟我们项目其他运维工具整合,达到监控我们项目唯一性的。我个人认为本章可以值得我们大家去学习,展示一下书中的demo:
  • 插入自定义健康指示器:
package com.example.demo;

import org.springframework.boot.actuate.health.Health;
import org.springframework.boot.actuate.health.HealthIndicator;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestTemplate;

/**
 * @ClassName : AmazonHealth
 * @Description :
 * @Author : Zhaocunwei
 * @Date: 2020-04-30 19:59
 */
@Component
public class AmazonHealth  implements HealthIndicator {

    @Override
    public Health health() {
        RestTemplate restTemplate = new RestTemplate();
        restTemplate.getForObject("http:www.baidu.com",String.class);
        return Health.up().build();
    }
}

我们上面介绍书中说配置参数如何如何的好,同时书中也给我们介绍了,如何保护我们这些信息,保护Actuator端点,因为很多端点发布的信息都可能涉及敏感数据,还有一些端点是比较危险的,可以用来关闭应用程序,这个观点,无论是本章内容提到了,在官方文档和其他社区也都提到过,所以我们大家在开发时可以随便的玩一下,但是到了生产,要特别的慎重一下,涉及到安全问题,所以大家一定要慎重,同时书中已经给我们详细的介绍了,如何去解决当前我们后怕的问题,首先我们大家要明白一点就是Actuator的端点保护可以用和其他URL路径一样的方式,使用springsecurity,在springboot应用程序中,这意味着将Security起步依赖作为构建依赖加入,然后让安全相关的自动配置来保护应用程序,查看下面的demo,

 @Override
    protected void configure(HttpSecurity http) throws Exception{
        http.authorizeRequests()
                .antMatchers("/").access("hasRole('READER')")
                .antMatchers("/shutdown").access("hasRole('ADMIN')")
                .andtMatchers("/**").permitAll()
                .and()
                .formLogin()
                .loginPage("/login")
                .failureUrl("/login?error=true");
    }

总结

通过本章的学习,书中给我们详细的介绍了Actuator的web端点,各种参数同时我也了解到Actuator的Web端点—通过HTTP发布运行时细节信息的REST端点,书中告诉我们这些端点包括查看Spring应用程序上下文里所有的Bean,查看自动配置决策,查看SpringMVC映射,查看线程活动,查看应用程序健康信息,还有多种度量,指标和计数器,总体感觉学完本章感觉还可以,值得我们大家买这本书,细细的去品尝其中的知识点。

你可能感兴趣的:(Spring,#,Spring,Boot实战)