《springcloud — Finchley.RELEASE版》第九篇 斷路器Hystrix Dashboard監控
Hystrix Dashboard簡介
在微服務架構中為了保證程式的可用性,防止程式出錯導致網路阻塞,出現了斷路器模型。斷路器的狀況反應了一個程式的可用性和健壯性,Hystrix Dashboard,它主要用來實時監控Hystrix的各項指標資訊。通過Hystrix Dashboard反饋的實時資訊,可以幫助我們快速發現系統中存在的問題
SpringCloud完美的整合Hystrix-dashboard,Hystrix-dashboard是一款針對Hystrix進行實時監控的工具,通過Hystrix Dashboard我們可以在直觀地看到各Hystrix Command的請求響應時間, 請求成功率等資料。可以實時反饋資訊幫助我們快速發現系統中,但是隻使用Hystrix Dashboard的話, 你只能看到單個應用內的服務資訊。
Hystrix Dashboard服務
micro-eureka-server比較簡單服務複用之前的
在micro-parent下新建module,micro-dashboard-server,新增hystrix等相關依賴,pom.xml如下:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <artifactId>micro-dashboard-server</artifactId> <packaging>jar</packaging> <name>micro-dashboard-server</name> <description>微服務學習</description> <parent> <groupId>com.sun</groupId> <artifactId>micro-parent</artifactId> <version>0.0.1-SNAPSHOT</version> </parent> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <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> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId> </dependency> </dependencies> </project>
配置檔案:
spring:
application:
name: micro-dashboard-server
server:
port: 7770
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8080/eureka
management:
endpoints:
web:
exposure:
include: "*" #公開所有端點
啟動類新增相關注解:
package com.sun.eureka; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.circuitbreaker.EnableCircuitBreaker; import org.springframework.cloud.netflix.eureka.EnableEurekaClient; import org.springframework.cloud.netflix.hystrix.EnableHystrix; import org.springframework.cloud.netflix.hystrix.dashboard.EnableHystrixDashboard; @SpringBootApplication @EnableEurekaClient @EnableHystrix @EnableHystrixDashboard @EnableCircuitBreaker public class EurekaApplication { public static void main(String[] args) { SpringApplication.run(EurekaApplication.class, args); } /** *springboot 版本如果是2.0則需要新增 ServletRegistrationBean 因為springboot的預設路徑不 *是 "/hystrix.stream",只要在自己的專案裡配置上下面的servlet就可以了 */ @Bean public ServletRegistrationBean<HystrixMetricsStreamServlet> getServlet() { HystrixMetricsStreamServlet streamServlet = new HystrixMetricsStreamServlet(); ServletRegistrationBean<HystrixMetricsStreamServlet> registrationBean = new ServletRegistrationBean<HystrixMetricsStreamServlet>(streamServlet); registrationBean.setLoadOnStartup(1); registrationBean.addUrlMappings("/hystrix.stream"); registrationBean.setName("HystrixMetricsStreamServlet"); return registrationBean; } }
服務提供controller:
package com.sun.eureka.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
@RestController
public class HelloController {
@RequestMapping("/hello")
@HystrixCommand(fallbackMethod = "helloError")
public String hello(@RequestParam(value = "name") String name) {
return "hello " + name;
}
public String helloError(String name) {
return "hello "+name+" error!";
}
}
啟動micro-eureka-server,micro-dashboard-server,訪問http://localhost:7770/hystrix顯示如下:
從頁面英文的大概描述中可以知道HystrixBoard提供了三種不同的監控方式。
預設的叢集方式:通過URL http://turbine-hostname:port/turbine.stream開啟,實現對預設叢集的監控。
指定的叢集監控,通過URL http://turbine-hostname:port/turbine.stream?cluster=[clusterName]開啟對clusterName的叢集監控。
單體應用的監控,通過URL http://hystrix-app:port/hystrix.stream開啟,實現對具體某個服務例項的監控。
Delay:該引數用來控制伺服器上輪訓監控資訊的延遲時間,預設為2000毫秒,可以通過配置該屬性來降低客戶端的網路和CPU消耗。
Title:標題,可以通過該資訊來展示更合適的標題。
左上部實心圓和一條曲線含義:
實心圓:通過顏色的變化代表了例項的健康程度,它的大小也會根據例項的請求流量發生變化,流量越來實心圓越大。
曲線:用來記錄2分鐘內流量的相對變化,可通過它來觀察流量的上升和下降趨勢。