4000-9696-28

SpringBoot Admin服务监控与告警

2023年04月10日 11:04供稿中心:北大青鸟总部

摘要: 今天我们来学习一个SpringBoot自带的可以监控服务状态的工具,并且可视化做的非常简洁,它就是我们今天的主角SpringBoot Admin。

在微服务大行其道的今天,在任何互联网公司,其项目中的服务都动辄几十上百,多则成千上万也是很常见的,比如,想阿里,京东这种国民级的应用,任何一个项目的服务数量都是我们难以想象的,即使为了便于管理和降低服务之间的耦合,将各种服务拆分之后,服务的量级,更是一般中小公司难比得上的。

那么问题就来了,那么多的服务万一有一天,哪个二货程序员手一抖,把哪个服务给关掉了,这可就麻烦大了,如果是有降级、容错或者集群的情况下,还好有应对方案,如果没有的话,那就可就等着卷铺盖走人吧,要知道,想阿里这种体量的公司,每秒的交易额不止千万级别啊,想想这可是要损失多少啊,当然阿里这种体量的公司也一般不会出现这种情况,即使哪一天真的发生了黑天鹅事件,阿里的技术大佬们也能及时收到告警发现问题,及时处理。





偷偷告诉大家一个小秘密,在一些大的公司,很多技术人员的手机其实都是24h待机的,就是为了出现任何问题,都能及时收到报警,及时处理。

其实说了这么多,只有一个目的是要保证我们的服务可用,系统安全可靠,所以这就需要我们有个好的监控工具,可以监控我们的服务的状态,是不是正常,有没有挂掉。


监控服务端

今天我们就来学习一个SpringBoot自带的可以监控服务状态的工具,并且可视化做的非常简洁,它就是我们今天的主角SpringBoot Admin,既然主角登场了,我们就让它先来做个自我介绍吧!

SpringBoot Admin是一个开源社区项目,用于管理和监控SpringBoot应用程序。应用程序作为SpringBoot Admin Client向为SpringBoot Admin Server注册(通过HTTP)或使用SpringCloud注册中心(例如Eureka,Consul)发现。



好了自我介绍做完了,接下来就让我们的主角给我们露一手吧,开始吧...

依然遵循着宋丹丹老师,教我们把大象装冰箱的三步走策略,先来开始我们的第一步:搭建SpringBoot Admin监控管理端项目,这个管理端就是可以可视化的观察服务的状态等各种数据,一会我们会看下它的盛世容颜,首先,我们使用SpringInitializr初始化一个SpringBoot项目,让后加入SpringBoot Admin的服务端依赖。


<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-server</artifactId>
<version>2.2.3</version>
</dependency>


接下来就是第二步,就是是主启动类上,添加注解,表示开启SpringBoot Admin 监控管理功能。


/**
* Spring Boot Admin 监控管理
*/
@SpringBootApplication
@EnableAdminServer // 开启监控管理
public class SpringBootManagerApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBootManagerApplication.class, args);
}
}


到此我们的监控管理端的代码,就写完了,是不是soeasy!!!接下来最后一步,启动项目,打开浏览器(把冰箱门盖上),等待奇迹的发生...





此时是我们看到没有任何服务被监控。

好,到这里我们的监控管理端,就完成了,有了监控端,那它监控管理谁呢?管理那些服务呢?总的有服务让它监控吧,领导之所以是领导,那是因为它手底下有很多小弟,是不是,所以我们的还要在创建一个客户端。


客户端

依然是老规矩,三步走战略。第一步依然是使用SpringInitializr初始化一个SpringBoot项目springboot-admin-client,加入SpringBoot Admin客户端依赖。


<dependencies>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-client</artifactId>
<version>2.2.3</version>
</dependency>
</dependencies>


第二步我要添加一些配置,可以让监控服务端监控到自己,以及暴露哪些信息可以被监控到。


# 配置端口
server.port=8081
# 监控端端口
spring.boot.admin.client.url=127.0.0.1:8080
# 客户端的名称
spring.boot.admin.client.instance.name=client
# 配置客户端展示哪些信息,*表示展示全部信息
management.endpoints.web.exposure.include=*


第三步就是重新刷新监控端,就会发祥有一个实例在了,就说明我们的客户端成功的被监控服务端,监测到了。





点击应用墙可以看到有一个client实例。





点击中这个大大的实例就可以看到很多关于这个实例的详细信息,因为我们上面配置的可以暴露所有信息,所以下面展示的信息是比较多的。





到这里我们的SpringBootAdmin的监控服务端和客户端就都完成了,当然我们是可以有多个客户端的,这个大家可以在创建一个client,这样在监控服务端就会有两个实例了。

好奇的宝宝可能就会问了,如果我们的client挂了会怎样呢?接下来咱么就演示一下服务挂了的情况,我们把client停掉,过个两秒再来刷新一下浏览器的监控服务端。





红色的警告表示我们的服务是离线状态,还有服务掉线的数量一目了然,如果接着去看下服务的详细信息,这个时候也是看不到了。





如果我们看上面这中状况,就说明我的服务是出现了问题,我要及时处理。


自动报警

好奇的宝宝可能又要问了,我们不可能7*24小时盯着界面看哪个应用离线了啊,万一那个应用挂掉了,我们没有发现课怎么办呢,稍安勿躁,这些SpringBoot都替我们想好了!

SpringBoot Admin除了提供可视化监控手段外,也提供了自动报警的功能,项目离线时自动通知售后、运维等相关技术人员,Perfect!!!

比如,如果我们想要实现,当服务出现问题的时候,可以马上发邮件通知相关人员,那我们就可以在邮件的发送系统中添加一个配置就OK了。


# Spring Boot Admin 发件收件信息
spring.boot.admin.notify.mail.from=xxxx@163.com # 从哪个邮箱发出邮件
spring.boot.admin.notify.mail.to=xxxx@163.com # 邮件发送给谁
spring.boot.admin.notify.mail.cc=xxxx@163.com # 邮件抄送给谁


只需要这么一点点的配置,就可以实现7*24不间断的,监控我们的服务了,是不是很简单呢?

小伙伴儿们有没有一种技术越学越简单的感觉呢!


标签:
关于我们
公司简介
发展历程
青鸟荣誉
联系我们
加入我们
青鸟课程
BCVE视频特效课程
BCUI全链路UI设计
BCSP软件开发专业
BCNT网络工程师
启能职业教育基础课程
学习客户端下载
青鸟优师
青鸟云课堂
微信 公众号 咨询 顶部 首页
官方新版意见收集

*

官方新版意见收集

提交成功,感谢您的反馈。

我们会认真阅读和考虑每个用户的反馈。