文章目录

  • 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相关推荐

  1. SpringBoot笔记:SpringBoot集成SpringbootAdmin监控

    文章目录 SpringBootAdmin是什么 接入配置 server端配置 client端配置 测试效果 SpringBootAdmin是什么 Spring Boot Admin 是一个管理和监控 ...

  2. SpringBootAdmin项目创建

    帮助我们来监控SpringBoot健康状况,那么其实SpringBoot Admin呢,跟Actuator的功能是一样的,他们两个最大的区别是什么呢,我们讲的Actuator,监控到的信息,需要通过一 ...

  3. 关于码云开源项目SpringBootAdmin多数据源配置

    SpringBootAdmin是码云上一个以springboot为核心的开源的后台管理系统. 这里是链接地址:点击打开链接 由于是后台系统,应该采用数据库分离,权限,用户,角色和业务模块分开. app ...

  4. spring-boot-admin 2.0小试牛刀

    为什么80%的码农都做不了架构师?>>>    序 本文主要展示下spring-boot-admin 2.0版本的新特性 server实例 maven <dependency& ...

  5. (转)Spring Boot(二十):使用 spring-boot-admin 对 Spring Boot 服务进行监控

    http://www.ityouknow.com/springboot/2018/02/11/spring-boot-admin.html 上一篇文章<Spring Boot(十九):使用 Sp ...

  6. 为springboot项目添加springboot-admin监控

    我们知道spring-boot-actuator暴露了大量统计和监控信息的端点,spring-boot-admin 就是为此提供的监控项目. 先来看看大概会提供什么样的功能 从图中可以看出,主要内容都 ...

  7. SpringBootAdmin超详细教程以及端点指标控制

    文章目录 1.服务端开发 2.客户端开发 配置多个客户端 3.端点指标控制 actuator 1.info端点描述了当前应用的基本信息,可以通过两种形式快速配置info端点的信息 2.health端点 ...

  8. 官方指标监控神器SpringBootAdmin保姆级教程

    SpringBoot Admin 概述 Spring Boot 有一个非常好用的监控和管理的源软件,这个软件就是 Spring Boot Admin.该软件能够将 Actuator 中的信息进行界面化 ...

  9. springboot-admin 整合nacos处理含有context-path的应用问题

    首先要说下springboot-admin监控服务的状态是通过springboot应用的actuator功能实现的,所以需要开启actuator相应功能,添加spring-boot-starter-a ...

最新文章

  1. 简述java中的注释以及用法_怎样理解 Java 注解和运用注解编程?
  2. 【Flocking、PPO无人机群控制算法】基于Flocking和PPO深度强化学习的无人机群控制算法的MATLAB仿真
  3. Python之 sklearn:sklearn.preprocessing中的StandardScaler函数的简介及使用方法之详细攻略
  4. 16、Java Swing JProgressBar:进度条组件
  5. 大对象简介+大对象的4种类型+lob类型的优点+lob的组成
  6. c++tcp接收文件缓存多大合适_linux高性能网络编程之tcp连接的内存使用
  7. 修改Android Studio默认的gradle配置文件
  8. literal和meta的意义和用法
  9. v$session,v$session_wait,v$session_wait_history,v$active_session_history
  10. IDEA中 GIT与SVN版本控制插件的切换
  11. 世界首例AI同性婚姻惊呆众人 | Siri和Alexa结婚了
  12. d盘信号灯超时时间已到_20下教师资格证笔试成绩什么时候公布?今年面试是什么时候?这些时间节点抢先了解!...
  13. AlphaGo Zero 初探
  14. electron 调试、问题追踪
  15. 深入浅出之dtype( )和astype( )函数
  16. linux一分钟关机命令,Linux关机命令集合
  17. java计算机毕业设计校园快递联盟系统源码+系统+mysql数据库+lw文档
  18. 组播三案之(一)IGMP去哪了?
  19. MongoDB数据库性能监控详解
  20. 微信小程序 - - - input和键盘一起上弹如何实现?

热门文章

  1. LOOPS HDU - 3853(概率dp,期望)
  2. 16进制数用空格分开 tcp_面试时,你是否被问到过TCP/IP协议?
  3. 计算机原理(计算机系统漫游)
  4. 蓝桥杯 人物相关性分析 二分
  5. Deeplab unexpected label
  6. RocketMq重试及消息不丢失机制
  7. 深入理解 JVM Class文件格式(五)
  8. Codeforces Round #579 (Div. 3) F2. Complete the Projects (hard version) dp + 贪心
  9. NOIP2014洛谷P2296:寻找道路(bfs)
  10. YbtOJ#482-爬上山顶【凸壳,链表】