5

微服务设计指导-hystrix的监控

 2 years ago
source link: https://blog.csdn.net/lifetragedy/article/details/121968381
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client
微服务设计指导-hystrix的监控_lifetragedy的专栏-CSDN博客
专栏收录该内容
8 篇文章 0 订阅

我们在生产环境或者是在压测时经常会需要了解:熔断了多少次?目前哪些接口断着哪些接口开着?

你总不能看那些刷的可以飞起来的日志滚屏吧?那你真的成Matrix了。

因此,Hytrix是先天就带有熔断监控功能的。如下这样的截图:

这是由以下这个组件组成的(我们是基于spring boot2以及spring cloud2来做的hystrix监控,版本是有严格讲究的,甚至连artifactId的名字在不同版本都有本质上的区别,你千万记得不要盲目的复制粘贴。

 光有这一个组件,你是看不到dashboard的。因此要看到hystrix-dashboard你必须同时要加入如下依赖进入maven的pom.xml文件。

这是因为,hystrix-dashboard是通过actuator的端点控制功能来收集/ping相应的hystrix客户端的数据流,并以hystrix-dashboard来作展示的。

说好了pom.xml文件的注意项后我们为了启用这个仪表盘还需要做到以下几点:

在spring boot启动类里加入以下annotation

其中以下几荐紧密和hystrix-dashboard相关:

  • @EnableFeignClient
  • @EnableHystrixDashboard
  • @EnableCircuitBreaker

看,网上是不会告诉你这些的。

需要新建一个hystrix-dashboard的自动装配注解类-HystrixDashBoardConfig

  • 这里面的/hystrix.stream严格会和.yml里的hystrix用actuator收集到的各hystrix内的一个“数据文件”是一一对应名字子的;
  • 这里面的setLoadOnStartup(1)也是很有讲究的,网上99%的例子里没有这一句,导致你copy了网上的例子,在本机启动的好好的,跑到其它环境后,你会发觉死活这个dashboard不显示;

在applicaton.yml文件里需要加入actuator和hystrix-dashboard的配置

这边高度需要各位注意了,太多和网上不一样的地方。

  • hystrix.dashboard.proxy-stream-allow-list,这个值,如果不配,你在用hystrix的dashboard加载“actuator“收集到的hystrix.stream文件会因该JVM的沙盒机制不允许加载网页组件而显示:404 no page的错误;
  • management那边一陀就是actuator的申请:
    • exposure指的是“哪些收集到的接口可用”,你不要来一个*,这就危险了,你会把api都暴露在内网上,这是一个安全的问题;
    • cors指的是可允许跨域名,因为当你有多个hystrix,很可能会在不同域名下,这边我建议在QAS或者是生产环境,一定要指定“允许跨域访问hystrix.stream和turbine.stream我那些域名“,由于是本地环境,因此这边我就放了一个*

启动hystrix-dashboard

以上全配好了后,把这个带有hystrix-dashboard的spring cloud consumer启动起来。

启动后,打开一个ie输入:http://localhost:你的spring boot的server端口/hystrix,你就可以看到这样的一个界面

 然后在上部红色箭头所指的输入框即以下截图指示输入:http://localhost:你的spring boot的server端口/actuator/hystrix.stream

然后点[Monitor Stream]这个按钮,你就可以得到以下dashboard

 如果一开始,你进入这个页面,上下一直显示“loading data“,这个没有关系的,这是因为,/actuator/hystrix.stream还没有收集到数据。此时你多访问几次你的微服务,这个仪表盘过一会当开始吸到的第一条数据后就会出现了。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK