美文网首页
SpringBoot Admin服务监控与告警

SpringBoot Admin服务监控与告警

作者: AI课工场 | 来源:发表于2020-09-07 10:03 被阅读0次

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

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

偷偷告诉大家一个小秘密,在一些大的公司,很多技术人员的手机其实都是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// 开启监控管理

publicclassSpringBootManagerApplication {

publicstatic 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=http://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不间断的,监控我们的服务了,是不是很简单呢?

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

相关文章

网友评论

      本文标题:SpringBoot Admin服务监控与告警

      本文链接:https://www.haomeiwen.com/subject/kmecsktx.html