微服务系列之-Admin集成

一.介绍

Spring Boot Admin是一个开源社区项目,用于管理和监控SpringBoot应用程序。 应用程序作为Spring Boot Admin Client向为Spring Boot Admin Server注册(通过HTTP)或使用SpringCloud注册中心(例如Eureka,Consul)发现。 UI是的AngularJs应用程序,展示Spring Boot Admin Client的Actuator端点上的一些监控。常见的功能或者监控如下:

  • 显示 name/id 和版本号
  • 显示在线状态
  • Logging 日志级别管理
  • JMX beans 管理
  • Threads 会话和线程管理
  • Trace 应用请求跟踪
  • 应用运行参数信息,如:
    Java 系统属性
    Java 环境变量属性
    内存信息
    Spring 环境属性

二.服务端集成

  1. 依赖
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
            <exclusions>
                <exclusion>
                    <artifactId>guava</artifactId>
                    <groupId>com.google.guava</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>HdrHistogram</artifactId>
                    <groupId>org.hdrhistogram</groupId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>de.codecentric</groupId>
            <artifactId>spring-boot-admin-starter-server</artifactId>
            <version>2.0.3</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>

说明:
1)eureka集成是为了以Eureka为注册中心,从Eureka获取相关服务信息。
2)security集成是为了加上Admin登录认证。
3)admin-starter为服务端组件。
4)安全配置适配器依赖必须。

  1. 关键配置信息
spring:
  # 用户登录Admin账户
  security:
    user:
      name: "admin"
      password: "123456"

eureka:
  client:
    #表示eureka client间隔多久去拉取服务注册信息,默认为30秒
    registryFetchIntervalSeconds: 5
    service-url:
      defaultZone: ${EUREKA_SERVICE_URL:http://localhost:8761}/eureka/
  instance:
    #表示eureka client发送心跳给server端的频率,默认为30秒
    leaseRenewalIntervalInSeconds: 10
    #健康检查的地址(依赖spring-boot-starter-actuator)
    health-check-url-path: /actuator/health
    metadata-map:
      user.name: ${spring.security.user.name}
      user.password: ${spring.security.user.password}

强调:上面注释讲解部分很关键,上面设置我们能每5秒从Eureka服务端获取微服务模块信息。

Eureka 中的 metadataMap 是专门用来存放一些自定义的数据,当注册中心或者其他服务需要此服务的某些配置时可以在 metadataMap 里取。实际上,每个 instance 都有各自的 metadataMap,map 中存放着需要用到的属性。例如,上面配置中的 eureka.instance.metadata-map.user.name,当这个服务成功注册到 Eureka 上,Spring Boot Admin 就会取拿到这个 instance,进而拿到 metadataMap 里的属性,然后放入请求头,向此服务发送请求,访问此服务的 Actuator 开放的端点。

  1. 安全校验设置
@Slf4j
@Configuration
public class WebSecurityConfig extends WebSecurityConfigurerAdapter
{
    private final String adminContextPath;

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

    @Override
    protected void configure(HttpSecurity http) throws Exception
    {
        log.info("WebSecurityConfig|configure|进入页面拦截处理部分");
        // @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();
    }
}

三.注册中心

用之前搭建的即可 端口为 8761
qy-eureka-server 注册中心
微服务系列之-Eureka Server集成

四.客户端集成

  1. 没有集成Eureka
    主要依赖:
<dependency>
    <groupId>de.codecentric</groupId>
    <artifactId>spring-boot-admin-starter-client</artifactId>
    <version>2.0.1</version>
</dependency>

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

主要配置:

spring:
  security:
    user:
      name: "admin"
      password: "123456"
  boot:
    admin:
      client:
        url: http://localhost:8086
        username: "admin"
        password: "123456"
        instance:
          metadata:
            user.name: ${spring.security.user.name}
            user.password: ${spring.security.user.password}
eureka:
  instance:
    leaseRenewalIntervalInSeconds: 10 #表示eureka client发送心跳给server端的频率,默认为30秒
    health-check-url-path: /actuator/health #健康检查的地址(依赖spring-boot-starter-actuator)
  client:
    registryFetchIntervalSeconds: 5 #表示eureka client间隔多久去拉取服务注册信息,默认为30秒
    service-url:
      defaultZone: ${EUREKA_SERVICE_URL:http://localhost:8761}/eureka/
management:
  endpoints:
    web:
      exposure:
        include: '*'
  endpoint:
    health:
      show-details: ALWAYS

启动类:

@Slf4j
@SpringBootApplication
@EnableDiscoveryClient
public class EurekaClientApplication
{
    public static void main( String[] args )
    {
        ApplicationContext context = SpringApplication.run(EurekaClientApplication.class, args);
        String serverPort = context.getEnvironment().getProperty("server.port");
        log.info("后台管理服务客户端启动成功! Swagger2: http://127.0.0.1:".concat(serverPort));
    }
}
  1. 集成Eureka
    我们可以去掉admin-starter-client依赖,因为微服务都在配置中心注册,可以通过注册中心获取注册在Eureka的相关微服务信息。
    在这里插入图片描述

五.结果验证

依次启动
qy-eureka-server
qy-admin-server
qy-eureka-client
在这里插入图片描述
进入登录页面,输入账户以及密码登录Admin
在这里插入图片描述在这里插入图片描述服务正常显示
在这里插入图片描述至此我们继承Admin服务监控模块成功!!!

项目集成地址:谦奕爸爸-微服务集成项目

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章