• springboot之spring-boot-admin对springboot服务进行监控


    什么是 Spring Boot Admin?

    Spring Boot Admin 是一个管理和监控 Spring Boot 应用程序的开源软件。每个应用都认为是一个客户端,通过 HTTP 或者使用 Eureka 注册到 admin server 中进行展示,Spring Boot Admin UI 部分使用 VueJs 将数据展示在前端。

    这篇文章给大家介绍如何使用 Spring Boot Admin 对 Spring Boot 应用进行监控。

    监控单体应用

    这节给大家展示如何使用 Spring Boot Admin 监控单个 Spring Boot 应用。

    Admin Server 端

    项目依赖

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

    配置文件

    server.port=8000

    服务端设置端口为:8000。

    启动类

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

    完成上面三步之后,启动服务端,浏览器访问http://localhost:8000可以看到以下界面:

    Admin Client 端

    项目依赖

    <dependencies>
        <dependency>
          <groupId>de.codecentric</groupId>
          <artifactId>spring-boot-admin-starter-client</artifactId>
          <version>2.1.0</version>
        </dependency>
        <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

    配置文件

    server.port=8001
    spring.application.name=Admin Client
    spring.boot.admin.client.url=http://localhost:8000  
    management.endpoints.web.exposure.include=*
    • spring.boot.admin.client.url 配置 Admin Server 的地址
    • management.endpoints.web.exposure.include=* 打开客户端 的监控。

    启动类

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

    配置完成之后,启动 Client 端,Admin 服务端会自动检查到客户端的变化,并展示其应用

     页面会展示被监控的服务列表,点击详项目名称会进入此应用的详细监控信息。

     通过上图可以看出,Spring Boot Admin 以图形化的形式展示了应用的各项信息,这些信息大多都来自于 Spring Boot Actuator 提供的接口。

    监控微服务

    如果我们使用的是单个 Spring Boot 应用,就需要在每一个被监控的应用中配置 Admin Server 的地址信息;如果应用都注册在 Eureka 中就不需要再对每个应用进行配置,Spring Boot Admin 会自动从注册中心抓取应用的相关信息。

    如果我们使用了 Spring Cloud 的服务发现功能,就不需要在单独添加 Admin Client 客户端,仅仅需要 Spring Boot Server ,其它内容会自动进行配置。

    接下来我们以 Eureka 作为服务发现的示例来进行演示,实际上也可以使用 Consul 或者 Zookeeper。

    1、服务端和客户端添加 spring-cloud-starter-eureka 到包依赖中

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

    2、启动类添加注解

    @Configuration
    @EnableAutoConfiguration
    @EnableDiscoveryClient
    @EnableAdminServer
    public class SpringBootAdminApplication {
        public static void main(String[] args) {
            SpringApplication.run(SpringBootAdminApplication.class, args);
        }
    
        @Configuration
        public static class SecurityPermitAllConfig extends WebSecurityConfigurerAdapter {
            @Override
            protected void configure(HttpSecurity http) throws Exception {
                http.authorizeRequests().anyRequest().permitAll()  
                    .and().csrf().disable();
            }
        }
    }

    使用类 SecurityPermitAllConfig 关闭了安全验证。

    3、在客户端中配置服务发现的地址

    eureka:   
      instance:
        leaseRenewalIntervalInSeconds: 10
        health-check-url-path: /actuator/health
        metadata-map:
          startup: ${random.int}    #needed to trigger info and endpoint update after restart
      client:
        registryFetchIntervalSeconds: 5
        serviceUrl:
          defaultZone: ${EUREKA_SERVICE_URL:http://localhost:8761}/eureka/
    
    management:
      endpoints:
        web:
          exposure:
            include: "*"  
      endpoint:
        health:
          show-details: ALWAYS

    Spring Cloud 提供了示例代码可以参考这里:spring-boot-admin-sample-eureka

    参考地址

  • 相关阅读:
    [luoguP2221] [HAOI2012]高速公路(线段树)
    SICP:对数步数内迭代计算幂的函数
    python__tkinter之listbox&button
    C陷阱与缺陷 之 各种知识技巧
    ACM && Find Minimum in Rotated Sorted Array
    windows编程一些小知识
    Linux_C pthread 关于多线程一个简单的程序
    ACM&贪心算法
    Linux_C socket 数据报之client, server.c
    Linux_C socket 数据报之一些辅助函数
  • 原文地址:https://www.cnblogs.com/Vincent-yuan/p/14027699.html
Copyright © 2020-2023  润新知