Hystrix-Dashboard仪表盘_weixin_30454481的博客-程序员秘密

技术标签: java  

  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可以看到如下界面

 

通过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按钮

 

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

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

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


 

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


 

参考:

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

 [2]博客,纯洁的微笑,http://blog.csdn.net/ityouknow/article/details/72625646

 

转载于:https://www.cnblogs.com/happyflyingpig/p/8372485.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_30454481/article/details/98988259

智能推荐

linux 命令run road,Linux命令之ps_Iris Pan的博客-程序员秘密

Linux命令之ps功能说明Linux中的ps命令是Process Status的缩写。ps命令用来列出系统中当前运行的那些进程。ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程,如果想要动态的显示进程信息,就可以使用top命令。要对进程进行监测和控制,首先必须要了解当前进程的情况,也就是需要查看当前进程,而ps命令就是最基本同时也是非常强大的进程查看命令。使用该命令可以确...

yum/rpmbuild的安装_meiowei的博客-程序员秘密

red9下的yum安装: 1月2日redhat9.0上安装yumrpm -Uvh http://ftp.freshrpms.net/pub/freshrpms/redhat/9/yum/yum-2.0.4-1.rh.fr.i386.rpm自动安装rpmbuildyum install rpm-build 安装完成rpmbuild源后(可能需要较长时间),再...

删除GitHub远程仓库中的文件夹或文件_winne雪的博客-程序员秘密

在上传项目到github时,忘记忽略了某个文件夹vue-music,就直接push上去了, 最后意识到了此问题,决定删除掉远程仓库中的vue-music文件夹删除前:删除后:在github上只能删除仓库,却无法删除文件夹或文件, 所以只能通过命令来解决。解决步骤如下:1、首先把github远程仓库项目clone到本地:$git clone http://xxxx项目地址2、进入到...

Linux添加PYTHONPATH方法以及3种修改环境变量方法_linux pythonpath_永不言弃的小颖子的博客-程序员秘密

方法一:用于当前终端export PATH=$PATH:&lt;你的要加入的路径&gt;上面的方法只适用于当前终端,一旦当前终端关闭或在另一个终端中,则无效;方法二:用于当前用户在用户主目录下有一个 .bashrc 隐藏文件,可以在此文件中加入 PATH 的设置如下:(1)gedit ~/.bashrc(2)export PATH=&lt;你的要加入的路径&gt;:$PATH(3)加入多个路径:export PATH=&lt;你要加入的路径1&gt;:&lt;你要加入的路径2&gt;: …

手把手教你配置一个强大的Vim_Jammm的博客-程序员秘密

从Windows编程到Linux编程,没有了整齐的自动排版,没有了语法高亮,一切都变得不适应。什么都没有的linux是怎么赢的大佬们的喜爱的呢?接下来我们就通过配置我们的vim,让我们的Linux编程变得更强大,更轻松。首先需要手动设置一个配置文件:.vimrc。再启动vim时,当前根目录下的.vimrc文件会被自动读取,该文件可以包含一些设置,创建命令为:$vi ~/.v

线上k8s环境swagger2调用接口失败_Alphathur的博客-程序员秘密

最近后端项目集成了swagger2,浏览器正常打开了swagger-ui.html,但是调用接口时却报404错误,仔细一看是接口调用地址和浏览器访问地址并不相同。分析了下接口调用地址的host,它竟然是k8s环境中的后端应用的service。由于当前项目通过k8s部署,前端和后端app均以容器的形式运行在pod之中,pod之间通过service指定的host和端口号来进行访问,所以浏览...

随便推点

win10 搭建linux 虚机集群实战_天涯路、赤子心的博客-程序员秘密

以前很少在本地模拟分布式集群、高并发框架的开发(一般都是在公司或者客户的集群开发环境、部署环境实操),心有不甘,今天就突然很想在自己本地也搭建一套集群环境,然后就实战了一把,果然效果还不错,下面就将具体细节记录一下,供有兴趣的小伙伴参考参考。笔者选择的是linux虚拟机,主要是它有很多版本可以选择,轻量便捷,最主要的是它更能客观真实的还原大多数生产环境宿主系统。第一步:下载安装VMware...

node.js 安装及配置 及其他安装_nose.js查不到版本号_hu071007310的博客-程序员秘密

推荐及本文来源:http://www.oschina.net/question/12_47164推荐及本文来源:http://www.itnose.net/detail/6189789.html

64位整数乘法---------------------快速乘_AKone123456的博客-程序员秘密

解析:因为a和b的范围在1e18 。所以两数相乘一定爆long long 所以快速乘#include&lt;bits/stdc++.h&gt;using namespace std;typedef long long ll;int main(){ ll a,b,p; cin&gt;&gt;a&gt;&gt;b&gt;&gt;p; ll res=0; w...

Ext JS 4.2.1 Beta 1发布了_上将军的博客-程序员秘密

下载地址:http://www.sencha.com/forum/showthread.php?261008-Ext-JS-4.2.1-Beta-1-Now-AvailableI am pleased to announce that Ext JS 4.2.1 Beta 1 is available for your testing and reviewing pleasure. We have

mfc 中SetWindowText无效_setwindowtext没有用_sayhitrue的博客-程序员秘密

OnCreate{....this->SetWindowText("I Love You");//也可以没有this....}PreCreateWindow{....cs.style &= ~FWS_ADDTOTITLE;....}即:如果你只在oncreate中用SetWindowText,会出现不显示,无效。应该在PreCreateWindow中去掉FWS_ADDTOTITL

小米5刷Flyme 6 体验竟然比MIUI 8还好?_孟迎霞的博客-程序员秘密

对于许多玩机达人来说,手机刷机就像家常便饭,哪个菜吃腻了就换另一个菜,体验不一样的新鲜感。而以Flyme和MIUI为代表的国产优秀第三方Android定制系统,也会定期为其他品牌的热门机型进行官方ROM的适配,给用户带来特别的体验。今年5月份,就已爆出Flyme 6第三方ROM正式上线的消息。当时官方宣布第一批适配机型共有十款,包括许多经典热门机型,如一加3T、联想ZUK Z2和谷歌Nex...

推荐文章

热门文章

相关标签