微服务架构学习-进阶篇--05,可视化的数据监控

一,一种可视化的数据监控dashboard

首先看下非可视化的数据监控:
我们先在原来的项目e-book-consumer-hystrix-ribbon-threadpool上做些改造。
(1)pom文件加入如下依赖:

    <dependency>
	    <groupId>org.springframework.boot</groupId>
	    <artifactId>spring-boot-starter-actuator</artifactId>
	</dependency>
	
	<dependency>
		<groupId>org.springframework.cloud</groupId>
		<artifactId>spring-cloud-starter-hystrix-dashboard</artifactId>
    </dependency>

(2)启动类中加入两个注解。
在这里插入图片描述

(3)启动,浏览器访问http://localhost:8104/list,结果如下:
在这里插入图片描述

(4)然后浏览器访问http://localhost:8104/hystrix.stream,结果如下:
在这里插入图片描述
一般我们不会去看上面的那些数据,现在来看下可视化数据监控是怎样弄的。
(5)复制一份e-book-consumer-hystrix-ribbon-threadpool项目到e-book-consumer-hystrix,重命名为e-book-consumer-hystrix-dashboard,保留配置文件及启动类和pom文件,其他的删掉。
(6)启动该项目。
(7)浏览器访问http://localhost:8107/hystrix/,界面如下:
在这里插入图片描述

在url框中输入:http://localhost:8104/hystrix.stream,如何在title框中输入test(随便输),点击下面的“Monitor Stream”按钮,出现的界面如下,连续访问http://localhost:8104/list:
在这里插入图片描述
下面是一张解析图:
在这里插入图片描述

二,如何在集群的情况下收集监控信息

上一节讲的是用dashboard去监控单个服务的信息,但是监控单个服务的数据没有多大意义,要想看整个系统的监控数据,就需要用到spring cloud的另一个组件,即hystrix turbine。turbine将每个服务的hystrix dashboard的监控数据进行了整合。turbine的使用很简单,只需加入相应的注解,依赖和配置即可。

(1)首先我们改造一下e-book-consumer-hystrix-feign-fallback。
A,修改启动类,加上如下注解:

@EnableHystrixDashboard
@EnableCircuitBreaker

B,修改pom文件,加入如下依赖:

	<dependency>
	    <groupId>org.springframework.boot</groupId>
	    <artifactId>spring-boot-starter-actuator</artifactId>
	</dependency>
	
	<dependency>
		<groupId>org.springframework.cloud</groupId>
		<artifactId>spring-cloud-starter-hystrix-dashboard</artifactId>
	</dependency>

(2)在e-book-consumer-hystrix模块下新建一个maven项目,命名为e-book-consumer-hystrix-turbine。
(3)修改pom文件,加入如下依赖:

	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-web</artifactId>
	</dependency>
	
	<dependency>
		<groupId>org.springframework.cloud</groupId>
    	<artifactId>spring-cloud-starter-hystrix</artifactId>
	</dependency>
	
	<dependency>
	    <groupId>org.springframework.boot</groupId>
	    <artifactId>spring-boot-starter-actuator</artifactId>
	</dependency>
	
	<dependency>
		<groupId>org.springframework.cloud</groupId>
		<artifactId>spring-cloud-starter-hystrix-dashboard</artifactId>
	</dependency>
	
	<dependency>
		<groupId>org.springframework.cloud</groupId>
		<artifactId>spring-cloud-starter-turbine</artifactId>
	</dependency>
	
	<dependency>
		<groupId>org.springframework.cloud</groupId>
		<artifactId>spring-cloud-netflix-turbine</artifactId>
	</dependency>

(4)修改配置文件。

spring.application.name=e-book-hystrix-dashboard
server.port=8108

eureka.client.serviceUrl.defaultZone=http://user:123456@eureka1:8761/eureka/,http://user:123456@eureka2:8762/eureka/

#默认是hostname 注册,改成IP 注册
eureka.instance.perferIpAddress=true

