• Spring Boot Admin极简教程


    一、简介
    Spring Boot Admin是一个完整的应用程序,用于监控和管理Spring Boot应用。原理是通过调用Spring Boot Actuator提供的http接口来实现的监控和管理,所以要想能够被Spring Boot Admin 的Server端管理,则Client端必须集成了Spring Boot Actuator。

    • 可监控内容:
      状态;基本信息;JVM和堆栈实时数据;应用配置信息;缓存指标;线程数据;接口调用数据

    • 可管理内容:
      按照包名调整日志级别;管理、查看和下载系统日志;报警(服务异常下线发送邮件)

    AdminServer的web界面:

    二、Spring-Boot集成

    Spring Boot Admin是C/S结构,server端负责收集和处理client端的数据,并且可以通过向client端发送命令来管理client。

    项目工程目录结构:

    三、Server端

    • 引入所需的pom依赖:spring-boot-starter-web;spring-boot-admin-starter-server
    • application.yml配置文件中配置服务的端口:server.port=9000
    • 启动类上面添加EnableAdminServer的注解

    完整的pom文件:

    
    <?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.3.3.RELEASE</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
        <groupId>com.naylor</groupId>
        <artifactId>admin-server</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <name>admin-server</name>
        <description>Demo project for Spring Boot</description>
    
    
        <properties>
            <java.version>1.8</java.version>
            <spring-boot-admin.version>2.3.0</spring-boot-admin.version>
        </properties>
    
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <dependency>
                <groupId>de.codecentric</groupId>
                <artifactId>spring-boot-admin-starter-server</artifactId>
            </dependency>
    
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
                <exclusions>
                    <exclusion>
                        <groupId>org.junit.vintage</groupId>
                        <artifactId>junit-vintage-engine</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
        </dependencies>
    
    
        <dependencyManagement>
            <dependencies>
                <dependency>
                    <groupId>de.codecentric</groupId>
                    <artifactId>spring-boot-admin-dependencies</artifactId>
                    <version>${spring-boot-admin.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>
    
    

    启动AdminServer后访问 http://127.0.0.1:9000/applications 可以看到“暂无应用注册”的提示

    四、Client端

    • 引入所需的pom依赖:spring-boot-starter-web;spring-boot-admin-starter-client;spring-boot-actuator
    • application.propertis配置文件中增加相关配置:服务端口;服务名称;开启actuator所有端点都可以被访问;AdminServer服务端的地址

    完整的pom文件:

    
    <?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.3.3.RELEASE</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
        <groupId>com.naylor</groupId>
        <artifactId>admin-client</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <name>admin-client</name>
        <description>Demo project for Spring Boot</description>
    
    
        <properties>
            <java.version>1.8</java.version>
            <spring-boot-admin.version>2.3.0</spring-boot-admin.version>
        </properties>
    
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <dependency>
                <groupId>de.codecentric</groupId>
                <artifactId>spring-boot-admin-starter-client</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-actuator</artifactId>
            </dependency>
    
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
                <exclusions>
                    <exclusion>
                        <groupId>org.junit.vintage</groupId>
                        <artifactId>junit-vintage-engine</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
        </dependencies>
    
    
        <dependencyManagement>
            <dependencies>
                <dependency>
                    <groupId>de.codecentric</groupId>
                    <artifactId>spring-boot-admin-dependencies</artifactId>
                    <version>${spring-boot-admin.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>
    
    

    完整的配置文件:

    
    spring.boot.admin.client.url=http://localhost:9000
    
    
    server.port=8003
    spring.application.name=admin-client
    
    
    management.endpoints.web.exposure.include=*
    
    

    启动AdminClient后,访问 http://127.0.0.1:8003/actuator , 先看看actuator是否正常

    同时启动AdminServer和AdminClient:

    访问 http://127.0.0.1:9000/wallboard 可以看到一个client端已经注册到了AdminServer之中

    五、集成到Eureka

    集成到Eureka之后,就不必在每一个Admin-Client的配置文件中都配置一遍Admin-Server的地址,让Admin-Server主动从Eureka中拉取Admin-Client,并获取Actuator地址,进而进行监控和管理。

    1、Admin-Server的配置文件中加入Eureka-Server地址:

    eureka:
      instance:
        hostname: localhost
        #eureka-client 向 eureka-server端发送心跳包的频率
        leaseRenewalIntervalInSeconds: 10
        health-check-url-path: /actuator/health
      client:
        #是否把自己向eureka-server注册
        registerWithEureka: false
        fetch-registry: true
        #从eureka-server拉取已注册服务的列表的频率
        registryFetchIntervalSeconds: 5
        serviceUrl:
          defaultZone: http://${eurekaclient.username}:${eurekaclient.password}@localhost:7001/eureka/
    
    

    配置了serviceUrl之后,Admin-Server就可以从Eureka中获取已经注册的微服务信息,并进行监控和管理。

    至于registerWithEureka是否配置为true,取决于自己的喜欢。配置为false,Admin-Server不会注册到Eureka-Server
    ;配置为true,Admin-Server就会注册到Eureka-Server中,那么,意味着Admin-Server从注册中心拉取微服务的时候会把自己(即Admin-Server)也拉取下来进行监控和管理。

    2、Admin-Client的配置文件中去除已经配置的Admin-Server地址:

    
    #  注释掉配置的Admin-Server地址
    #  spring.boot.admin.client.url=http://localhost:9000
    

    注释掉配置的Admin-Server地址的目的是避免重复,因为当前的Admin-Client作为一个微服务已经注册到了Eureka-Server,那么Admin-Server就已经可以从Eureka-Server中拉取到此服务的Actuator信息。

    若不注释,那么在Admin-Server的WallBoard中将看到两个重复的Admin-Client。

    引用:

    https://www.cnblogs.com/huanchupkblog/p/10563629.html

    https://www.jianshu.com/p/1749f04105fb


  • 相关阅读:
    移动web开发框架研究
    Android客户端缓存机制(文字缓存和多媒体文件缓存)
    edittext实现自动查询,刷新listview
    Android属性动画 nineoldandroids
    android 框架LoonAndroid,码农偷懒专用
    待看
    aidl
    国内外DNS服务器地址列表
    js 防止重复点击
    js 模块化
  • 原文地址:https://www.cnblogs.com/Naylor/p/13614710.html
Copyright © 2020-2023  润新知