Hystrix 仪表板

Posted

技术标签:

【中文标题】Hystrix 仪表板【英文标题】:Hystrix Dashboard 【发布时间】:2018-05-08 22:35:00 【问题描述】:

我对 Hystrix 完全陌生,但是我需要监控它的指标。

到目前为止,我有一个独立的显示/运行 。

在我的项目中添加依赖项;

compile(group:"com.netflix.hystrix", name:"hystrix-metrics-event-stream", version:'1.5.5')
compile(group:"org.springframework.cloud", name:"spring-cloud-starter-hystrix-dashboard", version:'1.1.5.RELEASE')
compile(group:"org.springframework.boot", name:"spring-boot-starter-actuator", version:'1.4.0.RELEASE')
compile(group:"org.springframework.cloud", name:"spring-cloud-starter-hystrix", version:'1.1.5.RELEASE')

我也在我的 SpringConfig 中添加

@EnableHystrix
public class MyAppConfig 

    @Bean
    public ServletRegistrationBean servletRegistration() 
        ServletRegistrationBean registration = new ServletRegistrationBean(new HystrixMetricsStreamServlet(), "/hystrix.stream"); 
        return registration;
    

我成功启动了服务,我可以检查它是否由 localhost:8080/health 运行并得到答案。

当我添加 localhost:8080/hystrix.stream 并点击 Hystrix Dashboard 中的 Monitor Streams 按钮一小段时间时,它显示“正在加载...”,但随后我得到“无法连接到命令度量流。”

我在仪表板控制台中也得到了这个;

17:19:26.858 [vert.x-eventloop-thread-0] INFO  c.g.k.h.c.s.d.HystrixDashboardProxyConnectionHandler - Proxing request to http://localhost:8080/hystrix.stream
17:19:31.879 [vert.x-eventloop-thread-0] ERROR c.g.k.h.c.s.d.HystrixDashboardProxyConnectionHandler - Proxying request
java.util.concurrent.TimeoutException: The timeout period of 5000ms has been exceeded
        at io.vertx.core.http.impl.HttpClientRequestBase.timeout(HttpClientRequestBase.java:155)
        at io.vertx.core.http.impl.HttpClientRequestBase.handleTimeout(HttpClientRequestBase.java:140)
        at io.vertx.core.http.impl.HttpClientRequestBase.lambda$setTimeout$0(HttpClientRequestBase.java:100)
        at io.vertx.core.impl.VertxImpl$InternalTimerHandler.handle(VertxImpl.java:782)
        at io.vertx.core.impl.VertxImpl$InternalTimerHandler.handle(VertxImpl.java:753)
        at io.vertx.core.impl.ContextImpl.lambda$wrapTask$2(ContextImpl.java:316)
        at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:163)
        at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:418)
        at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:440)
        at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:873)
        at java.lang.Thread.run(Thread.java:745)
17:19:31.894 [vert.x-eventloop-thread-0] ERROR c.g.k.h.c.s.d.HystrixDashboardProxyConnectionHandler - Proxying request
io.vertx.core.VertxException: Connection was closed
        at io.vertx.core.http.impl.ClientConnection.handleClosed(ClientConnection.java:396)
        at io.vertx.core.impl.ContextImpl.lambda$wrapTask$2(ContextImpl.java:314)
        at io.vertx.core.impl.ContextImpl.executeFromIO(ContextImpl.java:190)
        at io.vertx.core.net.impl.VertxHandler.channelInactive(VertxHandler.java:97)

最后尝试制作 curl localhost:8080/hystrix.stream 根本没有响应。

我不确定是否遗漏了一些东西,有人可以给我提示吗?

问候。

【问题讨论】:

【参考方案1】:

我认为您在主类上缺少 @H​​istrixDashBoard 注释

【讨论】:

那应该在主课上?还是应该在配置类中?顺便说一句,我有一个独立的仪表板应用程序,所以注释应该在客户端应用程序中?还是在仪表板应用中? 我的坏:) 注释是你的主类上的@EnableHystrix,如果你使用springboot,你还应该有spring-actutator。我认为注释应该在客户端应用程序上。即使我是 hystrix 的新手。 Nope 不工作,添加注解 SpringBootApplication、EnableCircuitBreaker、EnableHystrixDashboard、EnableHystrix 并且不工作【参考方案2】:

如果您使用的是执行器,则您的流应该在这里: http://localhost:8080/actuator/hystrix.stream

【讨论】:

以上是关于Hystrix 仪表板的主要内容,如果未能解决你的问题,请参考以下文章

Hystrix 仪表板总是显示加载屏幕

Hystrix 仪表板

Spring Boot 中的 Hystrix 仪表板问题

Spring Cloud Turbine AMQP 不适用于 Hystrix 仪表板

Node.js 服务中的 Hystrix 仪表板?

Hystrix/Turbine 仪表板上的多个服务?