系统上线后,如果离开了监控,就没法辨别一个系统是不是在正常提供服务,就好似系统在线上疯狂裸奔。
关于监控的轮子以及实现思想,曾经也多次分享过。
《在监控落地的路上,助你一臂之力》
《这些技术轮子,让监控落地成为现实!》
《监控实战Prometheus+Grafana》
感兴趣的可以浏览历史关于监控的文章,本文将重点分享 Spring Boot 的监控模块。
1. Spring Boot 集成 Actuator
Actuator 是 Spring Boot 中一个用来实现系统健康检测的模块。 Actuator 提供一个 Restful 的 API 接口,可以将系统运行过程中的磁盘空间、线程数以及程序连接的数据库情况通过 JSON 返回,可以结合预警、监控模块进行实时系统监控。
1.1. 引入依赖
<!-- 系统健康检测模块依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
加入依赖之后,会下载依赖包,所以需要让子弹飞一会儿,等抽根烟的功夫,再运行程序。
1.2. 体验功能
直接运行 Spring Boot main 函数,程序运行后,控制台输出如下:
若想自定义个性化 banner、修改内嵌容器以及修改默认端口,见入门篇,不过不影响本篇学习。此刻,重点关注 Exposing 1 endpoint(s) beneath base path '/actuator' 这句,说明监控模块已经集成进来了。
浏览器访问http://localhost:8888/actuator观之,查看默认提供的 endpoint。
通过上面提供的 /health 接口,可以判断应用服务是否健康。访问 http://localhost:8888/actuator/health 如下:
当然,Actuator 提供的功能远远不止这些,只是出于安全考虑,其余的 endpoint 默认被禁用了,如何开启呢?只需在 application.properties 文件中加入如下配置即可开启 HTTP 监控。
# 开启所有的端点
management.endpoints.web.exposure.include=*
再次访问,监控项会多很多,例如 env、metrics 等,感兴趣的可以逐个访问体验。
至此,Actuator 的监控就开启完毕。不过回头捋捋,面对如此庞大的监控功能,却只简单做了如下两步配置,便轻松开启,可谓快哉。
对于 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 依赖。
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-server</artifactId>
<version>2.6.2</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
2.1.2. 编写监控服务端
package com.example.monitor;
import de.codecentric.boot.admin.server.config.EnableAdminServer;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@EnableAdminServer
@SpringBootApplication
public class MonitorApplication {
public static void main(String[] args) {
SpringApplication.run(MonitorApplication.class, args);
}
}
此时使用 @EnableAdminServer 注解启动 Admin 监控服务。
2.1.3. 启动监控服务端
运行 MonitorApplication,控制台输出如下。
2.2. 客户端应用
2.2.1. 引入依赖
<!-- 引入监控客户端依赖-->
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-client</artifactId>
<version>2.6.2</version>
</dependency>
2.2.2. 添加配置
在 application.properties文件中加入如下配置。
# 应用程序名称
spring.application.name=App_Demo
# 开启所有的端点
management.endpoints.web.exposure.include=*
# 配置监控Server的服务地址
spring.boot.admin.client.url=http://localhost:8080
2.2.3. 运行客户端应用
2.3. 体验监控
浏览器访问 http://localhost:8080,效果如下。
3. 例行回顾
本文是 Spring Boot 项目集成监控篇的讲解,主要分享了如下部分:
玩转 Spring Boot 集成监控篇,就写到这里,希望大家能够喜欢。