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】:我认为您在主类上缺少 @HistrixDashBoard 注释
【讨论】:
那应该在主课上?还是应该在配置类中?顺便说一句,我有一个独立的仪表板应用程序,所以注释应该在客户端应用程序中?还是在仪表板应用中? 我的坏:) 注释是你的主类上的@EnableHystrix,如果你使用springboot,你还应该有spring-actutator。我认为注释应该在客户端应用程序上。即使我是 hystrix 的新手。 Nope 不工作,添加注解 SpringBootApplication、EnableCircuitBreaker、EnableHystrixDashboard、EnableHystrix 并且不工作【参考方案2】:如果您使用的是执行器,则您的流应该在这里: http://localhost:8080/actuator/hystrix.stream
【讨论】:
以上是关于Hystrix 仪表板的主要内容,如果未能解决你的问题,请参考以下文章