#---------------------------------------turbine--------------------------
#配置Eureka中的serviceId列表,表明监控哪些服务
turbine.appConfig=e-book-consumer-hystrix-ribbon-threadpool,e-book-consumer-hystrix-feign-fallback
#指定聚合哪些集群,多个使用","分割,默认为default。可使用http://.../turbine.stream?cluster={clusterConfig之一}访问
turbine.aggregator.clusterConfig= default
# 1. clusterNameExpression指定集群名称,默认表达式appName;此时:turbine.aggregator.clusterConfig需要配置想要监控的应用名称;
# 2. 当clusterNameExpression: default时,turbine.aggregator.clusterConfig可以不写,因为默认就是default;
# 3. 当clusterNameExpression: metadata['cluster']时,假设想要监控的应用配置了eureka.instance.metadata-map.cluster: ABC,
#          则需要配置,同时turbine.aggregator.clusterConfig: ABC
turbine.clusterNameExpression="default"

(5)添加一个启动类

package com.twf.e.book.consumer.hystrix.turbine;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.turbine.EnableTurbine;


@SpringBootApplication
@EnableTurbine  // 开启turbine
public class HystrixTurbineApplication {

	public static void main(String[] args) {
		SpringApplication.run(HystrixTurbineApplication.class, args);
	}
}

(6)启动eureka注册中心,启动e-book-consumer-hystrix-ribbon-threadpool,e-book-consumer-hystrix-feign-fallback这两个服务,再启动e-book-consumer-hystrix-dashboard,如何启动本项目turbine。
(7)浏览器访问http://localhost:8108/turbine.stream,结果如下:
在这里插入图片描述
(8)然后浏览器访问http://localhost:8107/hystrix,url框中输入http://localhost:8108/turbine.stream,点击“Monitor Stream”按钮,界面如下:
在这里插入图片描述
(注意,若界面出不来,可能原因是没有请求,我们可以访问一下这两个服务的接口接口:http://localhost:8104/list,http://localhost:8105/list)
(9)源码点这里

三,采用RabbitMQ,收集监控数据

首先我们来看一下turbine+dashboard收集数据监控信息得原理图,如下:
在这里插入图片描述
而采用RabbitMQ之后的原理图如下:
在这里插入图片描述
其实就是在消费者和turbine之间加入了rabbitmq。

为什么要采用RabbitMQ来收集监控数据呢?
1,降低耦合度,服务不再直接依赖turbine了;
2,不用再写turbine的配置信息。

下面是实战例子。
(1)在e-book-consumer-hystrix模块下新建maven项目,命名为e-book-consumer-hystrix-threadpool-mq,拷贝项目e-book-consumer-hystrix-threadpool的文件及部分代码到该新建项目。
(2)修改pom文件,添加如下依赖:

        <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>

(3)修改配置文件,添加如下配置:

spring.rabbitmq.host=127.0.0.1
spring.rabbitmq.port=5672
spring.rabbitmq.username=twf
spring.rabbitmq.password=123456
spring.rabbitmq.virtualHost=/	

(4)然后在e-book-consumer-hystrix模块下再新建一个maven项目,命名为e-book-consumer-hystrix-turbine-mq,拷贝项目e-book-consumer-hystrix-turbine的文件及部分代码到该项目。
(5)修改pom文件,去掉所有依赖,加入如下依赖:

        <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>

(6)修改配置文件,去掉原来的turbine的配置,加入rabbitmq的配置:

spring.rabbitmq.host=127.0.0.1
spring.rabbitmq.port=5672
spring.rabbitmq.username=twf
spring.rabbitmq.password=123456
spring.rabbitmq.virtualHost=/	

(7)修改启动类,修改注解,如下:

package com.twf.e.book.consumer.hystrix.turbine.mq;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.turbine.stream.EnableTurbineStream;


@SpringBootApplication
@EnableTurbineStream
public class HystrixTurbineMqApplication {

	public static void main(String[] args) {
		SpringApplication.run(HystrixTurbineMqApplication.class, args);
	}
}

(8)然后启动eureka注册中心,启动dashboard,启动刚刚新建的两个项目。
(9)浏览器访问http://localhost:8107/hystrix,在这个页面的url框中输入http://localhost:8108/turbine.stream,点击下边按钮得如下展示:
在这里插入图片描述
(10)源码点这里

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值