当前位置:   article > 正文

玩转 Spring Boot 集成篇(Actuator、Spring Boot Admin)

springboot actuator和admin 代码

系统上线后,如果离开了监控,就没法辨别一个系统是不是在正常提供服务,就好似系统在线上疯狂裸奔。

关于监控的轮子以及实现思想,曾经也多次分享过。

《如何做监控?Google SRE 解密

在监控落地的路上,助你一臂之力》

这些技术轮子,让监控落地成为现实!》

监控实战Prometheus+Grafana》

感兴趣的可以浏览历史关于监控的文章,本文将重点分享 Spring Boot 的监控模块。

1. Spring Boot 集成 Actuator

Actuator 是 Spring Boot 中一个用来实现系统健康检测的模块。

Actuator 提供一个 Restful 的 API 接口,可以将系统运行过程中的磁盘空间、线程数以及程序连接的数据库情况通过 JSON 返回,可以结合预警、监控模块进行实时系统监控。

1.1. 引入依赖

  1. <!-- 系统健康检测模块依赖 -->
  2. <dependency>
  3. <groupId>org.springframework.boot</groupId>
  4. <artifactId>spring-boot-starter-actuator</artifactId>
  5. </dependency>

加入依赖之后,会下载依赖包,所以需要让子弹飞一会儿,等抽根烟的功夫,再运行程序。

1.2. 体验功能

直接运行 Spring Boot main 函数,程序运行后,控制台输出如下:

31ff3a2762251fa862818b31fe09d71c.png

若想自定义个性化 banner、修改内嵌容器以及修改默认端口,见入门篇,不过不影响本篇学习。此刻,重点关注 Exposing 1 endpoint(s) beneath base path '/actuator' 这句,说明监控模块已经集成进来了。

浏览器访问http://localhost:8888/actuator观之,查看默认提供的 endpoint。

7576843ddc4d2359d88e25313c7ebed0.png

通过上面提供的 /health 接口,可以判断应用服务是否健康。访问 http://localhost:8888/actuator/health 如下:

29d6b1f2a3121d1947c98b1d2f720c37.png

当然,Actuator 提供的功能远远不止这些,只是出于安全考虑,其余的 endpoint 默认被禁用了,如何开启呢?只需在 application.properties 文件中加入如下配置即可开启 HTTP 监控。

  1. # 开启所有的端点
  2. management.endpoints.web.exposure.include=*

再次访问,监控项会多很多,例如 env、metrics 等,感兴趣的可以逐个访问体验。

至此,Actuator 的监控就开启完毕。不过回头捋捋,面对如此庞大的监控功能,却只简单做了如下两步配置,便轻松开启,可谓快哉。

  • 引入 spring-boot-starter-actuator 依赖

  • 修改 application.properties 配置,开启所有的监控端点功能

对于 Actuator 的监控,本次了解到这里,接下来看看 Spring Boot Admin 监控。

2. 集成 Spring Boot Admin

Spring Boot Admin 用于监控基于 Spring Boot 开发的应用,它是在 Spring Boot Actuator 的基础上提供更简洁的可视化 WEB UI.

2.1. 创建监控服务端

创建一个 monitor 项目,用于采集应用的监控信息。

2.1.1. 引入依赖

在 monitor 项目的 pom.xml 文件中引入 spring-boot-admin-starter-server 依赖。

  1. <dependency>
  2. <groupId>de.codecentric</groupId>
  3. <artifactId>spring-boot-admin-starter-server</artifactId>
  4. <version>2.6.2</version>
  5. </dependency>
  6. <dependency>
  7. <groupId>org.springframework.boot</groupId>
  8. <artifactId>spring-boot-starter-web</artifactId>
  9. </dependency>

2.1.2. 编写监控服务端

  1. package com.example.monitor;
  2. import de.codecentric.boot.admin.server.config.EnableAdminServer;
  3. import org.springframework.boot.SpringApplication;
  4. import org.springframework.boot.autoconfigure.SpringBootApplication;
  5. @EnableAdminServer
  6. @SpringBootApplication
  7. public class MonitorApplication {
  8. public static void main(String[] args) {
  9. SpringApplication.run(MonitorApplication.class, args);
  10. }
  11. }

此时使用 @EnableAdminServer 注解启动 Admin 监控服务。

2.1.3. 启动监控服务端

运行 MonitorApplication,控制台输出如下。

dec147cf5dfdf4c3cc4d91022720e9c8.png

2.2. 客户端应用

2.2.1. 引入依赖

  1. <!-- 引入监控客户端依赖-->
  2. <dependency>
  3. <groupId>de.codecentric</groupId>
  4. <artifactId>spring-boot-admin-starter-client</artifactId>
  5. <version>2.6.2</version>
  6. </dependency>

2.2.2. 添加配置

在 application.properties文件中加入如下配置。

  1. # 应用程序名称
  2. spring.application.name=App_Demo
  3. # 开启所有的端点
  4. management.endpoints.web.exposure.include=*
  5. # 配置监控Server的服务地址
  6. spring.boot.admin.client.url=http://localhost:8080

2.2.3. 运行客户端应用

a25d8f2259fcb07de2ce854d71a030cc.png

2.3. 体验监控

浏览器访问 http://localhost:8080,效果如下。

3e98b530a522aa4ce11b391f24477a5c.png

6edebf884e957ebc232db21eeec71ec7.png

3. 例行回顾

本文是 Spring Boot 项目集成监控篇的讲解,主要分享了如下部分:

3ca2e6a682c2b67b5123913f4bc29578.png

玩转 Spring Boot 集成监控篇,就写到这里,希望大家能够喜欢。

一起聊技术、谈业务、喷架构,少走弯路,不踩大坑,会持续输出更多精彩分享,欢迎关注,敬请期待!

历史系列文章:

玩转 Spring Boot 入门篇

玩转 Spring Boot 集成篇(MySQL、Druid、HikariCP)

玩转 Spring Boot 集成篇(MyBatis、JPA、事务支持)

玩转 Spring Boot 集成篇(Redis)

2665a5953f7274e42ebcd73142824fee.png

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/101930
推荐阅读
相关标签
  

闽ICP备14008679号