欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Spring Boot 2.x实战24 - 深入Spring Boot 9 - Spring Boot Actuator(常用端点)

程序员文章站 2022-07-15 10:08:44
...

8 Spring Boot Actuator

Spring Boot Actuator为我们提供了生产环境下所需要的一些特性。我们使用Spring Boot Actuator监控我们应用的行为。

我们新建一个应用来做本节的演示:

Grouptop.wisely

Artifactlearning-spring-boot-actuator

DependenciesSpring Boot ActuatorSpring Web StarterLombok

具体依赖为:

dependencies {
   implementation 'org.springframework.boot:spring-boot-starter-actuator'
   implementation 'org.springframework.boot:spring-boot-starter-web'
   compileOnly 'org.projectlombok:lombok'
   annotationProcessor 'org.projectlombok:lombok'
	//...
}

8.1 常用端点

8.1.1 actuator

/actuator是所有端点的前缀,我们访问http://localhost:8080/actuator,显示所有地址已暴露且功能已经开启的端点访问信息。
Spring Boot 2.x实战24 - 深入Spring Boot 9 - Spring Boot Actuator(常用端点)

8.1.2 health

/actuator/health显示应用的整体健康情况,访问http://localhost:8080/actuator/health:
Spring Boot 2.x实战24 - 深入Spring Boot 9 - Spring Boot Actuator(常用端点)
上面显示是整体的健康信息,如看到明细可在application.properties中设置:

management.endpoint.health.show-details=always

重启应用后,访问http://localhost:8080/actuator/health:
Spring Boot 2.x实战24 - 深入Spring Boot 9 - Spring Boot Actuator(常用端点)
本例中,没有其他的组件,显示的只有磁盘空间的健康情况,我们可以通过details下的健康名称(如:diskSpace)来专门查看相关信息,我们访问http://localhost:8080/actuator/health/diskSpace:
Spring Boot 2.x实战24 - 深入Spring Boot 9 - Spring Boot Actuator(常用端点)

8.1.3 info

/actuator/info显示应用信息,我们在application.properties中添加应用信息,我们可以使用info.*来设置任意的信息:

info.app.name=learning spring boot actuator
info.app.author=wang yun fei
info.some=some info

重启应用,访问http://localhost:8080/actuator/info:
Spring Boot 2.x实战24 - 深入Spring Boot 9 - Spring Boot Actuator(常用端点)

8.1.4 shutdown

/actuator/shutdown用来优雅的关闭Spring Boot应用;该节点默认路径没有暴露且功能没有开启:

management.endpoints.web.exposure.include=shutdown,health,info # 1
management.endpoint.shutdown.enabled=true # 2
  1. 配置需要暴露的端点,多个端点暴露用“,”隔开;
  2. 开启shutdown端点,端点的开启和关闭可以通过management.endpoint.端点名.enabled来设置。

通过Postman,用Post方法调用http://localhost:8080/shutdown,可优雅关闭当前应用:
Spring Boot 2.x实战24 - 深入Spring Boot 9 - Spring Boot Actuator(常用端点)

8.1.5 env

/actuator/env获得应用的所有Environment信息,包含Profile、系统环境变量以及应用的properties信息。

首先设置暴露该端点:

management.endpoints.web.exposure.include=shutdown,health,info,env

重启应用访问:http://localhost:8080/actuator/env
Spring Boot 2.x实战24 - 深入Spring Boot 9 - Spring Boot Actuator(常用端点)

8.1.6 beans

/actuator/beans显示当前应用的所有bean,我们也先暴露该端点:

management.endpoints.web.exposure.include=shutdown,health,info,env,beans

重启应用,访问http://localhost:8080/actuator/beans:
Spring Boot 2.x实战24 - 深入Spring Boot 9 - Spring Boot Actuator(常用端点)

8.1.7 conditions

/actuator/conditions显示应用的自动配置报告,包含匹配的自动配置类(positiveMatches)、不匹配的自动配置类(negativeMatches)和非条件配置类(unconditionalClasses)。同样暴露端点:

management.endpoints.web.exposure.include=shutdown,health,info,env,beans,conditions

重启应用,访问http://localhost:8080/actuator/conditions:
Spring Boot 2.x实战24 - 深入Spring Boot 9 - Spring Boot Actuator(常用端点)

8.1.8 httptrace

/actuator/httptrace显示HTTP请求的追踪信息,设置暴露大量的端点比较麻烦,我们可以用“*****”表示所有:

management.endpoints.web.exposure.include=*

从Spring 2.2.x开始,使用该端点需定制实现HttpTraceRepository的Bean来实现存储追踪和查询信息后才能启用:

