前言
今天看完本章内容,收益颇多,也顺便了查阅了丁雪丰老师的个人的工作履历,是我学习的楷模,大神级别的人物,之前也学过丁老师的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映射,查看线程活动,查看应用程序健康信息,还有多种度量,指标和计数器,总体感觉学完本章感觉还可以,值得我们大家买这本书,细细的去品尝其中的知识点。