Spring Boot Admin 详解(Spring Boot 2.0,基于 Eureka 的实现)

springboot 同时被 3 个专栏收录
4 篇文章 1 订阅
3 篇文章 0 订阅
3 篇文章 0 订阅

Spring Boot Admin 用于监控基于 Spring Boot 的应用,它是在 Spring Boot Actuator 的基础上提供简洁的可视化 WEB UI。

(一)简介

Spring Boot Admin 提供了很多功能,如显示 name、id 和 version,显示在线状态,Loggers 的日志级别管理,Threads 线程管理,Environment 管理等。

(二)Spring Boot Admin 是由服务端和客户端组成

在 Spring Boot 项目中,Spring Boot Admin 作为 Server 端,其他的要被监控的应用作为 Client 端,基于这种的配置如下步骤:

2.1 Server

2.1.1 添加相关依赖

<dependency>
    <groupId>de.codecentric</groupId>
    <artifactId>spring-boot-admin-starter-server</artifactId>
    <version>2.0.1-SNAPSHOT</version>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

2.1.2 启动类添加注解,开启监控

@Configuration
@EnableAutoConfiguration
@EnableAdminServer
public class SpringBootAdminApplication {
    public static void main(String[] args) {
        SpringApplication.run(SpringBootAdminApplication.class, args);
    }
}

2.1.3 配置文件

server:
  port: 8788

2.2 Client

2.2.1 添加相关依赖

<dependency>
    <groupId>de.codecentric</groupId>
    <artifactId>spring-boot-admin-starter-client</artifactId>
    <version>2.0.0</version>
</dependency>

2.2.2 配置文件

spring.boot.admin.client.url: "http://localhost:8788"  
management.endpoints.web.exposure.include: "*"

以上的配置,就可以实现 Spring Boot 项目中 Spring Boot Admin 监控其他应用了,但是这不是我们的重点,详细信息请参考官网文档:http://codecentric.github.io/spring-boot-admin/2.0.0/,我们的重点是在 Spring Cloud 中使用 Spring Boot Admin 监控 Spring Cloud 的服务,下面我们就详细的讲解在 Spring Cloud 中搭建 Spring Boot Admin

(三)在 Spring Cloud 中基于 Eureka 的 Spring Boot Admin 的搭建

3.1 启动之前的项目 eureka server,端口8761

3.2 新建 module(springboot-admin),创建步骤参考上篇

3.2.1 添加相关依赖,pom文件:

<dependency>
    <groupId>de.codecentric</groupId>
    <artifactId>spring-boot-admin-starter-server</artifactId>
    <version>2.0.1-SNAPSHOT</version>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
    <groupId>org.jolokia</groupId>
    <artifactId>jolokia-core</artifactId>
</dependency>

由于项目中使用的是 spring boot 2.0 版本,所以这里要使用 spring boot admin 的最新版本(还未正式发布),本人测试使用 spring boot admin 2.0.0 版本会有问题。

3.2.2 启动类添加注解

@Configuration
@EnableAutoConfiguration
@EnableAdminServer
@EnableEurekaClient
public class SpringBootAdminApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringBootAdminApplication.class, args);
    }

    @Profile("insecure")
    @Configuration
    public static class SecurityPermitAllConfig extends WebSecurityConfigurerAdapter {
        @Override
        protected void configure(HttpSecurity http) throws Exception {
            http.authorizeRequests().anyRequest().permitAll()//
                    .and().csrf().disable();
        }
    }

    @Profile("secure")
    @Configuration
    public static class SecuritySecureConfig extends WebSecurityConfigurerAdapter {
        private final String adminContextPath;

        public SecuritySecureConfig(AdminServerProperties adminServerProperties) {
            this.adminContextPath = adminServerProperties.getContextPath();
        }

        @Override
        protected void configure(HttpSecurity http) throws Exception {
            // @formatter:off
            SavedRequestAwareAuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler();
            successHandler.setTargetUrlParameter("redirectTo");

            http.authorizeRequests()
                    .antMatchers(adminContextPath + "/assets/**").permitAll()
                    .antMatchers(adminContextPath + "/login").permitAll()
                    .anyRequest().authenticated()
                    .and()
                    .formLogin().loginPage(adminContextPath + "/login").successHandler(successHandler).and()
                    .logout().logoutUrl(adminContextPath + "/logout").and()
                    .httpBasic().and()
                    .csrf().disable();
            // @formatter:on
        }
    }
}

SecurityPermitAllConfig和SecuritySecureConfig的配置是 Spring Boot Admin 官方给的配置,是对 url 进行安全认证等配置,照着配置即可。@EnableEurekaClient 注解是把 Spring Boot Admin 注册到 Eureka 里,这样 Spring Boot Admin 就可以发现注册到 Eureka 里的其他服务实例,@EnableAdminServer 注解是开启监控功能。

