SpringBootAdmin
文章目录
- SpringBootAdmin服务端
- SpringBootAdmin安全配置
- SpringBootAdmin客户端接入
- 微服务离线警告
SpringBootAdmin服务端
SpringBoot之中所有的监控操作都是基于Actuator实现处理的,那么在最终实现监控的时候也全部都是通过监控数据来完成操作的,只不过SpringBootAdmin除了Actautor数据之外还可以对SpringCloud之中的具体应用进行一些管理的支持。
1、【microcloud项目】创建一个新的服务监控模块: “micocloud-admin-8000"
2、【microcloud 项目】SpringBootAdmin依然需要通过Nacos抓取所需要的配置项,同时也需要基于组件进行配置,那么修改build.gradle,引入相关的依赖。
denpendencies.gradle
ext.versions = [admin : '2.3.0', // SpringBootAdmin依赖版本
]
ext.libraries = [// 以下的配置为SpringBootAdmin服务整合'spring-boot-admin-starter-server' : "de.codecentric:spring-boot-admin-starter-server:${versions.admin}"
]
build.gradle
project(":microcloud-admin-8000") { // 部门微服务dependencies {implementation("org.springframework.boot:spring-boot-starter-web")implementation(libraries.'spring-boot-admin-starter-server')implementation('com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-discovery') {exclude group: 'com.alibaba.nacos', module: 'nacos-client' // 移除旧版本的Nacos依赖}implementation('com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-config') {exclude group: 'com.alibaba.nacos', module: 'nacos-client' // 移除旧版本的Nacos依赖}implementation(libraries.'nacos-client') // 引入与当前的Nacos匹配的依赖库}
}
3、【micocloud-admin-8000子模块】配置application.yml以及 bootstrap.yml文件
application.yml (注意:register-enabled: false # 管理端不注册)
server: # 服务端配置port: 8000 # 8000端口
spring:application: # 配置应用信息name: microcloud.admin # 是微服务的名称nacos: # Nacos注册中心配置discovery: # 发现服务weight: 80service: ${spring.application.name} # 使用微服务的名称作为注册的服务名称server-addr: nacos-server:8848 # Nacos服务地址namespace: 96c23d77-8d08-4648-b750-1217845607ee # 命名空间IDgroup: MICROCLOUD_GROUP # 一般建议大写cluster-name: MuyanCluster # 配置集群名称register-enabled: false # 管理端不注册metadata: # 根据自身的需要配置元数据version: 1.0 # 自定义元数据项
yootk:security:config:jwt:sign: muyanissuer: MuyanYootksecret: www.yootk.comexpire: 100000 # 单位:秒password:encrypt:repeat: 5salt: www.yootk.com
bootstrap.yml
spring: # Spring配置项cloud: # SpringCloud配置项nacos: # Nacos注册中心的配置config: # gRPC通讯配置server-addr: nacos-server:8848 # Nacos地址namespace: 96c23d77-8d08-4648-b750-1217845607ee # 命名空间IDgroup: MICROCLOUD_GROUP # 一般建议大写cluster-name: MuyanCluster # 配置集群名称
4、【microcloud-admin-8000子模块】创建一个应用的启动类
package com.yootk.admin;import de.codecentric.boot.admin.server.config.EnableAdminServer;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;@SpringBootApplication
@EnableDiscoveryClient
@EnableAdminServer // 启用管理服务端
public class StartSpringBootAdmin8000 {public static void main(String[] args) {SpringApplication.run(StartSpringBootAdmin8000.class, args);}
}
5、【本地系统】为了便于服务调用,建议修改本地的 hosts主机配置文件:
127.0.0.1 microcloud-admin
6、【微服务管理控制台】服务启动之后就可以直接访问管理控制台页面: microcloud-admin:8000
此时就可以得到当前自己微服务的运行状态,其他微服务还需要进行一些接入上的处理。
SpringBootAdmin安全配置
在之前已经成功的启动SpringBootAdmin服务端,但是这个服务端现在是所有的使用者都可以进行服务注册操作,那么如果你非要考虑到这种安全机制的话,就可以通过SpringSecurity安全框架进行限制。
1、【microcloud项目】修改 build.gradle配置文件,追加SpringSecurity配置依赖。
project(":microcloud-admin-8000") { // 部门微服务dependencies {implementation('org.springframework.boot:spring-boot-starter-security')implementation("org.springframework.boot:spring-boot-starter-web")implementation(libraries.'spring-boot-admin-starter-server')implementation('com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-discovery') {exclude group: 'com.alibaba.nacos', module: 'nacos-client' // 移除旧版本的Nacos依赖}implementation('com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-config') {exclude group: 'com.alibaba.nacos', module: 'nacos-client' // 移除旧版本的Nacos依赖}implementation(libraries.'nacos-client') // 引入与当前的Nacos匹配的依赖库}
}
2、【microcloud-admin-8000子模块】追加SpringSecurity的相关配置类
package com.yootk.admin.config;import de.codecentric.boot.admin.server.config.AdminServerProperties;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler;@Configuration
public class AdminSecurityConfig extends WebSecurityConfigurerAdapter {private String adminContextPath;public AdminSecurityConfig(AdminServerProperties adminServerProperties) {this.adminContextPath = adminServerProperties.getContextPath(); // 上下文的处理路径}@Overrideprotected void configure(HttpSecurity http) throws Exception {SavedRequestAwareAuthenticationSuccessHandler successHandler =new SavedRequestAwareAuthenticationSuccessHandler();successHandler.setTargetUrlParameter("redirectTo");http.authorizeRequests().antMatchers(this.adminContextPath + "/assets/**").permitAll().antMatchers(this.adminContextPath + "/login").permitAll().anyRequest().authenticated().and().formLogin().loginPage(this.adminContextPath + "/login").successHandler(successHandler).and().logout().logoutUrl(this.adminContextPath + "/logout").and().httpBasic().and().csrf().disable();}
}
3、【microcloud-admin-8000子模块】在application.yml里面追加认证信息
spring:security:user:name: muyanpassword: yootk
4、【管理控制台】配置完成之后,如果再次访问SpringBootAdmin控制台你会发现需要提供认证信息。
SpringBootAdmin客户端接入
现在所有的服务端已经开发完成了,但是此时并没有客户端进行接入操作,那么下面就可以考虑修改已有微服务进行服务端统一管理注册,本次要修改的微服务︰部门微服务、网关微服务、消费端微服务、Token微服务。
1、【microcloud 项目】修改dependencies.gradle配置文件,添加新的依赖库:
ext.versions = [admin : '2.3.0', // SpringBootAdmin依赖版本
]
ext.libraries = [// 以下的配置为SpringBootAdmin服务整合'spring-boot-admin-starter-server' : "de.codecentric:spring-boot-admin-starter-server:${versions.admin}",'spring-boot-admin-starter-client' : "de.codecentric:spring-boot-admin-starter-client:${versions.admin}",
]
2、【microcloud项目】修改要接入微服务的依赖库配置:
build.gadle
implementation(libraries.'spring-boot-admin-starter-client')
implementation('org.springframework.boot:spring-boot-starter-actuator')
3、【接入微服务】修改需要接入到SpringBootAdmin中的微服务application.yml配置项,配置Actuator处理
网关微服务 (只有网关微服务有 management.server.port ,其他微服务没有)
server:port: 9501 # 网关服务的端口
spring:boot:admin:client:username: muyanpassword: yootkurl: http://microcloud-admin:8000/management:server:port: 9090 # Actuator端口endpoints:web:exposure:include: "*" # 开启全部的监控终端base-path: /actuator # 访问子路径
其它需要接入到SpringBootAdmin中的微服务
management:endpoints:web:exposure:include: "*" # 开启全部的监控终端base-path: /actuator # 访问子路径
4、【接入微服务】需要注意的是,SpringBootAdmin在接入微服务的时候有些地方比较讨厌,例如:有些微服务明明是存活的而且是正常的,它非认为微服务有问题,从而给出了错误的处理
management:health:sentinel:enabled: false # 关闭Sentinel健康检查endpoints:web:exposure:include: "*" # 开启全部的监控终端base-path: /actuator # 访问子路径endpoint:health:show-details: always
5、【管理控制台】此时已经开放了Actuator监控端口,所以所有的相关的JVM信息此时是可以直接获取到的。
微服务离线警告
SpringBootAdmin可以进行微服务状态的监控,但是一旦微服务状态发生了更改(例如:实例上线或下线)则应该立即将此状态告诉管理员,于是可以给管理员发送一封邮件。
1、 【microcloud项目】修改build.gradle配置文件,为“microcloud-admin-8000”子模块添加mail依赖库
implementation group: ‘org.springframework.boot’, name: ‘spring-boot-starter-mail’, version: ‘2.5.5’
project(":microcloud-admin-8000") { // 部门微服务dependencies {implementation(libraries.'spring-boot-admin-starter-client')implementation('org.springframework.boot:spring-boot-starter-mail')implementation('org.springframework.boot:spring-boot-starter-actuator')implementation('org.springframework.boot:spring-boot-starter-security')implementation("org.springframework.boot:spring-boot-starter-web")implementation(libraries.'spring-boot-admin-starter-server')implementation('com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-discovery') {exclude group: 'com.alibaba.nacos', module: 'nacos-client' // 移除旧版本的Nacos依赖}implementation('com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-config') {exclude group: 'com.alibaba.nacos', module: 'nacos-client' // 移除旧版本的Nacos依赖}implementation(libraries.'nacos-client') // 引入与当前的Nacos匹配的依赖库}
}
2、【microcloud-admin-8000子模块】修改application.yml配置文件,添加mail 的相关配置项。
spring:mail:host: smtp.qq.comusername: 202041555@qq.compassword: wxxgmulpexcubcihboot:admin:notify:mail:to: 202041666@qq.comfrom: 202041555@qq.com
3、【microcloud-admin-8000子模块】创建一个配置类,这个类主要实现警报的通知
package com.yootk.admin.config;import de.codecentric.boot.admin.server.domain.entities.InstanceRepository;
import de.codecentric.boot.admin.server.notify.CompositeNotifier;
import de.codecentric.boot.admin.server.notify.Notifier;
import de.codecentric.boot.admin.server.notify.RemindingNotifier;
import de.codecentric.boot.admin.server.notify.filter.FilteringNotifier;
import org.springframework.beans.factory.ObjectProvider;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;import java.beans.BeanProperty;
import java.time.Duration;
import java.util.Collections;
import java.util.List;@Configuration
public class MicroServiceNotificationConfiguration { // 定义一个警报发送配置private InstanceRepository instanceRepository; // 存储实例private ObjectProvider<List<Notifier>> provider; // 警报策略public MicroServiceNotificationConfiguration(InstanceRepository instanceRepository,ObjectProvider<List<Notifier>> provider) {this.instanceRepository = instanceRepository;this.provider = provider;}@Beanpublic FilteringNotifier getFilterNotifier() {CompositeNotifier com = new CompositeNotifier(this.provider.getIfAvailable(Collections::emptyList));return new FilteringNotifier(com, this.instanceRepository);}@Bean@Primarypublic RemindingNotifier remindingNotifier() {RemindingNotifier notifier = new RemindingNotifier(getFilterNotifier(), this.instanceRepository);notifier.setReminderPeriod(Duration.ofMinutes(1)); // 每分钟提醒1次notifier.setCheckReminderInverval(Duration.ofSeconds(10)); // 每10秒检查一次return notifier;}
}
所有微服务的实例的状态现在都是可以直接进行警报处理的,但是需要设置好周期。
SpringBootAdmin相关推荐
- SpringBoot笔记:SpringBoot集成SpringbootAdmin监控
文章目录 SpringBootAdmin是什么 接入配置 server端配置 client端配置 测试效果 SpringBootAdmin是什么 Spring Boot Admin 是一个管理和监控 ...
- SpringBootAdmin项目创建
帮助我们来监控SpringBoot健康状况,那么其实SpringBoot Admin呢,跟Actuator的功能是一样的,他们两个最大的区别是什么呢,我们讲的Actuator,监控到的信息,需要通过一 ...
- 关于码云开源项目SpringBootAdmin多数据源配置
SpringBootAdmin是码云上一个以springboot为核心的开源的后台管理系统. 这里是链接地址:点击打开链接 由于是后台系统,应该采用数据库分离,权限,用户,角色和业务模块分开. app ...
- spring-boot-admin 2.0小试牛刀
为什么80%的码农都做不了架构师?>>> 序 本文主要展示下spring-boot-admin 2.0版本的新特性 server实例 maven <dependency& ...
- (转)Spring Boot(二十):使用 spring-boot-admin 对 Spring Boot 服务进行监控
http://www.ityouknow.com/springboot/2018/02/11/spring-boot-admin.html 上一篇文章<Spring Boot(十九):使用 Sp ...
- 为springboot项目添加springboot-admin监控
我们知道spring-boot-actuator暴露了大量统计和监控信息的端点,spring-boot-admin 就是为此提供的监控项目. 先来看看大概会提供什么样的功能 从图中可以看出,主要内容都 ...
- SpringBootAdmin超详细教程以及端点指标控制
文章目录 1.服务端开发 2.客户端开发 配置多个客户端 3.端点指标控制 actuator 1.info端点描述了当前应用的基本信息,可以通过两种形式快速配置info端点的信息 2.health端点 ...
- 官方指标监控神器SpringBootAdmin保姆级教程
SpringBoot Admin 概述 Spring Boot 有一个非常好用的监控和管理的源软件,这个软件就是 Spring Boot Admin.该软件能够将 Actuator 中的信息进行界面化 ...
- springboot-admin 整合nacos处理含有context-path的应用问题
首先要说下springboot-admin监控服务的状态是通过springboot应用的actuator功能实现的,所以需要开启actuator相应功能,添加spring-boot-starter-a ...
最新文章
- 简述java中的注释以及用法_怎样理解 Java 注解和运用注解编程?
- 【Flocking、PPO无人机群控制算法】基于Flocking和PPO深度强化学习的无人机群控制算法的MATLAB仿真
- Python之 sklearn:sklearn.preprocessing中的StandardScaler函数的简介及使用方法之详细攻略
- 16、Java Swing JProgressBar:进度条组件
- 大对象简介+大对象的4种类型+lob类型的优点+lob的组成
- c++tcp接收文件缓存多大合适_linux高性能网络编程之tcp连接的内存使用
- 修改Android Studio默认的gradle配置文件
- literal和meta的意义和用法
- v$session,v$session_wait,v$session_wait_history,v$active_session_history
- IDEA中 GIT与SVN版本控制插件的切换
- 世界首例AI同性婚姻惊呆众人 | Siri和Alexa结婚了
- d盘信号灯超时时间已到_20下教师资格证笔试成绩什么时候公布?今年面试是什么时候?这些时间节点抢先了解!...
- AlphaGo Zero 初探
- electron 调试、问题追踪
- 深入浅出之dtype( )和astype( )函数
- linux一分钟关机命令,Linux关机命令集合
- java计算机毕业设计校园快递联盟系统源码+系统+mysql数据库+lw文档
- 组播三案之(一)IGMP去哪了?
- MongoDB数据库性能监控详解
- 微信小程序 - - - input和键盘一起上弹如何实现?
热门文章
- LOOPS HDU - 3853(概率dp,期望)
- 16进制数用空格分开 tcp_面试时,你是否被问到过TCP/IP协议?
- 计算机原理(计算机系统漫游)
- 蓝桥杯 人物相关性分析 二分
- Deeplab unexpected label
- RocketMq重试及消息不丢失机制
- 深入理解 JVM Class文件格式(五)
- Codeforces Round #579 (Div. 3) F2. Complete the Projects (hard version) dp + 贪心
- NOIP2014洛谷P2296:寻找道路(bfs)
- YbtOJ#482-爬上山顶【凸壳,链表】