第8章Spring Boot整合监控

8.1 使用actuator监控

8.1.1 actuator是什么

在Spring Boot的众多Starter POMs中有一个特殊的模块,不同于其他模块大多用于开发业务功能或连接一些其他外部资源,完全是一个用于暴露自身信息的模块,主要用于监控与管理,它就是spring-boot-starter-actuator。

spring-boot-starter-actuator模块的实现对于实施微服务的中小团队来说,可以有效地减少监控系统在采集应用指标时的开发量。当然,它并不是万能的,有时我们需要对其做一些简单的扩展来帮助我们实现自身系统个性化的监控需求。下面将详细介绍关于spring-boot-starter-actuator模块的内容,包括它原生提供的端点以及一些常用的扩展和配置方式。

8.1.2 如何使用actuator

(1)首先在pom.xml加入spring-boot-starter-actuator依赖即可。这里为了方便观察,也加入了spring-boot-starter-web依赖,如代码清单8-1所示。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<groupId>com.dalaoyang</groupId>
	<artifactId>springboot_actuator</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>jar</packaging>

	<name>springboot_actuator</name>
	<description>springboot整合actuator</description>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.5.9.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		<java.version>1.8</java.version>
	</properties>

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

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>
</project>

(2)其次。其余没有任何修改,没有新建任何类,在配置文件中加入了几条属性,配置文件如下:

##端口号
server.port=8080

##项目信息
info.name=pbm
info.server.port=${server.port}

(3)然后启动项目可以看到:
在这里插入图片描述
介绍一下红框内的Actuator暴露的功能:
在这里插入图片描述
虽然大部分端点在默认情况下都是启用状态,但是在Spring Boot应用中,默认只开启info端点和health端点。其余端点都需要通过声明属性来开启

我们可以在浏览器上访问http://localhost:8080/info可以看到如下图:
在这里插入图片描述

通过上面表格,我们可以在浏览器上访问http://localhost:8080/health可以看到如下图:
在这里插入图片描述

springboot整合Atuactor
链接:https://pan.baidu.com/s/15tnhqVK-M2UVe1tEA4aUmA 
提取码:6jkq 

8.2 使用Admin监控

8.2.1 什么是Spring Boot Admin

Spring Boot Admin是Spring Boot项目的一个社区项目,主要用于管理和监控Spring Boot应用程序。通常来说,应用程序向我们的Spring Boot Admin Server(通过HTTP)直接注册信息或者Spring Boot Admin Server通过使用Spring Cloud(例如Eureka、Consul)服务发现收集Client信息。UI只是Spring Boot Actuator端点上的一个AngularJs应用程序(2.x版本后使用Vue)。

8.2.2 设置Spring Boot Admin Server

Spring Boot Admin应用分为Spring Boot Admin Server应用和Spring Boot Admin Client应用。其中,Spring Boot Admin Server应用用于收集Spring Boot Admin Client应用的信息并对其进行监控等。接下来,我们创建一个Spring Boot Admin Server应用。

创建Spring Boot Admin Server应用的过程大致分为两步,首先创建一个Spring Boot应用程序,在pom文件中加入依赖,如代码清单8-15所示。在这里插入图片描述
然后在Spring Boot应用程序启动类中加入@EnableAdminServer,引入Spring Boot Admin Server配置,如代码清单8-16所示。在这里插入图片描述
到这里,Spring Boot-Admin-Server项目就已经配置完成了。启动项目可以看到如图8-5所示的页面。

在这里插入图片描述
由于还没有Spring Boot Admin Client应用注册到Spring Boot-Admin-Server,因此现在实例数量还是0。

8.2.3 Spring Cloud Eureka

可能到这里有人会问,这是一本讲解Spring Boot的书,为什么突然讲到Spring Cloud的组件Eureka。因为Spring Boot Admin Client有一种方式是基于Eureka获取信息,所以这里介绍一下Spring Cloud的注册中心组件Eureka。

引用官方的介绍:Eureka是Netflix开发的服务发现框架,本身是一个基于REST的服务,主要用于定位运行在AWS域中的中间层服务,以达到负载均衡和中间层服务故障转移的目的。Spring Cloud将它集成在子项目spring-cloud-netflix中,以实现Spring Cloud的服务发现功能。

