springboot admin在consul中的应用

众所周知springboot admin是springboot服务的监控框架,有关的文章也不少,但是大多集中在springboot应用及和springcloud eureka的结合上,今天重点介绍springboot admin在consul微服务中的应用。

springboot admin可以非常方便注册到consul并直接获取注册到consul中的全部微服务,从而获取这些微服务的actuator,以此来对这些微服务的状态进行监控,下面就相关的配置方法逐步介绍:

基于admin的springboot starter编写admin server

  • 引入依赖包
  •     <dependencies>
            <dependency>
                <groupId>de.codecentric</groupId>
                <artifactId>spring-boot-admin-starter-server</artifactId>
                <version>${spring-boot-admin.version}</version>
            </dependency>
        </dependencies>
    

    备注:该工程作为consul微服务的子模块,依赖consul框架,因此一些consul的springboot starter在其parent工程里边。

  • 在主类里边注解admin server
  • package com.crazyice.accumulation.admin;
    import de.codecentric.boot.admin.server.config.EnableAdminServer;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
    @SpringBootApplication
    @EnableAdminServer
    @EnableDiscoveryClient
    public class Application {
        public static void main(String[] args) {
            SpringApplication.run( Application.class, args );
    
  • 在consul配置中心配置,也可以将以下配置加入到application.yml中
  • ##################
    # 以下配置到consul #
    ##################
    spring:
     boot:
      admin:
       discovery:
        ignored-services: consul,aliyun-*,baidu-*,juhe-api,syswinrpc-flink
        title: 微服务监控
        brand: <img src="assets/img/icon-spring-boot-admin.svg"><span>微服务监控</span>
    #监控监控
    management:
      health:
        redis:
          enabled: false
        consul:
          enabled: true
        binders:
          enabled: false
      endpoints:
          exposure:
            include: "*"
      endpoint:
        health:
          show-details: always
    
  • 配置通知邮箱
    springboot admin server可以非常方便的将第三方邮箱集成进去,再通过邮件将监控的重要状态变化通知到运维人员邮箱中,配置到application.yml中即可生效(这里以QQ邮箱为例)。
  • spring:
      application:
        name: @project.artifactId@
      profiles:
        active: dev
      #邮箱配置
      mail:
        host: smtp.qq.com
        protocol: smtp
        username: crazyicelee@qq.com
        default-encoding: UTF-8
        #QQ邮箱的授权码
        password: jahsdjahsjfhjsfs
        properties:
          mail:
            smtp:
              auth: true
              starttls:
                enable: true
                required: true
            debug: false
    

    打包成docker镜像并运行

    该服务运行后也是以微服务注册到consul中,也一并纳入到监控行列之中。

    因为consul server和client节点也被注册到consul中,admin缺失情况下也会监控这些节点服务的状况,但是consul本身没有实现actuator,所以要把这些节点的监控忽略掉,否则admin启动后出异常。

    admin server属性配置说明