登录 |  注册
首页 >  编程技术 >  Spring Boot入门基础教程代码实例 >  Spring Boot实现应用监控与报警

Spring Boot实现应用监控与报警

1. 监控报警简介

Spring Boot 的应用监控方案比较多,Spring Boot+Prometheus+Grafana是目前比较常用的方案之一。它们三者之间的关系大概如下图:

spring boot 监控.jpg

2. 可视化监控

可以直接利用 Spring Boot Admin 实现可视化监控,此时至少需要两个项目实例,一个是监控的管理端,一个是被监控的客户端。

2.1 构建监控管理端项目

打开 Spring Initializr , Spring Boot 版本选择 2.2.5 ,Group 为 com.imooc , Artifact 为 spring-boot-monitor-manager,生成项目后导入 Eclipse 开发环境。

2.2 引入管理端项目依赖

监控管理端需要使用网页展示监控信息,所以引入 Web 依赖,另外添加 Spring Boot Admin 管理端依赖项。

实例:

		<!-- Web 依赖 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<!-- Spring Boot Admin 管理端依赖项 -->
		<dependency>
			<groupId>de.codecentric</groupId>
			<artifactId>spring-boot-admin-starter-server</artifactId>
			<version>2.2.3</version>
		</dependency>

2.3 开启监控管理端

在启动类上添加 @EnableAdminServer 注解开启 Spring Boot Admin 监控管理功能,代码如下:

实例:

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

然后运行启动类,访问 http://127.0.0.1:8080 会发现界面上已经显示监控信息了。

图片描述

Spring Boot Admin 监控管理页面

2.4 构建监控客户端项目

打开 Spring Initializr , Spring Boot 版本选择 2.2.5 ,Group 为 com.imooc , Artifact 为 spring-boot-monitor-client,生成项目后导入 Eclipse 开发环境。

2.5 引入客户端项目依赖

直接引入 Web 依赖和监控客户端依赖。

实例:

		<!-- Web 依赖 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<!-- Spring Boot Admin监控客户端依赖 -->
		<dependency>
			<groupId>de.codecentric</groupId>
			<artifactId>spring-boot-admin-starter-client</artifactId>
			<version>2.2.3</version>
		</dependency>

2.6 修改客户端配置

修改客户端的配置文件 application.properties ,以便指定客户端指向的服务端的地址。由于刚刚服务端已经占用了 8080 端口,所以将客户端的端口设置为 8091 。

还有一个必要设置是客户端的名称,当我们监控的项目实例比较多时,需要通过客户端名称来区分。

实例:

# 配置端口server.port=8091# 配置监控管理端地址spring.boot.admin.client.url=http://127.0.0.1:8080# 客户端的名称,用于区分不同的客户端spring.boot.admin.client.instance.name=CLIENT1

TIps:此处指定监控管理端地址使用的是 spring.boot.admin.client.url ,我个人认为应使用 spring.boot.admin.server.url 更加合理。当然大家不用纠结于此,此处只是特别提示。

2.7 测试监控效果

启动客户端程序,然后刷新服务端网页,会发现监控管理页面已经显示了客户端信息。

图片描述

监控页面展示客户端信息

此时我们关闭客户端程序,然后稍等一会刷新下监控管理页面(注意服务端发现客户端离线是需要一定时间的),会发现监控管理页已经显示了离线项目实例信息。

图片描述

监控页面展示离线客户端信息

3. 监控实例运行参数

使用 Spring Boot Admin 后,默认显示的项目实例信息比较少。

图片描述

CLIENT1 实例默认显示信息

默认设置主要是为了保证项目实例的安全性,只展示了非常少的信息,我们可以通过配置文件指定展示哪些信息,如下。

实例:

# 配置客户端展示哪些信息,*表示展示全部信息management.endpoints.web.exposure.include=*

此时刷新监控管理页,会发现已经展示各类运行参数信息。

图片描述

全面展示项目实例运行参数信息