@Component
public class MyHttpTraceRepository implements HttpTraceRepository {
    private static List< HttpTrace> traceList = new ArrayList<>();
    @Override
    public List<HttpTrace> findAll() {
        return traceList;
    }

    @Override
    public void add(HttpTrace trace) {
        traceList.add(trace);
    }
}

显然存储在内存里是不合适的,读者在学习数据访问相关技术后可以将追踪信息存储在合适的数据库中。

启动应用访问http://localhost:8080/actuator/httptrace:
Spring Boot 2.x实战24 - 深入Spring Boot 9 - Spring Boot Actuator(常用端点)

8.1.9 configprops

/actuator/configprops列出所有注解@ConfigurationProperties的bean,访问http://localhost:8080/actuator/configprops:
Spring Boot 2.x实战24 - 深入Spring Boot 9 - Spring Boot Actuator(常用端点)

8.1.10 threaddump

/actuator/threaddump显示运行应用的Java虚拟机线程信息,访问http://localhost:8080/actuator/threaddump
Spring Boot 2.x实战24 - 深入Spring Boot 9 - Spring Boot Actuator(常用端点)

8.1.11 loggers

/actuator/loggers显示应用中所有的logger,访问http://localhost:8080/actuator/loggers:
Spring Boot 2.x实战24 - 深入Spring Boot 9 - Spring Boot Actuator(常用端点)
访问某一个logger可通过包名称来访问,如我们设置一下logger:

logging.level.top.wisely=debug

我们可以访问http://localhost:8080/actuator/loggers/top.wisely:
Spring Boot 2.x实战24 - 深入Spring Boot 9 - Spring Boot Actuator(常用端点)

8.1.12 mappings

/actuator/mappings显示应用中所有的@RequestMapping,我们定义一个请求映射:

@SpringBootApplication
@RestController
public class LearningSpringBootActuatorApplication {

	@GetMapping("/")
	public String hello(){
		return "Hello Spring Boot Actuator";
	}

	public static void main(String[] args) {
		SpringApplication.run(LearningSpringBootActuatorApplication.class, args);
	}

}

启动应用访问http://localhost:8080/actuator/mappings:
Spring Boot 2.x实战24 - 深入Spring Boot 9 - Spring Boot Actuator(常用端点)

8.1.13 metrics

/actuator/metrics显示当前应用的指标信息,包含内存使用情况等;访问http://localhost:8080/actuator/metrics:
Spring Boot 2.x实战24 - 深入Spring Boot 9 - Spring Boot Actuator(常用端点)

8.1.14 修改端点地址
management.endpoints.web.base-path=/ #1
management.endpoints.web.path-mapping.health=check-health #2
  1. 将Actuator前缀由/actuator修改为/

  2. 将健康端点的路径由/health修改为/check-health,若需要修改其他端点的路径可使用:

    management.endpoints.web.path-mapping.端点名=路径
    

此例中我们访问健康端点的地址由http://localhost:8080/actuator/health修改为了http://localhost:8080/check-health。
Spring Boot 2.x实战24 - 深入Spring Boot 9 - Spring Boot Actuator(常用端点)

新书推荐:

我的新书《从企业级开发到云原生微服务:Spring Boot 实战》已出版,内容涵盖了丰富Spring Boot开发的相关知识
购买地址:https://item.jd.com/12760084.html
Spring Boot 2.x实战24 - 深入Spring Boot 9 - Spring Boot Actuator(常用端点)

主要包含目录有:

第一章 初识Spring Boot(快速领略Spring Boot的美丽)
第二章 开发必备工具(对常用开发工具进行介绍:包含IntelliJ IDEA、Gradle、Lombok、Docker等)
第三章 函数式编程
第四章 Spring 5.x基础(以Spring 5.2.x为基础)
第五章 深入Spring Boot(以Spring Boot 2.2.x为基础)
第六章 Spring Web MVC
第七章 数据访问(包含Spring Data JPA、Spring Data Elasticsearch和数据缓存)
第八章 安全控制(包含Spring Security和OAuth2)
第九章 响应式编程(包含Project Reactor、Spring WebFlux、Reactive NoSQL、R2DBC、Reactive Spring Security)
第十章 事件驱动(包含JMS、RabbitMQ、Kafka、Websocket、RSocket)
第11章 系统集成和屁股里(包含Spring Integration和Spring Batch)
第12章 Spring Cloud与微服务
第13章 Kubernetes与微服务(包含Kubernetes、Helm、Jenkins、Istio)
多谢大家支持。