1、项目背景

项目开发完成并部署上线,系统正式进入试运行;在试运行期间由于客户服务问题导致部分服务不可用,幸亏系统采用集群架构没有造成系统正常使用,但该问题存在系统风险,问题出现后没被第一时间发现和处理。为了解决该问题,采用简便的Spring boot admin 插件来监控系统正常运行,Spring boot admin 知识监控软件的一种,其他监控软件或者插件大家可自行选择;

2、项目目标

使用Sping boot admin 监控插件,主要是监控系统程序是否存活,如果服务出现问题后,需要发送邮件给运维同事,及时来处理;

3、详细配置

系统分为服务端和客户端,接下来分开两个章节来介绍,并将配置相关信息介绍说明;

3.1、服务端

配置需要使用的jar文件,这里采用maven管理pom.xml配置详见如下:

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.6.4</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>cn.com.jack</groupId><artifactId>springadmindemo1</artifactId><version>0.0.1-SNAPSHOT</version><name>springadmindemo1</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>de.codecentric</groupId><artifactId>spring-boot-admin-starter-server</artifactId><version>2.6.1</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId></dependency><dependency><groupId>de.codecentric</groupId><artifactId>spring-boot-admin-server-ui</artifactId><version>2.6.2</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId></dependency></dependencies></project>

application.properties文件具体配置

# 配置服务启动的端口号
server.port=1801# 配置服务器端访问的账户和密码
spring.security.user.name=user
spring.security.user.password=123456# 使用的邮箱服务  qq 163等
spring.mail.host=smtp.qq.com
# 发送者
spring.mail.username=XXXXX@qq.com
# 授权码
spring.mail.password=XXXXX
#收件人
spring.boot.admin.notify.mail.to=XXXXX@qq.com
#发件人
spring.boot.admin.notify.mail.from=XXXXX@qq.com

在Springadmindemo1Application启动类中添加注解@EnableAdminServer

package cn.com.jack.springadmindemo1;import de.codecentric.boot.admin.server.config.EnableAdminServer;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@EnableAdminServer
@SpringBootApplication
public class Springadmindemo1Application {public static void main(String[] args) {SpringApplication.run(Springadmindemo1Application.class, args);}}

关于权限配置看个人需求,相关代码引用网络文件代码,记得创建config文件夹;

package cn.com.jack.springadmindemo1.config;import de.codecentric.boot.admin.server.config.AdminServerProperties;
import org.springframework.boot.autoconfigure.security.SecurityProperties;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpMethod;
import org.springframework.security.config.Customizer;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
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;
import org.springframework.security.web.csrf.CookieCsrfTokenRepository;
import org.springframework.security.web.util.matcher.AntPathRequestMatcher;import java.util.UUID;@Configuration(proxyBeanMethods = false)
public class SecuritySecureConfig extends WebSecurityConfigurerAdapter {private final AdminServerProperties adminServer;private final SecurityProperties security;public SecuritySecureConfig(AdminServerProperties adminServer, SecurityProperties security) {this.adminServer = adminServer;this.security = security;}@Overrideprotected void configure(HttpSecurity http) throws Exception {SavedRequestAwareAuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler();successHandler.setTargetUrlParameter("redirectTo");successHandler.setDefaultTargetUrl(this.adminServer.path("/"));http.authorizeRequests((authorizeRequests) -> authorizeRequests.antMatchers(this.adminServer.path("/assets/**")).permitAll().antMatchers(this.adminServer.path("/actuator/info")).permitAll().antMatchers(this.adminServer.path("/actuator/health")).permitAll().antMatchers(this.adminServer.path("/login")).permitAll().anyRequest().authenticated()).formLogin((formLogin) -> formLogin.loginPage(this.adminServer.path("/login")).successHandler(successHandler).and()).logout((logout) -> logout.logoutUrl(this.adminServer.path("/logout"))).httpBasic(Customizer.withDefaults()).csrf((csrf) -> csrf.csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse()).ignoringRequestMatchers(new AntPathRequestMatcher(this.adminServer.path("/instances"),HttpMethod.POST.toString()),new AntPathRequestMatcher(this.adminServer.path("/instances/*"),HttpMethod.DELETE.toString()),new AntPathRequestMatcher(this.adminServer.path("/actuator/**")))).rememberMe((rememberMe) -> rememberMe.key(UUID.randomUUID().toString()).tokenValiditySeconds(1209600));}// Required to provide UserDetailsService for "remember functionality"@Overrideprotected void configure(AuthenticationManagerBuilder auth) throws Exception {auth.inMemoryAuthentication().withUser(security.getUser().getName()).password("{noop}" + security.getUser().getPassword()).roles("USER");}
}

3.2、客户端

配置需要使用的jar文件,这里采用maven管理pom.xml配置详见如下:

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.6.4</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>cn.com.wuyong</groupId><artifactId>springbootadminclientdemo1</artifactId><version>0.0.1-SNAPSHOT</version><name>springbootadminclientdemo1</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>de.codecentric</groupId><artifactId>spring-boot-admin-starter-client</artifactId><version>2.6.1</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId></dependency></dependencies></project>

application.properties文件具体配置

# 客户端程序启动端口
server.port=1802
# 客户端程序启动名称(可自行配置)
spring.application.name=Spring Boot Admin Client# 配置监控服务端的地址和端口
spring.boot.admin.client.url=http://127.0.0.1:1801/
# 配置监控服务端的账户和密码
spring.boot.admin.client.username=user
spring.boot.admin.client.password=123456# 配置监控访问范围和监控页面显示的具体信息
management.endpoints.web.exposure.include=*
management.endpoint.health.show-details=always# 系统链接MySQL数据库的配置
spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/test_test009?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=true
spring.datasource.username=root
spring.datasource.password=123456
Springbootadminclientdemo1Application类型无需配置;

