SpringCloud Hystrix-Dashboard仪表盘的实现

作者:寻找风口的猪 时间:2023-03-16 18:38:03 

Hystrix Dashboard,它主要用来实时监控Hystrix的各项指标信息。通过Hystrix Dashboard反馈的实时信息,可以帮助我们快速发现系统中存在的问题。下面通过一个例子来学习。

一、新建一个Spring Cloud 项目,命名为hystrix-dashboard

1.1在pom.xml引入相关的依赖


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

1.2在spring boot 的启动类上面引入注解@EnableHystrixDashboard,启用Hystrix Dashboard功能。


package org.hope.hystrix.dashboard;

import org.springframework.boot.SpringApplication;
import org.springframework.cloud.client.SpringCloudApplication;
import org.springframework.cloud.netflix.hystrix.dashboard.EnableHystrixDashboard;

@EnableHystrixDashboard
@SpringCloudApplication
public class HystrixDashboardApplication {
public static void main(String[] args) {
 SpringApplication.run(HystrixDashboardApplication.class, args);
}

}

1.3修改配置文件application.properties


spring.application.name=hystrix-dashboard
server.port=2001

1.4启动应用,然后再浏览器中输入http://localhost:2001/hystrix可以看到如下界面

SpringCloud Hystrix-Dashboard仪表盘的实现

通过Hystrix Dashboard主页面的文字介绍,我们可以知道,Hystrix Dashboard共支持三种不同的监控方式

☞默认的集群监控:通过URL:http://turbine-hostname:port/turbine.stream开启,实现对默认集群的监控。

☞指定的集群监控:通过URL:http://turbine-hostname:port/turbine.stream?cluster=[clusterName]开启,实现对clusterName集群的监控。

☞单体应用的监控:通过URL:http://hystrix-app:port/hystrix.stream开启,实现对具体某个服务实例的监控。

☞Delay:控制服务器上轮询监控信息的延迟时间,默认为2000毫秒,可以通过配置该属性来降低客户端的网络和CPU消耗。

☞Title:该参数可以展示合适的标题。

二、要有一个eureka-server用来提供eureka的服务注册中心,在码云上有,可以作为参考。此处不再粘代码。

三、要有一个eureka-service来提供服务,工程名为hello-service,项目地址同上。

四、新建一个服务被监控的工程,工程名为ribbon-customer。

4.1pom.xml引入相关依赖


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

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

4.2在启动类上添加@EnableCircuitBreaker 开启断路器功能


package com.didispace;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.circuitbreaker.EnableCircuitBreaker;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;

@EnableCircuitBreaker //开启断路器功能
@EnableDiscoveryClient
@SpringBootApplication
public class ConsumerApplication {

@Bean
@LoadBalanced
RestTemplate restTemplate() {
 return new RestTemplate();
}
public static void main(String[] args) {
 SpringApplication.run(ConsumerApplication.class, args);
}

}

4.3 RestController


package com.didispace.web;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class ConsumerController {

@Autowired
HelloService helloService;

@RequestMapping(value = "/ribbon-consumer", method = RequestMethod.GET)
public String helloConsumer() {
 return helloService.hello();
}

}

4.4 application.properties配置文件


spring.application.name=ribbon-consumer
server.port=9000
eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=2000

通过上面的步骤,已经基本完成了准备工作,下面我们进行测试。

1.启动eureka-server

2.启动hello-service

3.启动ribbon-customer

4.启动hystrix-dashboard

5.在浏览器输入http://localhost:2001/hystrix

6.在浏览器的新窗口输入http://localhost:9000/ribbon-consumer

7.在Hystrix-Dashboard的主界面上输入: http://localhost:9000/hystrix.stream然后点击 Monitor Stream按钮

SpringCloud Hystrix-Dashboard仪表盘的实现

在监控的界面有两个重要的图形信息:一个实心圆和一条曲线。

  • 实心圆:1、通过颜色的变化代表了实例的健康程度,健康程度从绿色、黄色、橙色、红色递减。2、通过大小表示请求流量发生变化,流量越大该实心圆就越大。所以可以在大量的实例中快速发现故障实例和高压实例。

  • 曲线:用来记录2分钟内流浪的相对变化,可以通过它来观察流量的上升和下降趋势。

注意:当使用Hystrix Board来监控Spring Cloud Zuul构建的API网关时,Thread Pool信息会一直处于Loading状态。这是由于Zuul默认会使用信号量来实现隔离,只有通过Hystrix配置把隔离机制改成为线程池的方式才能够得以展示。

参考:

[1]《Spring Cloud微服务实战》,翟永超

[2]博客,纯洁的微笑,https://www.jb51.net/article/167053.htm

来源:https://www.cnblogs.com/happyflyingpig/p/8372485.html

标签:SpringCloud,Hystrix-Dashboard,仪表盘
0
投稿

猜你喜欢

  • C# 使用WPF 用MediaElement控件实现视频循环播放

    2022-04-28 03:34:26
  • Android中判断网络是否可用的代码分享

    2022-01-03 23:59:46
  • C# 屏蔽关键字的实现方法

    2023-10-10 15:15:50
  • SpringBoot实现项目健康检查与监控

    2023-10-28 19:14:25
  • 解决ThingsBoard编译报错问题:Failure to find org.gradle:gradle-tooling-api:jar:6.3

    2021-11-20 16:24:22
  • Java自定义注解用法实例小结

    2023-03-26 09:13:51
  • Spring AOP的底层实现方式-代理模式

    2022-10-05 23:27:50
  • Android开启动画之渐隐渐现效果

    2021-07-21 08:45:28
  • Java中logback 自动刷新不生效的问题解决

    2022-09-07 21:26:04
  • Spring Boot2.x如何自定义Endpoint

    2023-03-05 18:04:12
  • C#正则表达式判断输入日期格式是否正确

    2022-04-20 07:31:32
  • C#编程实现四舍五入、向上及下取整的方法

    2023-10-25 07:59:38
  • IDEA打包jar-解决找不到或无法加载主类 main的问题

    2021-12-28 10:30:42
  • Java实现发送邮件并携带附件

    2023-07-23 19:02:25
  • Spring security登录过程逻辑详解

    2022-09-04 19:58:20
  • maven 配置多个仓库的方法

    2021-06-09 03:30:24
  • Android AIDL实现两个APP间的跨进程通信实例

    2022-03-29 08:37:54
  • Java编程实现对十六进制字符串异或运算代码示例

    2023-11-06 15:58:15
  • Java并发编程之ReadWriteLock读写锁的操作方法

    2023-12-07 20:08:37
  • Java 爬虫工具Jsoup详解

    2022-04-11 03:46:16
  • asp之家 软件编程 m.aspxhome.com