前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >服务监控HystrixDashboard

服务监控HystrixDashboard

作者头像
别团等shy哥发育
发布2023-02-25 11:45:57
4710
发布2023-02-25 11:45:57
举报
文章被收录于专栏:全栈开发那些事

服务监控HystrixDashboard

代码仓库地址:gitee仓库链接

1、HystrixDashboard概述

  除了隔离依赖服务的调用以外,Hystrix还提供了准实时的调用监控(Hystrix Dashboard),Hystrix会持续地记录所有通过Hystrix发起的请求的执行信息,并以统计报表和图形的形式展示给用户,包括每秒执行多少请求多少成功,多少失败等。Netflix通过hystrix-metrics-event-stream项目实现了对以上指标的监控。Spring Cloud也提供了Hystrix Dashboard的整合,对监控内容转化成可视化界面。

2、新建DashBoard模块

2.1 新建cloud-consumer-hystrix-dashboard9001模块

image-20220407214312547
image-20220407214312547

2.2 pom.xml

代码语言:javascript
复制
<dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

2.3 application.yml

代码语言:javascript
复制
server:
  port: 9001

2.4 HystrixDashboardMain9001+新注解@EnableHystrixDashboard

代码语言:javascript
复制
@SpringBootApplication
@EnableHystrixDashboard
public class HystrixDashboardMain9001
{
    public static void main(String[] args)
    {
        SpringApplication.run(HystrixDashboardMain9001.class,args);
    }
}

2.5 所有Provider微服务提供类(8001/8002/8003)都需要监控依赖配置

代码语言:javascript
复制
 <!-- actuator监控信息完善 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

  服务提供者都要添加这个依赖

2.6 启动cloud-consumer-hystrix-dashboard9001该微服务后续将监控微服务8001

  访问:http://localhost:9001/hystrix

image-20220407215125856
image-20220407215125856

3、断路器演示(服务监控hystrixDashboard)

3.1 修改cloud-provider-hystrix-payment8001

  注意:新版本Hystrix需要在主启动类MainAppHystrix8001中指定监控路径

代码语言:javascript
复制
@SpringBootApplication
@EnableEurekaClient //本服务启动后会自动注册进eureka服务中
@EnableCircuitBreaker//对hystrixR熔断机制的支持
public class PaymentHystrixMain8001
{
    public static void main(String[] args)
    {
        SpringApplication.run(PaymentHystrixMain8001.class,args);
    }

    /**
     *此配置是为了服务监控而配置,与服务容错本身无关,springcloud升级后的坑
     *ServletRegistrationBean因为springboot的默认路径不是"/hystrix.stream",
     *只要在自己的项目里配置上下面的servlet就可以了
     */
    @Bean
    public ServletRegistrationBean getServlet() {
        HystrixMetricsStreamServlet streamServlet = new HystrixMetricsStreamServlet();
        ServletRegistrationBean registrationBean = new ServletRegistrationBean(streamServlet);
        registrationBean.setLoadOnStartup(1);
        registrationBean.addUrlMappings("/hystrix.stream");
        registrationBean.setName("HystrixMetricsStreamServlet");
        return registrationBean;
    }
}
image-20220407215618451
image-20220407215618451

3.2 监控测试

3.2.1 启动eureka服务注册中心

  本来应该启动eureka集群,这里为了方便就启动一个eureka就行。

image-20220407215804841
image-20220407215804841

3.2.2 9001监控8001

  填写监控地址:http://localhost:8001/hystrix.stream

image-20220407215843219
image-20220407215843219

3.2.2 测试地址

  正常访问:http://localhost:8001/payment/circuit/31

image-20220407220039017
image-20220407220039017

http://localhost:8001/payment/circuit/-31,这个访问会直接调用fallback

image-20220407220046637
image-20220407220046637

  一直刷新http://localhost:8001/payment/circuit/31地址之后,

  查看HystrixDashboard:

image-20220407220228715
image-20220407220228715

  测试服务熔断,我们一直访问错误地址:http://localhost:8001/payment/circuit/-31,不断刷新,直到达到服务熔断的条件,再观察HystrixDashboard会发现断路器打开了。

image-20220407220355482
image-20220407220355482

  可以看到,断路器变成Open状态,断路器已经打开了。

  过一会我们给一条正确的请求:http://localhost:8001/payment/circuit/31,再观察Dashboard

image-20220407220546946
image-20220407220546946

  可以看到,此时断路器由Open变成Closed,这是因为,过一会之后,断路器其实是半开状态,这时候如果给一条正确的请求,断路器检测到该请求返回结果正常之后,就会关闭。

  过程就是服务的降级->进而熔断->恢复调用链路

3.2.3 如何看这个Dashboard?

  七种颜色代表七种状态

image-20220407220836817
image-20220407220836817

实心圆:共有两种含义。它通过颜色的变化代表了实例的健康程度,它的健康度从绿色<黄色<橙色<红色递减。该实心圆除了颜色的变化之外,它的大小也会根据实例的请求流量发生变化,流量越大该实心圆就越大。所以通过该实心圆的展示,就可以在大量的实例中快速的发现故障实例和高压力实例。

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

整图说明:

image-20220407220906749
image-20220407220906749
image-20220407220919863
image-20220407220919863

上面只是几个微服务,在生产环境中会碰到个几百个微服务,大致效果如下:

  到此,HystrixDashboard服务监控就介绍完了,老项目用没问题,新项目的话后面我另写一篇阿里巴巴的Sentinel微服务限流组件。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-04-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 服务监控HystrixDashboard
  • 1、HystrixDashboard概述
  • 2、新建DashBoard模块
    • 2.1 新建cloud-consumer-hystrix-dashboard9001模块
      • 2.2 pom.xml
        • 2.3 application.yml
          • 2.4 HystrixDashboardMain9001+新注解@EnableHystrixDashboard
            • 2.5 所有Provider微服务提供类(8001/8002/8003)都需要监控依赖配置
              • 2.6 启动cloud-consumer-hystrix-dashboard9001该微服务后续将监控微服务8001
              • 3、断路器演示(服务监控hystrixDashboard)
                • 3.1 修改cloud-provider-hystrix-payment8001
                  • 3.2 监控测试
                    • 3.2.1 启动eureka服务注册中心
                    • 3.2.2 9001监控8001
                    • 3.2.2 测试地址
                    • 3.2.3 如何看这个Dashboard?
                相关产品与服务
                服务网格
                服务网格(Tencent Cloud Mesh, TCM),一致、可靠、透明的云原生应用通信网络管控基础平台。全面兼容 Istio,集成腾讯云基础设施,提供全托管服务化的支撑能力保障网格生命周期管理。IaaS 组网与监控组件开箱即用,跨集群、异构应用一致发现管理加速云原生迁移。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档