您当前的位置:首页 > 电脑百科 > 程序开发 > 框架

使用 SpringBoot Admin 监控你的 SpringBoot 程序

时间:2020-01-15 10:41:13  来源:  作者:

来源于公众号未读代码 ,

作者达西呀

1.Spring Boot Admin 是什么

Spring Boot Admin 是由 codecentric 组织开发的开源项目,使用 Spring Boot Admin 可以管理和监控你的 Spring Boot 项目。它分为客户端和服务端两部分,客户端添加到你的 Spring Boot 应用增加暴漏相关信息的 HTTP 接口,然后注册到 Spring Boot Admin 服务端,这一步骤可以直接向服务端注册,也可以通过 Eureka 或者 Consul 进行注册。而 Spring Boot Admin Server 通过 Vue.js 程序监控信息进行可视化呈现。并且支持多种事件通知操作。

2. Spring Boot Admin 服务端

Spring Boot Admin 服务端是基于 Spring Boot 项目的,如何创建一个 Spring Boot 项目这里不提,你可以参考之前文章或者从 https://start.spring.io/ 直接获得一个 Spring Boot 项目。

2.1. 添加依赖

只需要添加 web 依赖和 Spring-boot-admin-starter-server 依赖。

<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>
</dependency>

2.2. 启动配置

为了和下面的客户端端口不冲突,先修改端口号为 9090。

server:
port:9090

添加 @EnableAdminServer 注解启用 Spring Boot Admin Server 功能。

使用 SpringBoot Admin 监控你的 SpringBoot 程序

 

服务端已经配置完成,启动项目进行访问就可以看到 Spring Boot Admin Server 的页面了。

使用 SpringBoot Admin 监控你的 SpringBoot 程序

 

Spring Boot Admin Server UI

3. Spring Boot Admin 客户端

创建 Spring Boot 项目依旧不提,这里只需要添加 Spring Boot Admin 客户端需要的依赖,在项目启动时就会增加相关的获取信息的 API 接口。然后在 Spring Boot 配置文件中配置 Spring Boot Admin 服务端,就可以进行监控了。

3.1 客户端依赖

pom.xml

使用 SpringBoot Admin 监控你的 SpringBoot 程序

 

3.2 客户端配置

客户端配置主要为了让客户端可以成功向服务端注册,所以需要配置客户端所在应用相关信息以及 Spring Boot Admin Server 服务端的 url。

使用 SpringBoot Admin 监控你的 SpringBoot 程序

 

配置中的 include: "*" 公开了所有的端口,对于生产环境,应该自信的选择要公开的接口。

Spring Boot Admin 可以获取应用中的定时任务,所以在代码中增加一个定时任务计划,每 20 秒输出一次当前时间,日志级别为 INFO,用于下面的定时任务和日志监控测试。

使用 SpringBoot Admin 监控你的 SpringBoot 程序

 

3.3. 客户端运行

启动客户端会暴漏相关的运行状态接口,并且自动向配置的服务端发送注册信息。

下面是客户端的启动日志:

使用 SpringBoot Admin 监控你的 SpringBoot 程序

 

从启动日志里的 Exposing 15 endpoint(s) beneath base path '/actuator' 这段,可以看到暴漏了 15 个 /actuator 的 API 接口,可以直接访问查看响应结果。

使用 SpringBoot Admin 监控你的 SpringBoot 程序

 

Spring Boot Admin Client 监测接口

从日志 Application registered itself as 6bcf19a6bf8c 可以看到客户端已经注册成功了。再看服务端可以看到注册上来的一个应用实例。

使用 SpringBoot Admin 监控你的 SpringBoot 程序

 

Spring Boot Admin Server

4. Spring Boot Admin 功能

点击监控页面上的在线的应用实例,可以跳转到应用实例详细的监控管理页面,也就是 Vue.js 实现的 web 展示。

使用 SpringBoot Admin 监控你的 SpringBoot 程序

 

Spring Boot Admin Server 监控页面

Spring Boot Admin Server 可以监控的功能很多,使用起来没有难度,下面描述下可以监测的部分内容:

  • 应用运行状态,如时间、垃圾回收次数,线程数量,内存使用走势。
  • 应用性能监测,通过选择 JVM 或者 Tomcat 参数,查看当前数值。
  • 应用环境监测,查看系统环境变量,应用配置参数,自动配置参数。
  • 应用 bean 管理,查看 Spring Bean ,并且可以查看是否单例。
  • 应用计划任务,查看应用的计划任务列表。
  • 应用日志管理,动态更改日志级别,查看日志。
  • 应用 JVM 管理,查看当前线程运行情况,dump 内存堆栈信息。
  • 应用映射管理,查看应用接口调用方法、返回类型、处理类等信息。

上面提到的日志管理,可以动态的更改日志级别,以及查看日志。默认配置下是只可以动态更改日志级别的,如果要在线查看日志,就需要手动配置日志路径了。

客户端上可以像下面这样配置日志路径以及日志高亮。

#配置文件:application.yml
logging:
file:
name:boot.log
pattern:
#日志高亮
file:'%clr(%d{yyyy-MM-ddHH:mm:ss.SSS}){faint}%clr(%5p)%clr(${PID}){magenta}%clr(---){faint}%clr([%15.15t]){faint}%clr(%-40.40logger{39}){cyan}%clr(:){faint}%m%n%wEx'

下面是在 Spring Boot Admin 监测页面上查看的客户端应用日志。

使用 SpringBoot Admin 监控你的 SpringBoot 程序

 

Spring Boot Admin Server 查看日志

5. Spring Boot Admin 进阶

5.1. 邮件通知

Spring Boot Admin Server 支持常见的通知方式,比如邮件通知、电报通知、PagerDuty 通知等,下面将会演示常见的通知方式 - 邮件通知,最后也会演示如何通过监听时间进下设置自定义通知方式。

Spring Boot Admin Server 的邮件通知通过 Thymeleaf 模板发送 html 格式的电子邮件。因此,想要使用邮件通知首先要引入 Thymeleaf 依赖以及 spring-boot-starter-mail 依赖,并配置邮件发送者信息和接受者信息。

1. 添加依赖

使用 SpringBoot Admin 监控你的 SpringBoot 程序

 

2. 配置邮件

主要设置发送者信息和接收者信息。

使用 SpringBoot Admin 监控你的 SpringBoot 程序

 

配置好邮件通知之后,重启服务端和客户端,等客户端注册到服务端之后直接终止客户端的运行,稍等片刻就可以在配置的通知接收邮箱里收到客户端实例下线通知了。

使用 SpringBoot Admin 监控你的 SpringBoot 程序

 

Sping Boot Admin Server 邮件通知

邮件通知使用的模板存放在 server 依赖的 classpath:/META-INF/spring-boot-admin-server/mail/status-changed.html 路径,如果想要自定义模板内容。可以拷贝这个文件放到自己的 templates 目录下,修改成自己想要的效果,然后在配置中指定自定义模板路径。

使用 SpringBoot Admin 监控你的 SpringBoot 程序

 

5.2 自定义通知

自定义通知只需要自己实现 Spring Boot Admin Server 提供的监听通知类即可,下面会演示如何在实例状态改变时输出实例相关信息。

使用 SpringBoot Admin 监控你的 SpringBoot 程序

 

5.2. 访问限制

上面提到过,因为客户端增加了暴漏运行信息的相关接口,所以在生产环境中使用存在风险,而服务端没有访问限制,谁的可以访问也是不合理的。

下面将会为客户端和服务端分别增加访问限制,客户端主要是限制敏感接口的访问权限,服务端则是全局的访问限制。这些访问限制都通过 spring 安全框架 security 来实现,所以首先要为客户端和服务端都增加 maven 依赖。

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

1. 服务端

在引入安全框架依赖之后,需要配置访问控制,比如静态资源不需要限制,登录登出页面指定等。

使用 SpringBoot Admin 监控你的 SpringBoot 程序

 


使用 SpringBoot Admin 监控你的 SpringBoot 程序

 

在 application.yml 配置文件中配置用户名和密码。

spring:
security:
user:
name:user
password:123

重启服务端,再次访问就需要用户名和密码进行登录了。

使用 SpringBoot Admin 监控你的 SpringBoot 程序

 

Spring Boot Admin Server 登录

2. 客户端

客户端在引入安全框架之后,也需要配置访问权限,主要是配置哪些路径可以访问,哪些路径访问需要登录限制,默认所有接口都需要登录限制。

同样的,客户端应用也需要在配置中配置客户端应用对于敏感接口的登录用户和密码,同时需要配置 Spring Boot Admin Server 的访问用户和密码,还要把自身的用户和密码注册时告诉服务端,不然服务端不能获取到监测数据。

