SpringCloud系列-使用SpringBoot Admin构建微服务监控

版权声明:© 2018 - 2018 Jean.All Rights Reserved. https://blog.csdn.net/xingxuan4547/article/details/85090948

简介

Spring Boot Admin 用于管理和监控一个或者多个Spring Boot 程序。 Spring Boot Admin 分
为 Server 端和 Client 端, Client 端可以通过 Http 向 Server 端注册,也可以结合 Spring Cloud
的服务注册组件 Eureka 进行注册。 Spring Boot Admin 提供了用 AngularJs 编写的 Ul 界面,用
于管理和监控。其中监控内容包括 Spring Boot 的监控组件 Actuator 的各个 Http 节点,也支持
更高级的功能,包括 Turbine 、 Jmx 、 Loglevel 等。

本文以案例的形式来讲解 Spring Boot Admin , 主要包括以下的内容。

  • 使用 Spring Boot Admin 监控 Spring Cloud 微服务 。
  • Spring Boot Adm in 集成 Turbine,聚合监控微服务系统中熔断器的状况。
  • Spring Boot Admin 集成 Security 安全登录界面。

使用SpringBootAdmin来监控SpringCloud微服务

本案例需要使用 3 个工程,分别为服务注册中心 Eureka Server、服务客户端 Eureka Client和 Spring Boot Admin Server。本案例是一个 Maven 多 Module 的工程,需要创建一个主 Maven工程,主 Maven 工程指定了 Spring Boot 版本为 2.0.3.RELEASE, Spring Cloud 版本为 Finchley.RELEASE。其中 Eureka Server 的端口号为 8761

构建maven聚合工程

  • 创建父工程

Type选择maven pom,点击Next
选择Lombok依赖点击Next
在这里插入图片描述

  • 修改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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.tinckay</groupId>
    <artifactId>sc-f-chapter14</artifactId>
    <version>0.0.1-SNAPSHOT</version>

    <name>sc-f-chapter14</name>
    <description>Demo project for Spring Boot Security</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.3.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <modules>
    	<module>eureka-server</module>
        <module>admin-server</module>
        <module>admin-client</module>
    </modules>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <spring-cloud.version>Finchley.RELEASE</spring-cloud.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
    
</project>

构建Eureka Server

  • 在父工程下面创建一个maven project命名为eureka-server,创建完成后修改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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.tinckay</groupId>
    <artifactId>eureka-server</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>eureka-server</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>com.tinckay</groupId>
        <artifactId>sc-f-chapter14</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <relativePath/>
    </parent>

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>
    </dependencies>

</project>
  • 修改properties.yml文件
server:
  port: 8761

spring:
  application:
    name: eurka-server

eureka:
  server:
    # 测试时关闭自我保护机制,保证不可用服务及时踢出,默认为true,建议生产环境启动,测试环境关闭
    #enable-self-preservation: false
    # 启用主动失效,并且每次主动失效检测间隔为5s
    eviction-interval-timer-in-ms: 5000
    #eureka server刷新readCacheMap的时间,注意,client读取的是readCacheMap,这个时间决定了多久会把readWriteCacheMap的缓存更新到readCacheMap上,默认30s
    response-cache-update-interval-ms: 10000
    #eureka server缓存readWriteCacheMap失效时间,这个只有在这个时间过去后缓存才会失效,失效前不会更新,过期后从registry重新读取注册服务信息,registry是一个ConcurrentHashMap。
    #由于启用了evict其实就用不太上改这个配置了,默认180s
    response-cache-auto-expiration-in-seconds: 180
  
  instance:
    hostname: 127.0.0.1
  client:
    registerWithEureka: false
    fetch-registry: false
    serviceUrl:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
  • 在Application启动类上加上@EnableEurekaServer注解

@EnableEurekaServer
@SpringBootApplication
public class EurekaServerApplication {

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

构建Admin Server

  • 创建admin-server工程
    -[在这里插入图片描述](https://img-blog.csdnimg.cn/20181219112906163.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3hpbmd4dWFuNDU0Nw==,size_16,color_FFFFFF,t_70)

然后Next,Finish创建好工程。

在主 Maven 工程下创建一个 Module 工程,取名为 admin-server。程作为 Spring Boot Admin
Server 工程 ,用 于对微服务系统进行监控和管理。首先 , 在 admin-server 工程的 porn 文件引入
相关的依赖,包捐继承了主 Maven 的 porn 文件、 Spring Boot Admin Server 功能的两个依赖
spring-boot-admin-server 和 spring-boot-admin-server-ui 、 ureka Client 的起步依赖 spring-cloudstarter-eureka 、 Actuator 的起步依赖 spring-boot-starter-actuator。最后,在管理界面中需要与JMX-Beans 进行交互,在 porn 文件中引入 Jolokia 的依赖 。 porn 件的依赖代码如下:

<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">

    <modelVersion>4.0.0</modelVersion>

    <name>admin-server</name>
    <description>Demo project for Spring Boot</description>

    <groupId>com.tinckay</groupId>
    <artifactId>admin-server</artifactId>
    <version>0.0.1-SNAPSHOT</version>

    <parent>
        <groupId>com.tinckay</groupId>
        <artifactId>sc-f-chapter14</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <dependencies>
        <dependency>
            <groupId>de.codecentric</groupId>
            <artifactId>spring-boot-admin-server-ui</artifactId>
            <version>2.0.3</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.jolokia</groupId>
            <artifactId>jolokia-core</artifactId>
        </dependency>
    </dependencies>
    
</project>

在 admin-server 工程的配置文件 application.yml 服务注册地址为http://localhost:876l/eureka/,服务的端口号为 5000 。 由于 Spring Boot 在 1.5 版本之后, Actuator 的所有 API 接口默认开启了安全验证。为了讲解方便,在本案例中关闭安全验证,即将 management.security.enabled改为 false 。日志的输出路径为“ logs/boot-admin-sample.log ”。 Spring Boot Admin 默认开启env , metrics ,dump,jolokia 和 info 等节点。配置代码如下,更多配置可以查阅官方文档http://codecentric.github.io/spring-boot-admin/1.5 .1/

构建Admin Client

在SpringBoot Admin中集成Turbine

改造Eureka Client

另行构建Eureka Client

构建Turbine工程

在Admin Server中集成Turbine

在SpringBoot Admin中添加安全登陆页面

猜你喜欢

转载自blog.csdn.net/xingxuan4547/article/details/85090948