我们开发好的 SpringBoot 服务发布到公网上,肯定希望能够对其状态和资源消耗情况进行监控,特别是对每个接口访问情况的统计,以便在发生问题时能够快速排查和分析并解决问题。尤其是当 SpringBoot 服务比较多时,监控工作就尤为重要。
Spring Boot Admin 组件是第三方开发的一款非常实用的专门针对 SpringBoot 服务进行图形化监控的组件,它分为客户端组件和服务端组件。对于我们开发的 SpringBoot 业务服务,可以导入客户端组件,然后我们再专门开发一个 SpringBoot 程序引入服务端组件。客户端组件负责收集 SpringBoot 业务服务的相关监控信息,并将其发送给服务端组件,通过访问 SpringBoot 服务端提供的图形化界面,就可以轻松监控所有 SpringBoot 客户端服务。
Spring Boot Admin 组件的使用和图像化监控界面的搭建,非常简单,真的非常简单!!!
话不多说,我们还是通过具体的 Demo 要演示吧,在本篇博客的最后会提供源代码的下载。
一、搭建工程
我们搭建一个空的工程,然后在其下面创建 3 个 SpringBoot 工程:
-
1个服务端工程:用于接收客户端收集并发送过来的监控信息,并进行图形化展示。
-
2个客户端工程:用于在 SpringBoot 运行过程中收集监控信息,并发送给服务端。
有关 SpringBoot 工程搭建详细过程,这里不再进行赘述,可以参考前面发面的博客,这里只列出最关键的细节。
SpringBoot Admin 服务端工程搭建时,勾选了 Spring Web 和 Spring Boot Admin Server
客户端工程搭建时,勾选了 Spring Web 和 Spring Boot Admin Client
最终搭建好的工程结构如下所示:
工程创建好之后,我查看一下服务端和客户端的 pom 文件,跟 Spring Boot Admin 有关的 jar 包如下:
<!--Spring Boot Admin 服务端导入的 jar 包-->
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-server</artifactId>
</dependency>
<!--Spring Boot Admin 客户端导入的 jar 包-->
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-client</artifactId>
</dependency>
二、服务端配置
Spring Boot Admin 的服务端配置非常简单,只需要在启动类上添加一个注解 @EnableAdminServer 即可。
package com.jobs.springbootserver;
import de.codecentric.boot.admin.server.config.EnableAdminServer;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
//添加 Spring Boot Admin 启用注解
@EnableAdminServer
@SpringBootApplication
public class SpringBootServerApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBootServerApplication.class, args);
}
}
由于是在同一台机器上运行 Spring Boot Admin 的服务端和客户端,因此需要将 SpringBoot 配置为不同的端口
# 在 application.yml 中配置启动端口
# 配置 SpringBoot Admin Server 的启动端口
server:
port: 9090
三、客户端配置
本博客的 Demo 故意做了 2 个 SpringBoot 客户端程序,目的在于让后续的图形化监控界面中展示多个客户端的监控信息。
我们拿其中一个 SpringBoot 客户端进行举例,比如就拿 SpringBootClient1 来进行代码和配置演示。
对于 SpringBoot 客户端来说,主要就是对 application.yml 进行配置,具体如下:
# 配置第一个 SpringBoot 客户端访问端口
server:
port: 8081
# 配置 SpringBoot Admin Server 的地址
# 用于将自身状态监控信息发送给 SpringBoot Admin Server
spring:
boot:
admin:
client:
url: http://localhost:9090
# 应用程序名称(多个 SpringBoot 程序,可以配置相同的应用程序名称)
application:
name: SpringBootClient1
# 收集当前 SpringBoot 的所有健康检查信息
management:
endpoint:
health:
show-details: always
# 将当前 SpringBoot 的所有监控端点暴露出来
endpoints:
web:
exposure:
include: "*"
由于 SpringBoot 客户端一般都是我们的业务实现,因此这里提供一个接口作为示例。
package com.jobs.springbootclient1.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RequestMapping("/test1")
@RestController
public class Test1Controller {
@RequestMapping("/getdata")
public String GetData() {
return "Test1 GetData OK...";
}
}
ok,到此为止,客户端和服务端就配置完了,对于 SpringBootClient2 的配置和编码也是一样的,这里不再赘述。
四、图形化监控界面
启动 Spring Boot Admin 的服务端和 2 个客户端,由于服务端配置的端口是 9090,因此访问 localhost:9090 查看监控界面。
在界面可以发现 2 个 SpringBoot 客户端服务,比如点击 SpringBootClient1 可以进入其监控界面:
滚动条往下拉,还能看到 SpringBootClient1 的进程、线程、垃圾回收、内存等相关统计信息。
在左侧选择【性能】选项卡,在右侧顶部下拉列表中选择【http.server.requests】,然后可以在 uri 下拉框中选择具体的接口(必须是曾经访问过的接口,才能在 uri 下拉框中找到),然后进行添加。在下方的列表中,就会对所关注的接口进行访问次数、最小时间、最大时间等信息进行统计。
当然图形化监控界面,功能很多很强大,毕竟界面是中文,大家可以到处点击浏览一下,很容易看明白监控的内容。
好了,就到这里吧,本篇博客主要介绍了 Spring Boot Admin 图形化监控界面的搭建和简单实用,希望对大家有用。
本篇博客的源代码下载地址为:https://files.cnblogs.com/files/blogs/699532/SpringBootMonitor.zip
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/191120.html