集群监控Spring Cloud Turbine消息队列篇

介绍

上一篇文章中我们介绍了Turbine简单的通过服务名称的方式构建监控聚合服务,这一章中我们将要讲一下使用消息队列的方式对集群信息进行收集,监控,我们可以将所有需要收集的监控信息都输出到消息代理中,然后turbine订阅消息代理中的消息,通过异步的方式读取消息,最后将读取出来的监控指标输出到Hystrix Dashboard中。

Turbine与消息代理结合

  1. 首先需要一个重要的东西就是消息代理,这里我们使用的是RabbitMQ来进行消息的传递与收集。(环境搭建省略)
  2. 添加依赖项
    1
    2
    3
    4
    5
    6
    7
    8
    <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-turbine-amqp</artifactId>
    </dependency>
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>

或者是

1
2
3
4
5
6
7
8
9
10
11
12
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-turbine-stream</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-stream-rabbit </artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

因为我们可以看到spring-cloud-starter-turbine-amqp实际上是包装了spring-cloud-starter-turbine-stream和spring-cloud-starter-turbine-stream依赖。

  1. 在Spring Boot主类上添加@EnableTurbineStream注解来启用Turbine Stream的配置。

    1
    2
    3
    4
    5
    6
    7
    8
    @EnableTurbineStream
    @EnableDiscoveryClient
    @SpringBootApplication
    public class TurbineApplication(){
    public static void main(String[] args){
    SpringApplication.run(TurbineApplication.class,args);
    }
    }
  2. 配置文件信息中添加RabbitMq的配置信息。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    spring:
    application:
    name: springCloudMonitor
    server:
    port: 8040
    eureka: # 注册为eureka服务。
    instance:
    hostname: registry
    prefer-ip-address: true
    metadata-map:
    user.name: ${security.user.name}
    user.password: ${security.user.password}
    client:
    service-url:
    defaultZone: http://admin:${REGISTRY_SERVER_PASSWORD:password}@localhost:8761/eureka/
    spring:
    rabbitmq:
    host: localhost
    username: guest
    password: guest
    port: 5672

对于Turbine的配置已经完成,还需要对服务消费者做一些修改,修改如下:

  1. 添加对RabbitMQ支持依赖项。
    1
    2
    3
    4
    <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-netflix-hystrix-amqp</artifactId>
    </dependency>

或者添加如下依赖:

1
2
3
4
5
6
7
8
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-netflix-hystrix-stream</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-stream-rabbit</artifactId>
</dependency>

因为第一个依赖项是对下面两个依赖项的整合,所以下面的和上面的效果是以昂的。

  1. 添加对RabbitMQ配置信息的支持。
    1
    2
    3
    4
    5
    6
    spring:
    rabbitmq:
    port: 5672
    username: guest
    password: guest
    host: localhost

这样就可以通过消息队列的方式进行系统监控。

文章目录
  1. 1. 介绍
  2. 2. Turbine与消息代理结合