Hystrix 대시보드는 각 회로 차단기의 상태(@HystrixCommand로 주석이 달린 메소드), 요청 수, 성공 수, 실패 수, 성능 저하 수 등과 같은 Hystrix 관련 데이터를 표시할 수 있습니다.
머리말
정상 상태는 UP, 트립 상태는 CIRCUIT_OPEN으로 /health를 통해 확인할 수 있으며, 프로젝트에
SpringBoot의 액츄에이터(헬스 모니터링)를 도입해야 한다는 전제가 있다. 상위 프로젝트에 추가됨
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
대시보드 제어 대시보드 준비
환경 준비
- m-parent를 기반으로 새 모듈 mvn 프로젝트를 만듭니다.
m-cloud-hystrix-dashboard-9000
- 종속성 가져오기
<dependencies>
<!--hystrix-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>
<!--hystrix 仪表盘-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
</dependencies>
@EnableHystrixDashboard
활성화 대시보드를 추가하려면 수업을 시작하세요.
@SpringBootApplication
@EnableDiscoveryClient
@EnableHystrixDashboard //开启HystrixDashboard
public class HystrixDashboard9000 {
public static void main(String[] args) {
SpringApplication.run(HystrixDashboard9000.class, args);
}
}
- application.yml
server:
port: 9000
spring:
application:
name: m-cloud-hystrix-dashboard
#注册发现
eureka:
client:
service-url:
defaultZone: http://CloudEurekaServerA:8761/eureka,http://CloudEurekaServerB:8762/eureka
instance:
prefer-ip-address: true
instance-id: ${
spring.cloud.client.ip-address}:${
spring.application.name}:${
server.port}:@project.version@
- 모니터링되는 마이크로서비스 (예: m-service-autodeliver) 에 모니터링 서블릿을 등록합니다.
@Bean
public ServletRegistrationBean getServlet() {
HystrixMetricsStreamServlet streamServlet = new
HystrixMetricsStreamServlet();
ServletRegistrationBean registrationBean = new
ServletRegistrationBean(streamServlet);
registrationBean.setLoadOnStartup(1);
registrationBean.addUrlMappings("/actuator/hystrix.stream");
registrationBean.setName("HystrixMetricsStreamServlet");
return registrationBean;
}
- 프로젝트를 시작하고 http://localhost:8090/actuator/hystrix.stream
postMan을 방문하여 소비자 서비스를 호출합니다.
- 액세스 테스트 http://localhost:9000/hystrix
8. postMan 호출 소비자 서비스 재시도
대시보드 해석
Percentage(퍼센트) , 10초 내에 잘못된 요청의 비율(%)
채워진 원 :
크기 : 요청 트래픽의 크기를 나타냅니다. 트래픽이 많을수록 공의 크기가 커집니다.
색상 : 요청 처리 상태를 나타내며 녹색에서 빨간색으로 감소합니다. 녹색 빨간색은 매우 건강하지 않은
곡선 변동 그래프를 나타냅니다 .
이 방법으로 2분 이내에 트래픽의 변동 그래프를 기록하고 트래픽의 상승 또는 하락 추세를 결정합니다.
대시보드 집계 모니터링 해석
이전에는 Hystrix 데이터 쿼리 및 마이크로서비스 인스턴스 분석에 중점을 두었는데, 마이크로서비스 아키텍처에서는 마이크로서비스 인스턴스 1(hystrix) ip1 :port1/actuator/hystrix 의 자동
전달 과 같은
마이크로 서비스(클러스터형)의 여러 인스턴스가 있는 경우가 많습니다.
.stream
인스턴스 2 (hystrix) ip2:port2/actuator/hystrix.stream
인스턴스 3 (hystrix) ip3:port3/actuator/hystrix.stream
기존 방식대로 대시보드와 결합 가능 모니터링 데이터를 입력할 때마다 flow URL에 들어가서
수동조작을 자동기능으로 대체할 수 있는지 확인해 보시겠어요? Hystrix Turbine aggregation(각 인스턴스의 hystrix 모니터링 데이터를 집계) 모니터링
터빈(Turbine)
사고: 마이크로서비스 아키텍처에서 마이크로서비스는 종종 여러 인스턴스를 배포하는데, 한 번에 하나의 인스턴스에 대한 모니터링만 볼 수 있다면, 자주 전환하는
것은 매우 불편합니다. 이러한 시나리오에서는 Hystrix Turbine을 집계 모니터링에 사용할 수 있으며, 이를 통해
관련 마이크로서비스의 모니터링 데이터를 집계하여 쉽게 볼 수 있습니다.
환경 준비
- m-parent를 기반으로 새 모듈 mvn 프로젝트를 만듭니다.
m-cloud-hystrix-turbine-9001
- 종속성 가져오기
<dependencies>
<!--hystrix turbine聚合监控-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-turbine</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
</dependencies>
@EnableTurbine
활성화 대시보드를 추가하려면 수업을 시작하세요.
@SpringBootApplication
@EnableDiscoveryClient
@EnableTurbine //开启 Turbine
public class HystrixTurbine9001 {
public static void main(String[] args) {
SpringApplication.run(HystrixTurbine9001.class,args);
}
}
- application.yml
server:
port: 9001
spring:
application:
name: m-cloud-hystrix-turbine
#注册发现
eureka:
client:
service-url:
defaultZone: http://CloudEurekaServerA:8761/eureka,http://CloudEurekaServerB:8762/eureka
instance:
prefer-ip-address: true
instance-id: ${
spring.cloud.client.ip-address}:${
spring.application.name}:${
server.port}:@project.version@
#turbine配置
turbine:
# appCofing配置需要聚合的服务名称,⽐如这⾥聚合⾃动投递微服务的hystrix监控数据
# 如果要聚合多个微服务的监控数据,那么可以使⽤英⽂逗号拼接,⽐如 a,b,c
appConfig: m-service-autodeliver
clusterNameExpression: "'default'" # 集群默认名称
-
브라우저 (http://localhost:9001/turbine.stream) 를 사용하여 Turbine 프로젝트에 액세스하면 모니터링 데이터를 볼 수 있습니다(데이터 postMan 재시도 없음).
-
대시보드 페이지를 통해 데이터를 보는 것이 더욱 직관적입니다. 대시보드 주소 표시줄에 방금 입력한 주소를 입력하세요.
-
m-service-autodeliver-8090을 복사하여 m-service-autodeliver-8091로 수정하고 m-parent 프로젝트에 추가하면 postMan이 8090 및 8091의 인터페이스에 액세스합니다.
-
서비스를 다시 시작
하고 위의 서비스를 순서대로 중지합니다. 다시 시작 순서는 8090-8091-9000-9001입니다. -
액세스 인터페이스
-
모니터링 페이지