3.3、效果展示

至此客户端和服务端配置完成,进入服务端、客户端的Spring boot admin 启动类,点击启动运行,接下里我们看运行效果;

1、 打开浏览器输入http://127.0.0.1:1801/login后直接回,我们可以看到登录页面,输入在管理端配置的账户和密码user/123456后登录

2、进入后可查看监控系统各个指标和信息

点击图标可进入到监控的详情页面,具体详见如下

4、总结

1、在处理中遇到了org.springframework.boot和de.codecentric的jar文件版本问题,大家可根据自己情况引用jar文件

2、文章主要用于分享给大家一同学习,如果有不足和问题请大家指正

Spring boot admin 监控配置相关推荐

  1. 高级版的 jvisualvm :Spring Boot Admin 监控 Spring Boot 微服务项目

    前奏:先说一下 Java VisualVM Java VisualVM 是一个能够监控 JVM 的 jdk 自带的图形化工具: 在 $JAVA_HOME/bin 目录下,可直接运行它. 要想监控远程服 ...

  2. Springboot 系列(十七)迅速使用 Spring Boot Admin 监控你的 Spring Boot 程序

    1. Spring Boot Admin 是什么 Spring Boot Admin 是由 codecentric 组织开发的开源项目,使用 Spring Boot Admin 可以管理和监控你的 S ...

  3. Springboot 系列(十七)迅速使用 Spring Boot Admin 监控你的 Spring Boot 程序,支持异常邮件通知

    点赞再看,动力无限.Hello world : ) 微信搜「 程序猿阿朗 」. 本文 Github.com/niumoo/JavaNotes 和 未读代码博客 已经收录,有很多知识点和系列文章. 1. ...

  4. SpringBoot实战(十二):集成 Spring Boot Admin 监控

    强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan [前言] 程序开发完实现相应的功能只是一个部分,如何让系统在线上运行更好创造更高的价值是另外一个 ...

  5. Spring boot admin监控添加发送邮件

    配置文件application.yml spring:#安全配置security:user:name: adminpassword: adminboot:admin:ui:title: 服务监控中心n ...

  6. 《深入理解 Spring Cloud 与微服务构建》第十五章 微服务监控 Spring Boot Admin

    <深入理解 Spring Cloud 与微服务构建>第十五章 微服务监控 Spring Boot Admin 文章目录 <深入理解 Spring Cloud 与微服务构建>第十 ...

  7. 服务器状态显示down,Eureka心跳健康检查机制和Spring boot admin 节点状态一直为DOWN的排查(忽略某一个节点的健康检查)...

    运行阶段执行健康检查的目的是为了从Eureka服务器注册表中识别并删除不可访问的微服务,Eureka 服务器并不是向客户端发送心跳请求,而是反过来,Eureka 客户端将心跳发送到Eureka服务器, ...

  8. SpringBoot实战(十三):Spring Boot Admin 动态修改日志级别

    强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan [前言] 之前关于线上输出日志一直有个困惑:如何可以动态调整的日志级别,来保证系统在正常运行时性 ...

  9. Spring Boot Admin,贼好使

    Spring Boot Admin(SBA)是一个开源的社区项目,用于管理和监控 Spring Boot 应用程序.应用程序可以通过 http 的方式,或 Spring Cloud 服务发现机制注册到 ...

最新文章

  1. 第三章:创建用户界面组件--可视化组件(一)
  2. 架构师升级之路,你掌握了吗?
  3. 十年老码农吐血经验:跳槽千万不能选高年终低base的公司,超过15薪就要慎重!...
  4. 多任务学习,如何设计一个更好的参数共享机制?| AAAI 2020
  5. 科隆(Koln)一日游
  6. python服务器同步
  7. SOC(网络安全管理平台)
  8. win8.1 无法安装 net framework3.5的解决办法
  9. 网络流24题-魔术球问题
  10. yum安装mysql及启动_linux下使用yum安装mysql以及启动、登录和远程访问
  11. makefile中的零星知识点
  12. Python-OpenCV 笔记4 -- 形态学操作(Morphological Operations)
  13. 【公测中】阿里云发布国内首个大数据双活容灾服务,满足高要求大数据灾备场景
  14. easyui关闭dialog后刷新父页面_两种方法WordPress批量打开、关闭文章评论功能
  15. 单元测试时使用Ninject的小问题
  16. 5岁儿童自学python编程-为什么外国5岁孩子就要学编程?原因你一定想知道
  17. JS推断浏览器类型与版本号
  18. 开源或免费虚拟主机管理系统
  19. java图书管理系统这个怎么改呢
  20. 笔记本屏幕变暗/调高亮度闪烁修复方法

热门文章

  1. java缓存突然失效_Java-No.06 读写锁控制缓存失效照成的Dogpile效应
  2. c++ primer plus 第三章课后习题
  3. 高强度螺栓检测送检规则 中钢国检检测单位
  4. 磊科路由器动态获取IP模式下不显示DNS设置的问题
  5. 单片机在工业应用中的前景
  6. location 简介
  7. 浅析GRE协议(通用路由封装协议)
  8. 微软exchange服务器,重新启动 Microsoft Exchange 服务
  9. 一文快速回顾 Java 操作数据库的方式-JDBC
  10. SUSE软件安装工具——zypper(二)