美文网首页
第6篇:使用spring boot admin + consul

第6篇:使用spring boot admin + consul

作者: 小肥爬爬 | 来源:发表于2021-03-09 10:29 被阅读0次

    why

    使用spring boot admin 可以更方便监控服务状态, 还可以监控部署服务的各项信息, 例如JVM, 日志... 反正是服务监控必备产品.

    admin monitor 工程解读

    工程位于: https://gitee.com/xiaofeipapa/spring-cloud-demo
    目录是: admin-demo

    增加项目依赖

    在工程的pom中可以看到增加了如下依赖:

    
        <dependencies>
            <!--Admin-Server-->
            <dependency>
                <groupId>de.codecentric</groupId>
                <artifactId>spring-boot-admin-starter-server</artifactId>
                <version>2.3.1</version>
            </dependency>
        </dependencies>
    

    我写这篇博客的时间是 2021/3/8 , 当前版本是 2.3.1 . Spring boot admin 有可能会和Spring 本身有包冲突, 所以要注意版本的问题.

    新增启动类

    package org.xiaofeipapa.feimall.admin;
    
    import de.codecentric.boot.admin.server.config.AdminServerHazelcastAutoConfiguration;
    import de.codecentric.boot.admin.server.config.EnableAdminServer;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
    import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
    
    /**
     * 作者: 小肥爬爬
     * 简书: https://www.jianshu.com/u/db796a501972
     * gitee: https://gitee.com/xiaofeipapa
     * 邮箱: imyunshi@163.com
     * 您可以自由转载此博客文章, 恳请保留原链接, 谢谢!
     **/
    @SpringBootApplication
    @EnableAdminServer
    @EnableDiscoveryClient
    @EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
    public class MonitorAdminApplication {
    
        public static void main(String[] args) {
            SpringApplication.run( MonitorAdminApplication.class, args );
        }
    }
    

    主要是多了个 @EnableAdminServer 的注解, 没什么太特殊的.

    配置文件

    ##################
    # 以下配置到consul #
    ##################
    spring:
      application:
        name: monitor-admin
    
      boot:
        admin:
          discovery:
            ignored-services: consul,aliyun-*,baidu-*
      cloud:
        config:
          enabled: false
        consul:
          host: localhost
          port: 8500
          discovery:
            tags: management.context-path=/foo,health.path=/ping
    
    #监控监控
    management:
      endpoints:
        web:
          exposure:
            include: "*"
          path-mapping:
            health: /ping
          base-path: /foo
      endpoint:
        health:
          show-details: always
    

    以上配置主要用于:

    1. 忽略 consul, aliyun, baidu ... 这些服务. 特别是consul, 如果不忽略它会出错.
    2. admin server 也是可以注册到consul的, 它会自动从consul 获取当前注册的服务.
    3. management 本身的配置

    测试

    依次启动各个服务, 包括 MonitorAdminApplication 这个类, 然后访问: localhost:8080, 就能看到:


    image.png

    在微服务间使用 admin client

    server 和 client 模式

    在上面的工程已经可以看到 admin server的模式, 简单来说server 模式就是一个网站, 可以让你查看微服务的各项数据. 但如果你点开微服务, 会发现只有很少数据, 说好的功能强大呢? 那是因为微服务并没有实现 admin 的 client 接口. 如果实现了client , 就能传送准确数据到 admin server 端.

    修改 userApi 工程

    修改pom

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

    修改配置文件

    
    
      boot:
        admin:
          client:
            # 即 admin server 的地址
            url: http://localhost:8080
            instance:
              #默认使用的是主机名注册,改为使用ip注册
              prefer-ip: true
    
    management:
      endpoints:
        web:
          exposure:
            #开放所有页面节点  默认只开启了health、info两个节点
            include: '*'
      endpoint:
        health:
          #显示健康具体信息  默认不会显示详细信息
          show-details: always
    

    测试

    重启 userApi 工程, 然后访问 localhost:8080 , 点进 userApi, 可以看到展示的信息丰富了许多:


    image.png

    最后

    spring boot admin 还可以轻松集成 security 框架, 在登录前加一个用户/验证码的验证页面. 不过个人觉得不是特别必要, 在网上也很容易能查到集成的方法, 就不再赘述了.

    相关文章

      网友评论

          本文标题:第6篇:使用spring boot admin + consul

          本文链接:https://www.haomeiwen.com/subject/vqtmqltx.html