美文网首页
第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