• Hystrix Dashboard断路监控仪表盘


            正常状态是UP,跳闸是⼀种状态CIRCUIT_OPEN,可以通过/health查看,前提是工程中需要引入SpringBoot的actuator(健康监控),它提供了很多监控所需的接口,可以对应用系统进行配置查看、相关功能统计等。

      已经统一添加在父工程中

    1. <dependency>
    2. <groupId>org.springframework.bootgroupId>
    3. <artifactId>spring-boot-starter-actuatorartifactId>
    4. dependency>

            如果我们想看到Hystrix相关数据,比如有多少请求、多少成功、多少失败、多少降级等,那么引入SpringBoot健康监控之后,访问/actuator/hystrix.stream接口可以获取到监控的文字信息,但是不直观,所以Hystrix官方还提供了基于图形化的DashBoard(仪表板)监控平 台。Hystrix仪表板可以显示每个断路器(被@HystrixCommand注解的方法)的状态。

    1)新建一个监控服务工程,导入依赖 

     

    1. "1.0" encoding="UTF-8"?>
    2. <project xmlns="http://maven.apache.org/POM/4.0.0"
    3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    5. <parent>
    6. <artifactId>lagou-parentartifactId>
    7. <groupId>com.lagougroupId>
    8. <version>1.0-SNAPSHOTversion>
    9. parent>
    10. <modelVersion>4.0.0modelVersion>
    11. <artifactId>lagou-cloud-hystrix-dashboard-9000artifactId>
    12. <dependencies>
    13. <dependency>
    14. <groupId>org.springframework.cloudgroupId>
    15. <artifactId>spring-cloud-starter-netflix-hystrixartifactId>
    16. dependency>
    17. <dependency>
    18. <groupId>org.springframework.cloudgroupId>
    19. <artifactId>spring-cloud-starter-netflix-hystrix-dashboardartifactId>
    20. dependency>
    21. <dependency>
    22. <groupId>org.springframework.cloudgroupId>
    23. <artifactId>spring-cloud-starter-netflix-eureka-clientartifactId>
    24. dependency>
    25. dependencies>
    26. <properties>
    27. <maven.compiler.source>11maven.compiler.source>
    28. <maven.compiler.target>11maven.compiler.target>
    29. properties>
    30. project>

    2)启动类添加@EnableHystrixDashboard激活仪表盘

    1. package com.lagou.edu;
    2. import org.springframework.boot.SpringApplication;
    3. import org.springframework.boot.autoconfigure.SpringBootApplication;
    4. import org.springframework.cloud.netflix.hystrix.dashboard.EnableHystrixDashboard;
    5. @SpringBootApplication
    6. @EnableHystrixDashboard // 开启hystrix dashboard
    7. public class HystrixDashboardApplication9000 {
    8. public static void main(String[] args) {
    9. SpringApplication.run(HystrixDashboardApplication9000.class, args);
    10. }
    11. }

    3) application.yml

    1. server:
    2. port: 9000
    3. Spring:
    4. application:
    5. name: lagou-cloud-hystrix-dashboard
    6. eureka:
    7. client:
    8. serviceUrl: # eureka server的路径
    9. defaultZone: http://LagouCloudEurekaServerB:8762/eureka,http://LagouCloudEurekaServerA:8761/eureka #把 eureka 集群中的所有 url 都填写了进来,也可以只写⼀台,因为各个 eureka server 可以同步注册表
    10. instance:
    11. #使⽤ip注册,否则会使⽤主机名注册了(此处考虑到对⽼版本的兼容,新版本经过实验都是ip)
    12. prefer-ip-address: true
    13. #⾃定义实例显示格式,加上版本号,便于多版本管理,注意是ip-address,早期版本是ipAddress
    14. instance-id: ${spring.cloud.client.ipaddress}:${spring.application.name}:${server.port}:@project.version@

    4)在被监测的微服务中注册监控servlet(自动投递微服务,监控数据就是来自于这个微服务)

    1. package com.lagou.edu;
    2. import com.netflix.hystrix.contrib.metrics.eventstream.HystrixMetricsStreamServlet;
    3. import org.springframework.boot.SpringApplication;
    4. import org.springframework.boot.autoconfigure.SpringBootApplication;
    5. import org.springframework.boot.web.servlet.ServletRegistrationBean;
    6. import org.springframework.cloud.client.SpringCloudApplication;
    7. import org.springframework.cloud.client.circuitbreaker.EnableCircuitBreaker;
    8. import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
    9. import org.springframework.cloud.client.loadbalancer.LoadBalanced;
    10. import org.springframework.cloud.netflix.hystrix.EnableHystrix;
    11. import org.springframework.context.annotation.Bean;
    12. import org.springframework.web.client.RestTemplate;
    13. @SpringBootApplication
    14. @EnableDiscoveryClient
    15. // @EnableHystrix // 打开Hystrix功能
    16. @EnableCircuitBreaker // 开启熔断器功能(这个与@EnableHystrix的功能相同,只不过它是通用注解)
    17. // @SpringCloudApplication // 综合性注解 @SpringCloudApplication = @SpringBootApplication + @EnableDiscoveryClient + @EnableCircuitBreaker
    18. public class AutoDeliverApplication {
    19. public static void main(String[] args) {
    20. SpringApplication.run(AutoDeliverApplication.class, args);
    21. }
    22. // 使用RestTemplate模板对象远程调用
    23. @Bean
    24. @LoadBalanced
    25. public RestTemplate gerRestTemplate() {
    26. return new RestTemplate();
    27. }
    28. /**
    29. * 给被监控微服务中注册一个servlet,后期我们就是通过访问这个servlet来获取服务的Hystrix监控数据的
    30. * 前提:被监控的微服务,需要引入SpringBoot Actuator的功能
    31. * @return
    32. */
    33. @Bean
    34. public ServletRegistrationBean getServlet() {
    35. HystrixMetricsStreamServlet streamServlet = new HystrixMetricsStreamServlet();
    36. ServletRegistrationBean registrationBean = new ServletRegistrationBean(streamServlet);
    37. registrationBean.setLoadOnStartup(1);
    38. registrationBean.addUrlMappings("/actuator/hystrix.stream");
    39. registrationBean.setName("HystrixMetricsStreamServlet");
    40. return registrationBean;
    41. }
    42. }

            被监控微服务发布之后,可以直接访问监控servlet,但是得到的数据并不直观,后期可以结合仪表盘更友好的展示

    5)访问测试http://localhost:9000/hystrix 

    输入监控的微服务端点地址,展示监控的详细数据,比如监控服务消费者http://localhost:8090/actuator/hystrix.stream 

    实心圆:

    • 大小:代表请求流量的大小,流量越大球越大
    • 颜色:代表请求处理的健康状态,从绿色到红色递减,绿色代表健康,红色就代表很不健康

    曲线波动图: 记录了2分钟内该方法上流量的变化波动图,判断流量上升或者下降的趋势

  • 相关阅读:
    基于人工神经网络的车牌识别系统的研究(Matlab代码实现)
    File对象转MultipartFile 如何new出高仿MultipartFile对象
    pandas的一些函数
    机器学习实战(2)——端到端的机器学习项目
    websocket多线程发送消息报错TEXT_PARTIAL_WRITING--自旋锁替换synchronized独占锁的使用案例
    牛客小白月赛61-C-小喵觅食
    智安新闻|智安网络亮相2023网安周!
    v73.结构
    算法竞赛入门【码蹄集进阶塔335题】(MT2301-2305)
    点击空白处弹出框取消
  • 原文地址:https://blog.csdn.net/weixin_52851967/article/details/126455020