天天看点

微服务监控SpringBootAdmin

SpringBootAdmin微服务监控

Spring Boot Admin用于管理和监控一个或 者多个Spring Boot程序。Spring Boot Admin分为Server端和Client端,Client 端可以通过Http 向Server端注册,也可以结合Spring Cloud的服务注册组件Eureka 进行注册。Spring Boot Admin提供了用AngularJs编写的UI界面,用于管理和监控。

其中监控内容包括Spring Boot的监控组件Actuator 的各个Http节点,也支持更高级的功能,包括Turbine、Jmx、 Loglevel 等。

使用SpringBootAdmin监控SpringCloud微服务

本案例需要使用3个工程,分别为服务注册中心Eureka Server、服务客户端Eureka Client和Spring Boot Admin Server。本案例是一个Maven多Module的工程,需要创建一个 主Maven工程,主Maven工程指定了Spring Boot版本为1.5.3, Spring Cloud版本为Dalston.RELEASE。

主Maven工程的创建过程和服务注册中心Eureka Server的创建过程不再重复,其中Eureka Server的端口号为8761。

构建Admin Server:

在主Maven工程下创建一个 Module工程,取名为admin- server。程作为Spring Boot AdminServer工程,用于对微服务系统进行监控和管理。首先,在admin-server工程的pom文件引入相关的依赖,包括继承了主Maven的pom文件、Spring Boot Admin Server 功能的两个依赖spring-boot-admin-server和spring-boot admin-server-ui、ureka Client 的起步依赖spring-cloud-starter-eureka、Actuator 的起步依赖spring-boot-starter-actuator。 最后,在管理界面中需要与JMX-Beans进行交互,在pom文件中引入Jolokia的依赖。

pom 件的依赖代码如下:

<dependencies>
    <dependency>
        <groupId>de.codecentric</groupId>
        <artifactId>spring-boot-admin-server</artifactId>
        <version>1.5.1</version>
    </dependency>
    <dependency>
        <groupId>de.codecentric</groupId>
        <artifactId>spring-boot-admin-server-ui</artifactId>
        <version>1.5.1</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-eureka</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    <dependency>
        <groupId>org.jolokia</groupId>
        <artifactId>jolokia-core</artifactId>
    </dependency>
</dependencies>
           

在admin-server工程的配置文件application.yml中置服务注册的地址为htp:/ocalhost:8761/1eureka/,服务的端口号为5000。

由于Spring Boot在1.5 版本之后,Actuator 的所有API接口默认开启了安全验证。为了讲解方便,在本案例中关闭安全验证,即将management. Security.enabled改为false。日志的输出路径为“logs/boot-admin-sample.log"。Spring Boot Admin默认开启env、metrics、 dump、 jolokia 和info 等节点。配置代码如下,更多配置可以查阅官方文档

http://codecentric.github.io/sprig-boot-admnin/1.5.1/

.

server:
  port: 5000

spring:
  application:
    name: service-admin
management:
  security:
    enabled: false
logging:
  file: "logs/boot-admin-sample.log"

boot:
  admin:
    routes:
      endpoints: env,metrics,dump,jolokia,info,configprops,trace,logfile,refresh,flyway,liquibase,heapdump,loggers,auditevents,hystrix.stream
      
           

Spring Boot Admin支持对日志的管理,也支持Logback。在1.5x 版本的Spring Boot中,默认的日志为Logback,所以在工程的pom文件中不需要引入Logback的依赖,但需要配置Logback的JMXConfigurator. 在Resources目录下建一个 logback-spring.xml 文件,代码如下:

<?xml version="1.0" encoding="UTF-8" ?>

<configuration>
    <include resource="org/springframework/boot/logging/logback/base.xml"/>
    <jmxConfigurator/>
</configuration>
           

在程序的启动类AdminServerApplication 加上@EnableAdminServer注解,开启AdminServer的功能,加上@EnableEurekaClient注解,开启Eureka Client功能,代码清单如下:

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

构建Admin Client:

同admin-server工程一样, 在主Maven工程下新建一个Module工程,取名为eureka-client-one。eureka-client-one工程的pom文件继承了主Maven的pom文件,并在eureka-client-one工程的pom文件中引入了Web功能的起步依赖spring-boot-starter-web、 Eureka 的起步依赖spring-cloud-starter-eureka、Actuator 的起步依赖spring-boot-starter- actuator,以及Jolokia的依赖jolokia-core。代码如下:

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-eureka</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    <dependency>
        <groupId>org.jolokia</groupId>
        <artifactId>jolokis-core</artifactId>
    </dependency>
</dependencies>
           

配置:

server:
  port: 8762

spring:
  application:
    name: eureka-client-one

eureka:
  client:
    service-url: 
      defaultZone: http://localhost:8761/eureka/

logging:
  file: "logs/eureka-client-one.log"
management:
  security:
    enabled: false
           

启动类:

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

依次启动eureka-server、 eureka-client-one 和admin-server, 在浏览器上访问admin-server的主页htp://ocalhost:5000/,浏览器显示的admin-server的界面如图:

微服务监控SpringBootAdmin
  • “APPLICATIONS"

    选项展示了向Eureka Server注册的所有客户端实例,如本例的eureka-client-one 和service-admin。
  • “JOURNAL"

    选项为服务注册、下线、剔除的时间线。
  • “ABOUT"

    选项是关于Spring Boot Admin的一些介绍。

其中,在“APPLICATIONS"选项的界面展示的客户端实例右侧有一个“Details" 按钮,单击该按钮,可以进入客户端实例的详细界面。在详细界面可以查看客户端实例的信息、日志信息、指标信息、环境信息、日志级别管理和JMX等。

客户端实例的详细界面如图所示

微服务监控SpringBootAdmin
微服务监控SpringBootAdmin

客户端实例的日志界面如图所示:

微服务监控SpringBootAdmin

继续阅读