Tips:不同项目需要展示的信息不同,可以通过 management.endpoints.web.exposure.include 配置项进行设置,感兴趣的同学可以自行查阅相关资料。

4. 自动报警

可视化监控提供了全面了解项目运行状况的手段,但是我们不可能 7*24 小时盯着界面看哪个应用离线了。

最妙的效果是,项目离线时自动通知售后、运维等相关技术人员。

Spring Boot Admin 也提供了自动报警的功能,简直太完美了,接下来我们来实现下。

4.1 引入依赖项

为监控服务端项目引入邮件依赖。

实例:

		<!-- 邮件依赖 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-mail</artifactId>
		</dependency>

4.2 配置邮件发送所需信息

只需要配置常规的邮件收发信息即可。

实例:

# 网易邮箱发件服务器
spring.mail.host=smtp.163.com
# 网易邮箱发件端口spring.mail.prot=25
# 发件人账号spring.mail.username=taqsxxkj@163.com
# 发件授权密码,注意授权码是用于登录第三方邮件客户端的专用密码
spring.mail.password=123456
spring.mail.properties.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory
# Spring Boot Admin 发件收件信息
spring.boot.admin.notify.mail.from=taqsxxkj@163.com
spring.boot.admin.notify.mail.to=taqsxxkj@163.com
spring.boot.admin.notify.mail.cc=taqsxxkj@163.com

此处特别注意发件授权密码不是普通邮箱的登录密码,而是授权密码,以网易邮箱为例在下图位置设置。

图片描述

网易邮箱授权密码设置

4.3 项目实例离线邮件报警

启动监控服务端和客户端,然后关闭客户端,稍等一会检查指定的报警接收邮箱,就会发现已收到报警邮件了。

图片描述

项目实例离线邮件报警内容
上一篇: Spring Boot配置拦截器
下一篇: Spring Boot整合 Spring Security实现安全管理
推荐文章
  • 在HTML中,如果你想让一个输入框(input元素)不可编辑,你可以通过设置其readonly属性来实现。示例如下:input type="text" value="此处内容不可编辑" readonly在上述代码中,readonly属性使得用户无法修改输入框中的内容。另外,如果你希望输入框完全不可交
  • ASP.NET教程ASP.NET又称为ASP+,基于.NETFramework的Web开发平台,是微软公司推出的新一代脚本语言。ASP.NET是一个使用HTML、CSS、JavaScript和服务器脚本创建网页和网站的开发框架。ASP.NET支持三种不一样的开发模式:WebPages(Web页面)、
  • C# 判断判断结构要求程序员指定一个或多个要评估或测试的条件,以及条件为真时要执行的语句(必需的)和条件为假时要执行的语句(可选的)。下面是大多数编程语言中典型的判断结构的通常形式:判断语句C#提供了以下类型的判断语句。点击链接查看每个语句的细节。语句描述if语句一个 if语句 由一个布尔表达式后跟
  • C#循环有的时候,可能需要多次执行同一块代码。通常情况下,语句是顺序执行的:函数中的第一个语句先执行,接着是第二个语句,依此类推。编程语言提供了允许更为复杂的执行路径的多种控制结构。循环语句允许我们多次执行一个语句或语句组,下面是大多数编程语言中循环语句的通常形式:循环类型C#提供了以下几种循环类型
  • C#数组(Array)数组是一个存储相同类型元素的固定大小的顺序集合。数组是用来存储数据的集合,一般认为数组是一个同一类型变量的集合。声明数组变量并不是声明number0、number1、...、number99一个个单独的变量,而是声明一个就像numbers这样的变量,然后使用numbers[0]
  • ASP.NET是一个由微软公司开发的用于构建Web应用程序的框架,它是.NETFramework的一部分。它提供了一种模型-视图-控制器(MVC)架构、Web表单以及最新的ASP.NETCore中的RazorPages等多种开发模式,可以用来创建动态网页和Web服务。以下是一些基础的ASP.NET编
学习大纲