个人博客:兰陵笑笑生,欢迎浏览博客!java
上一章 SpringCloud基础教程(八)-Hystrix熔断器(上)当中,咱们介绍了Hystrix在分布式环境下,如何经过熔断、降级的方式解决了服务延迟或者故障出现的问题,本章咱们将深刻了解Hystrix的服务监控。程序员
当服务端由于网络延迟或故障出险问题时,咱们能够经过Hystrix实现服务熔断,那么如何作到迅速的发现问题而且迅速的解决问题呢?熔断的监控工具备2款工具:Hystrix-dashboard和Turbine,Hystrix-dashboard是针对Hystrix进行实时的监控工具,经过Hystrix-dashboard咱们能够直观的看到单个应用的服务信息。可是,在分布式的模式下,咱们须要一个可以汇总全部的服务数据并直观的显示出来,这个工具就是Turbine。web
咱们在 SpringCloud 基础教程(三)-Eureka 进阶 中提到了 Eureka是默认使用心跳机制来监测服务的健康与否的,咱们经过在服务端引入actuator依赖,并修改yml配置,开启健康检查,可以查到服务是否正常,这里在须要被监测的服务组件中,开启监控也须要引入actuator:spring
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>
application.yml添加配置,默认只有"health","info",这里咱们添加"hystrix.stream"express
management: endpoints: web: exposure: include: ["health","info","hystrix.stream"]
启动被监测的项目后,这里我启动了server-consumer服务消费者,actuator为hystrix提供了管理接口,咱们经过http://localhost:5168/actuator/hystrix.stream (当前版本是2.x版本,若是是1.x版本,请求的接口就是/hystrix.stream ),就能够看到页面在动态的、实时的刷新,监控一些参数:网络
在被检测的项目中引入actuator就能够经过接口的方式收集Hystrix Command标注的资源接口参数信息,咱们还能够经过直观的方式,使用Hystrix-dashboard仪表盘的方式展现:app
首先,新建仪表盘应用Monitor,建立Maven项目,引入hystrix-dashboard依赖:负载均衡
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId> </dependency>
在主类上添加@EnableHystrixDashboard注解,表示开启仪表盘:分布式
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.hystrix.dashboard.EnableHystrixDashboard; @SpringBootApplication @EnableHystrixDashboard public class MonitorApplication { public static void main(String[] args) { SpringApplication.run(MonitorApplication.class, args); } }
配置文件中指定端口为8412,启动项目后,能够经过http://localhost:8412/hystrix访问仪表盘的页面:spring-boot
控制主页面,咱们能够输入指定服务的接口,刷新时间,默认是2秒就能够显示指定服务的监控数据了,好比咱们能够输入server-consumer服务消费者的url http://localhost:5168/actuator/hystrix.stream ,就能够实时的显示如下的信息:
具体的信息,包括了成功数量、熔断数量,错误数量,错误的百分比等等信息:
在实际的企业开发中,服务的实例不知一个,这个时候就须要将全部服务的监控信息聚合到一个面板上,咱们可使用Turbine。
在上文Monitor仪表盘项目中,咱们继续引入turbine依赖:
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-turbine</artifactId> </dependency>
并在主类上添加@EnableTurbine注解:
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.hystrix.dashboard.EnableHystrixDashboard; import org.springframework.cloud.netflix.turbine.EnableTurbine; @SpringBootApplication @EnableHystrixDashboard @EnableTurbine public class MonitorApplication { public static void main(String[] args) { SpringApplication.run(MonitorApplication.class, args); } }
配置仪表盘的应用添加配置application.yml,并添加Eureka配置,这样能够从Eureka中心经过服务名称获取服务实例信息:
eureka: instance: hostname: eureka7001.com instance-id: monitor prefer-ip-address: true #eureka服务端的实例名称 client: service-url: # 与注册中心交互的url defaultZone: http://eureka7001.com:7001/eureka/ enabled: true turbine: aggregator: #集群的名称,能够多个 cluster-config: MAIN #监控服务的名称,能够有多个 app-config: server-consumer cluster-name-expression: metadata['cluster']
一样,咱们在被监控的服务server-consumer的配置中,须要配置和Monitor项目的配置同样:、
eureka: instance: metadata-map: cluster: MAIN
咱们启动1个Eureka,2个服务server-consumer,1个Monitor仪表盘项目,接下来就直接在Hystrix的仪表盘页面输入:
http://localhost:8412/turbine.stream?cluster=MAIN
咱们就能够看到数据都被汇集到一块儿了,Hosts为2表示有2个实例:
这样既能够看到聚合以后的监控图形化信息了。
本章在上一章的基础之上,详细的介绍了Hystrix熔断的监控,以示例的方式展现了单个服务的监控和多个服务的聚合监控。在实际的企业应用中,咱们可以经过这样的方式及时的掌握每一个服务的健康情况。这是很是有必要和实用的。
以上就是本期的分享,你能够关注本博客的#Spring Cloud基础教程!#。 还能够关注公众号: 程序员笑笑生,关注更多精彩内容!
以就是本期的分享,你还能够关注公众号:** 程序员笑笑生**,关注更多精彩内容!
SpringCloud基础教程(一)-微服务与SpringCloud
SpringCloud基础教程(二)-服务发现 Eureka
SpringCloud基础教程(五)-配置中心热生效和高可用
SpringCloud 基础教程(六)-负载均衡Ribbon
SpringCloud 基础教程(七)-Feign声明式服务调用
SpringCloud 基础教程(八)-Hystrix熔断器(上)
更多精彩内容,请期待...
本文由博客一文多发平台 OpenWrite 发布!
个人博客地址兰陵笑笑生,欢迎浏览!