🧠 核心概念

  1. 作用
    Hystrix Dashboard 是 Netflix 开发的实时监控工具,用于可视化 Hystrix 熔断器的运行指标,包括:

    • 请求响应时间、成功率、熔断状态
    • 线程池使用情况(活跃线程、队列大小)
    • 错误率与超时请求统计
  2. 数据来源
    通过聚合微服务暴露的 /actuator/hystrix.stream 端点数据,以图表形式展示。

  3. 适用场景

    • 单服务监控:直接监控单个应用的熔断状态
    • 集群监控:结合 Turbine 聚合多节点数据

⚙️ 操作步骤(Spring Boot 3.x)

1. 搭建 Dashboard 服务

依赖配置(pom.xml)

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

启动类注解

@SpringBootApplication
@EnableHystrixDashboard // 启用仪表盘
public class DashboardApp {
    public static void main(String[] args) {
        SpringApplication.run(DashboardApp.class, args);
    }
}

配置文件(application.yml)

server:
  port: 9004 # 仪表盘访问端口
hystrix:
  dashboard:
    proxy-stream-allow-list: "*" # 允许所有IP的监控流

2. 配置被监控的服务

添加依赖

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

暴露监控端点(application.yml)

management:
  endpoints:
    web:
      exposure:
        include: hystrix.stream  # 开启hystrix.stream端点

触发熔断请求
需先调用服务接口(如 http://localhost:8080/api),否则监控流仅显示 ping

3. 访问监控面板

  1. 浏览器访问 http://localhost:9004/hystrix
  2. 输入被监控服务的 URL:http://<服务IP>:<端口>/actuator/hystrix.stream
  3. 点击 Monitor Stream 启动监控

🚨 常见错误与解决

问题现象 原因与解决方案
持续显示 ping... 无数据 未触发熔断请求 → 调用服务接口生成流量
Unable to connect to Command Metric Stream 安全限制 → 在Dashboard服务配置 hystrix.dashboard.proxy-stream-allow-list: "*"
监控页面无图形 未添加 @EnableCircuitBreaker → 在服务启动类启用熔断器
集群监控失败 Turbine 配置错误 → 检查 turbine.appConfig 服务名是否匹配

📊 监控界面解读

  • 流量图(左上)

    • 颜色:绿色(健康)→ 黄色(警告)→ 红色(故障)
    • 圆圈大小:流量压力越大,圆圈越大
  • 请求统计(右上)

    • Success(绿色):成功请求数
    • Short-Circuited(蓝色):熔断请求数
    • Timeout(黄色):超时请求数
  • 熔断器状态(左下)

    • Closed:正常状态
    • Open:熔断开启(请求直接拒绝)
    • Half-Open:尝试恢复
  • 线程池指标(右下)

    • Active Threads:活跃线程数
    • Queue Size:等待队列长度

🌐 集群监控(Turbine)

作用:聚合多个服务的监控数据,统一展示到 Dashboard。

配置步骤

  1. 添加 Turbine 依赖

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-turbine</artifactId>
    </dependency>
    
  2. 配置文件(application.yml)

    turbine:
      appConfig: service-a,service-b  # 监控的服务ID
      clusterNameExpression: "'default'" # 集群名
    eureka:
      client:
        service-url:
          defaultZone: http://eureka-server:8761/eureka
    
  3. Dashboard 输入 URL
    http://turbine-host:port/turbine.stream


🚀 最佳实践与性能优化

  1. 安全加固

    • 限制 hystrix.stream 端点的访问IP
    • 集成 Spring Security 添加认证
  2. 参数调优

    hystrix:
      command:
        default:
          execution:
            timeout:
              enabled: true
            isolation:
              thread:
                timeoutInMilliseconds: 3000 # 超时时间
    
  3. 结合告警系统

    • 当错误率 >10% 时触发邮件/短信告警
    • 集成 Prometheus + Grafana 长期存储指标
  4. Turbine 优化

    turbine:
      combine-host-port: true  # 区分同主机多实例
      instanceUrlSuffix: /actuator/hystrix.stream # 端点后缀
    

💎 总结

  • 单点监控:适合开发调试,快速定位单个服务问题。
  • 集群监控:生产环境必用 Turbine,全局掌握系统状态。
  • 关键指标:关注熔断器状态(Open/Closed)和线程池队列积压,预防雪崩。
  • 升级替代:新项目建议使用 Micrometer + Prometheus,但 Hystrix Dashboard 仍是现有系统运维的核心工具。