使用 SpringBoot Admin 监控你的 SpringBoot 程序

 

客户端敏感接口访问测试。

使用 SpringBoot Admin 监控你的 SpringBoot 程序

 

客户端应用访问

到这里,客户端的敏感接口访问需要登录,服务端的管理页面也需要登录,客户端和服务端的访问控制已经完成了。

文中代码已经上传到:github.com/niumoo/springboot/tree/master/springboot-admin

参考资料:

https://github.com/codecentric/spring-boot-admin

https://codecentric.github.io/spring-boot-admin/current/



Tags:SpringBoot Admi   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
来源于公众号未读代码 ,作者达西呀1.Spring Boot Admin 是什么Spring Boot Admin 是由 codecentric 组织开发的开源项目,使用 Spring Boot Admin 可以管理和监控你的 Spring B...【详细内容】
2020-01-15  Tags: SpringBoot Admi  点击:(52)  评论:(0)  加入收藏
▌简易百科推荐
近日只是为了想尽办法为 Flask 实现 Swagger UI 文档功能,基本上要让 Flask 配合 Flasgger, 所以写了篇 Flask 应用集成 Swagger UI 。然而不断的 Google 过程中偶然间发现了...【详细内容】
2021-12-23  Python阿杰    Tags:FastAPI   点击:(6)  评论:(0)  加入收藏
文章目录1、Quartz1.1 引入依赖<dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>2.3.2</version></dependency>...【详细内容】
2021-12-22  java老人头    Tags:框架   点击:(11)  评论:(0)  加入收藏
今天来梳理下 Spring 的整体脉络啦,为后面的文章做个铺垫~后面几篇文章应该会讲讲这些内容啦 Spring AOP 插件 (了好久都忘了 ) 分享下 4ye 在项目中利用 AOP + MybatisPlus 对...【详细内容】
2021-12-07  Java4ye    Tags:Spring   点击:(14)  评论:(0)  加入收藏
&emsp;前面通过入门案例介绍,我们发现在SpringSecurity中如果我们没有使用自定义的登录界面,那么SpringSecurity会给我们提供一个系统登录界面。但真实项目中我们一般都会使用...【详细内容】
2021-12-06  波哥带你学Java    Tags:SpringSecurity   点击:(18)  评论:(0)  加入收藏
React 简介 React 基本使用<div id="test"></div><script type="text/javascript" src="../js/react.development.js"></script><script type="text/javascript" src="../js...【详细内容】
2021-11-30  清闲的帆船先生    Tags:框架   点击:(19)  评论:(0)  加入收藏
流水线(Pipeline)是把一个重复的过程分解为若干个子过程,使每个子过程与其他子过程并行进行的技术。本文主要介绍了诞生于云原生时代的流水线框架 Argo。 什么是流水线?在计算机...【详细内容】
2021-11-30  叼着猫的鱼    Tags:框架   点击:(21)  评论:(0)  加入收藏
TKinterThinter 是标准的python包,你可以在linx,macos,windows上使用它,你不需要安装它,因为它是python自带的扩展包。 它采用TCL的控制接口,你可以非常方便地写出图形界面,如...【详细内容】
2021-11-30    梦回故里归来  Tags:框架   点击:(26)  评论:(0)  加入收藏
前言项目中的配置文件会有密码的存在,例如数据库的密码、邮箱的密码、FTP的密码等。配置的密码以明文的方式暴露,并不是一种安全的方式,特别是大型项目的生产环境中,因为配置文...【详细内容】
2021-11-17  充满元气的java爱好者  博客园  Tags:SpringBoot   点击:(25)  评论:(0)  加入收藏
一、搭建环境1、创建数据库表和表结构create table account(id INT identity(1,1) primary key,name varchar(20),[money] DECIMAL2、创建maven的工程SSM,在pom.xml文件引入...【详细内容】
2021-11-11  AT小白在线中  搜狐号  Tags:开发框架   点击:(29)  评论:(0)  加入收藏
SpringBoot开发的物联网通信平台系统项目功能模块 功能 说明 MQTT 1.SSL支持 2.集群化部署时暂不支持retain&will类型消 UDP ...【详细内容】
2021-11-05  小程序建站    Tags:SpringBoot   点击:(55)  评论:(0)  加入收藏
相关文章
    无相关信息
最新更新
栏目热门
栏目头条