通俗地理解,Eureka就是一个注册中心。本小节仅对Eureka Server进行简单的介绍,感兴趣的读者可以去Spring Cloud官网(官网地址:https://cloud.spring.io/spring-cloud-static/Finchley.SR2/single/spring-cloud.html)查看更多关于Eureka的信息。

接下来,带领大家创建一个Eureka Server。新建项目,在pom文件中加入spring-cloud-starter-netflix-eureka-server依赖(使用Spring Cloud Finchley.SR1版本)。完整pom文件内容如代码清单8-17所示。在这里插入图片描述
然后在启动类中加入注解@EnableEurekaServer,表明当前Spring Boot应用程序是一个Eureka Server程序,如代码清单8-18所示在这里插入图片描述
最后,我们只需要在配置文件中对Eureka Server应用程序进行配置,因为这里使用单节点Eureka Server应用,注意设置禁止向自己注册服务。配置文件如代码清单8-19所示。
在这里插入图片描述
到这里,Eureka Server应用配置完成了。启动项目,在浏览器中访问http://localhost:8761,可以看到如图8-6所示的页面。在这里插入图片描述
与Spring Boot Admin Server一致,目前还没有实例注册进来,所以现在实例是空的,稍后会继续使用。

8.2.4 Spring Boot Admin Client的使用

前面介绍了,使用Spring Boot Admin Server监控管理有两种方式,基于Spring Cloud Discovery(Eureka服务发现)或者对实例应用进行配置。接下来笔者带领大家分别对两种模式进行学习。

  1. Spring Boot Admin客户端
    使用这种方式,所有需要使用Spring Boot Admin Server监控管理的应用程序都需要引入spring-boot-admin-starter-client依赖,如代码清单8-20所示。在这里插入图片描述
    接下来,在配置文件中配置Spring Boot Admin Server的地址,并且配置应用名称,以便在Spring Boot Admin Server页面查看。这里将端口号设置为8081,如代码清单8-21所示。在这里插入图片描述
    启动Spring Boot Admin Client应用程序后,再来查看一下Spring Boot Admin Server监控页面,如图8-7所示。在这里插入图片描述
    从图8-7中可以看到我们刚刚创建的应用实例已经注册到了Spring Boot Admin Server中,在Spring Boot Admin Server中会检测Spring Boot Admin Client实例的健康状况,其实就是检测actuator端点的health端点,因为当前应用实例状态为up,所以状态显示为all up。如果当前有任何应用不是up状态,就会显示状态为down。

接下来单击实例,可以查看实例的详细信息,如图8-8所示在这里插入图片描述
由于当前Spring Boot Admin Client应用程序没有为actuator开放更多的端点,因此这里仅能看到很少的信息。接下来我们为当前应用程序开放全部端点并且设置显示全部详细信息,然后查看Spring Boot Admin Server监控页面,如图8-9所示。

从图8-9中可以看到Spring Boot-Admin Server监控页面的数据随着开放的端点变多而变多,其实Spring Boot-Admin Server监控就是对Spring Boot应用程序的actuator端点进行一定的监控管理。在这里插入图片描述
2. 基于服务发现
接下来,我们使用Eureka的方式使用Spring Boot-Admin Server监控管理。新建项目,在项目中加入spring-cloud-starter-netflix-eureka-client依赖,如代码清单8-22所示。在这里插入图片描述
在这里插入图片描述
在配置文件中配置Eureka Server的地址,并且开启全部actuator端点,设置端口号为8082,如代码清单8-23所示。在这里插入图片描述
然后将Spring Boot Admin Server应用程序加入Eureka Client依赖及配置,过程同上。全部配置完成后重启项目,先查看一下Eureka Server监控页面,如图8-10所示。在这里插入图片描述
可以看到实例部分已经存在两个使用Eureka的应用实例。接着查看Spring Boot Admin Server监控页面,如图8-11所示。在这里插入图片描述
分别介绍了使用Spring Boot Admin客户端和基于服务发现两种方式进行注册实例,都可以达到使用Spring Boot Admin监控的目的,这里笔者建议使用基于Eureka的方式,这样会更简单一些,无须基于每个应用频繁地配置。

8.2.5 安全验证

如果Spring Boot Admin Server监控页面可以随意查看,似乎不太安全。接下来笔者带领大家为Spring Boot Admin Server监控增加安全管理,在pom文件中加入spring-boot-starter-security依赖配置,如代码清单8-24所示。在这里插入图片描述
接下来加入一个配置类,使actuator端点可访问(这里设置登录用户可以查看全部端点),如代码清单8-25所示。在这里插入图片描述
在配置文件中配置用户名admin、密码123456,然后重启项目,访问http://localhost:8080,Spring Boot Admin Server为我们提供了友好的登录页面,如图8-12所示。在这里插入图片描述
使用用户名、密码登录后,就可以和之前一样查看Spring Boot Admin Server安全管理页面。

8.2.6 JMX-bean管理

如果在Spring Boot Admin Server安全管理页面需要与JMX-bean交互,那么在应用程序中必须包含Jolokia。由于Jolokia是基于servlet的,因此不支持响应式应用程序,WebFlux在这里暂时不支持。使用Jolokia只需要引入Jolokia依赖,如代码清单8-26。在这里插入图片描述

8.2.7 通知

Spring Boot Admin Server不但提供了管理页面供我们查看,而且提供了一些通知,比如邮件通知、PagerDuty通知、OpsGenie通知等。本小节仅对邮件通知进行介绍。

邮件通知将作为使用Thymeleaf模板呈现的HTML电子邮件传递。如果需要启用邮件通知,就需要在项目中加入spring-boot-starter-mail依赖,如代码清单8-27所示。在这里插入图片描述
在配置文件中新增邮箱相关配置信息,在后面的章节会介绍Spring Boot邮件发送的相关内容,这里不做过多解释。关于Spirng Boot Admin需要设置发送邮件地址和收件地址,如代码清单8-28所示。在这里插入图片描述
重启项目后查看邮件,可以看到如图8-13所示的页面。
在这里插入图片描述
从图8-13中可以看到关于实例应用的状态变化、异常信息等,但是模板是英文的,如果需要自定义页面模板,那么可以新建一个HTML,并且在配置文件中配置spring.boot.admin.notify.mail.template。比如在src/main/resources/文件夹下创建status-changed.html文件,然后在配置文件中配置spring.boot.admin.notify.mail.template=classpath:/status-changed.html。以下是笔者根据官方提供的模板页面稍作修改的中文版,如代码清单8-29所示。在这里插入图片描述
在这里插入图片描述
使用自定义模板后,页面如图8-14所示在这里插入图片描述
只是将对应英文修改成了中文,没有做过多修改,具体使用可以仔细考量需要得到的信息。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

花乐晴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值