3.2.3 配置文件

官方有给出示例,主要是配置 eureka 的地址,这里要强调说明的一点,由于 Spring Boot 2.0 的 Actuator 只暴露了 /health、/info 两个端口(为了安全考虑),所以要配置 management.endpoints.web.exposure.include 的属性,下面的配置文件中暴力了一点,配置暴露了所有的端点,由于 Spring Boot Admin 有 web UI 管理界面,配置了登录的用户名密码如下,使用了 security.user 的属性,其他的详细配置,可以查看官方文档。

spring:
  application:
    name: spring-boot-admin
  profiles:
    active:
      - secure
server:
  port: 8788

# tag::configuration-eureka[]
eureka:   #<1>
  instance:
    leaseRenewalIntervalInSeconds: 10
    health-check-url-path: /actuator/health
  client:
    registryFetchIntervalSeconds: 5
    serviceUrl:
      defaultZone: ${EUREKA_SERVICE_URL:http://localhost:8761}/eureka/

management:
  endpoints:
    web:
      exposure:
        include: "*"  #<2>
  endpoint:
    health:
      show-details: ALWAYS
# end::configuration-eureka[]

---
spring:
  profiles: insecure

---
spring:
  profiles: secure
  security:
    user:
      name: "user"
      password: "password"
eureka:
  instance:
    metadata-map:
      user.name: "user"         #These two are needed so that the server
      user.password: "password" #can access the protected client endpoints

3.2.4 启动 spring boot admin 服务,界面如下:


用户名密码即上面的配置,user/password登录成功后


此时由于 Eureka 里只有 Spring Boot Admin 自身已注册,所以其监控列表里只有自己,下面我们启动其他的服务,让其注册到 Eureka 里。

3.2.5 启动 spring-demo-service 服务

(之前文章里现有的服务,可以查找此前的文章,或者查看文末的源码下载),在启动前,还有一处要配置,就是在 3.2.3 里说的,Actuator 在 spring boot 2.0 版本后,只暴露了两个端点,所以此时启动,监控不到所需的信息,下面修改配置文件如下:

server:
  port: 8281

eureka:
  client:
    serviceUrl:
      # 向每个注册中心注册
      defaultZone: http://localhost:8761/eureka/,http://localhost:8762/eureka/
spring:
  application:
    name: spring-demo-service

management:
  endpoints:
    web:
      exposure:
        include: '*'
  endpoint:
      health:
        show-details: ALWAYS

此时启动 spring-demo-service,发现监控列表里 spring-demo-service 已经有了


点击 SPRING-DEMO-SERVICE 进入,页面如下,可以看到有我们之前介绍的一些功能。



3.2.6 其他的配置

如果想要显示版本信息,配置文件中加入 info.version=1.0.0 可以配置版本信息

源码下载:https://github.com/shmilyah/spring-cloud-componets



<div style="font-size:14px;"> 课程简介 </div> <div style="font-size:14px;"> 这是一门使用Java语言,SpringBoot框架,从0开发一个RESTful API应用,接近企业级的项目(我的云音乐),课程包含了基础内容,高级内容,项目封装,项目重构等知识,99%代码为手写;因为这是项目课程;所以不会深入到源码讲解某个知识点,以及原理,但会粗略的讲解下基础原理;主要是讲解如何使用系统功能,流行的第三方框架,第三方服务,完成接近企业级项目,目的是让大家,学到真正的企业级项目开发技术。 </div> <div style="font-size:14px;"> <br /> </div> <div style="font-size:14px;"> 适用人群 </div> <div style="font-size:14px;"> 刚刚毕业的学生 </div> <div style="font-size:14px;"> 想提高职场竞争力 </div> <div style="font-size:14px;"> 想学从零开发SpringBoot项目 </div> <div style="font-size:14px;"> 想提升SpringBoot项目开发技术 </div> <div style="font-size:14px;"> 想学习SpringBoot项目架构技术 </div> <div style="font-size:14px;"> 想学习企业级项目开发技术 </div> <div style="font-size:14px;"> 就是想学习SpringBoot开发 </div> <div style="font-size:14px;"> <br /> </div> <div style="font-size:14px;"> 能学到什么 </div> <div style="font-size:14px;"> 从0开发一个类似企业级项目 </div> <div style="font-size:14px;"> 学会能做出市面上90%通用API </div> <div style="font-size:14px;"> 快速增加1到2年实际开发经验 </div> <div style="font-size:14px;"> 刚毕业学完后能找到满意的工作 </div> <p style="font-size:14px;"> 已经工作学完后最高涨薪30% </p> <p style="font-size:14px;"> <br /> </p> <p style="font-size:14px;"> <br /> </p> <div style="font-size:14px;"> 课程信息 </div> <div style="font-size:14px;"> 全课程目前是82章,155小时,每节视频都经过精心剪辑。 </div> <p style="font-size:14px;"> 在线学习分辨率最高1080P </p> <p style="font-size:14px;"> <br /> </p> <p style="font-size:14px;"> <br /> </p> <div style="font-size:14px;"> 课程知识点 </div> <div style="font-size:14px;"> 1~11章:学习方法,项目架构,编码规范,Postman使用方法,Git和Github版本控制 </div> <div style="font-size:14px;"> 12~16章:搭建开发环境,快速入门SpringBoot框架 </div> <div style="font-size:14px;"> 17~20章:快速入门MySQL数据库 </div> <div style="font-size:14px;"> 21~30章:MyBatis,登录注册,找回密码,发送短信,发送邮件,企业级接口配置 </div> <div style="font-size:14px;"> 31~41章:实现歌单,歌单标签,音乐,列表分页,视频,评论,好友功能 </div> <div style="font-size:14px;"> 42~48章:阿里云OSS,话题,MyBatis-plus,应用监控 </div> <div style="font-size:14px;"> 49~53章:Redis使用,集成Redis,SpringCache,HTTP缓存 </div> <div style="font-size:14px;"> 54~58章:Elasticsearch使用,集成Elasticsearch,使用ES搜索 </div> <div style="font-size:14px;"> 59~61章:商城,集成支付宝SDK,支付宝支付 </div> <div style="font-size:14px;"> 62~64章:常用哈希和加密算法,接口加密和签名 </div> <div style="font-size:14px;"> 65~67章:实时挤掉用户,企业级项目测试环境,企业级接口文档 </div> <div style="font-size:14px;"> 68~69章:SpringBoot全站HTTPS,自签证书,申请免费证书 </div> <div style="font-size:14px;"> 70~73章:云MySQL数据库,云Redis数据库使用,轻量级应用部署环境,域名解析 </div> <div style="font-size:14px;"> 74~80章:Docker使用,生产级Kubernetes集群,域名解析,集群全站HTTPS </div> <div style="font-size:14px;"> 81~82章:增强和重构项目,课程总结,后续学习计划 </div>
<div class="u-ctn-intro j-course-user-box" style="padding: 0px; margin: 0px 0px 40px; color: #444444; font-family: Arial, 'Hiragino Sans GB', 微软雅黑, Helvetica, sans-serif; font-size: 14px; background-color: #ffffff;"> <h2 class="u-ctit ctit1" style="padding: 0px 0px 10px; margin: 0px; font-weight: normal; height: 20px; font-size: 18px; line-height: 19px; max-width: 660px; color: #333333;">该互联网实战项目是基于 Spring Boot 2+ MybatisPlus+SpringSecurity5+Element UI+Vue+可视化等技术栈开发的项目,采用多模块前后端分离开发。包括图形展示、权限管理、用户管理等功能,用于研发企业级中后台产品。</h2> </div> <div class="u-ctn-intro u-ctn-intro-last" style="padding: 0px; margin: 0px 0px 20px; color: #444444; font-family: Arial, 'Hiragino Sans GB', 微软雅黑, Helvetica, sans-serif; font-size: 14px; background-color: #ffffff;"> <div class="cintrocon j-courseintro" style="padding: 0px; margin: 0px; line-height: 23px; font-family: 微软雅黑; word-wrap: break-word; color: #666666;"><br />【后端技术】<br />技术 说明<br />Spring Boot2 框架 开发的一站式解决方案<br />Spring Security5  认证和授权框架<br />MyBatisPlus3.3.x  基于 MyBatis 框架的快速研发框架<br />MyBatisCode工具 生成 MyBatis 相关代码<br />Jackson 提供了处理 JSON 数据的工具<br />Lombok 简化对象封装工具 <br />Druid   数据库连接池 <br /><br />【前端技术】<br />Vue        互联网最火的前端框架<br />Vue Router 路由框架<br />Vuex 全局状态管理框架<br />Axios 前端 HTTP 框架<br />Element UI 前端 UI 框架<br />D2-Admin 前端模板<br />D2-CRUD框架<br />D2-CRUD-PLUS框架<br /><br />Echarts 可视化技术<br />主要用于研发企业级中后台产品。<br />特性<br />提炼自企业级中后台产品的交互语言和视觉风格。<br />使用 TypeScript 开发,提供完整的类型定义文件。<br /> 链路开发和设计工具体系。<br /><br />【开发工具】<br />IntelliJ IDEA 开发 IDE<br />SQLyog 数据库连接客户端<br />Postman HTTP 请求工具<br /><br />【开发环境】<br />工具 版本<br />JDK 1.8<br />MySQL 5.7</div> </div>
©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值