[5] Hystrix Dashboard 회로단선 모니터링 대시보드

Hystrix 대시보드는 각 회로 차단기의 상태(@HystrixCommand로 주석이 달린 메소드), 요청 수, 성공 수, 실패 수, 성능 저하 수 등과 같은 Hystrix 관련 데이터를 표시할 수 있습니다.

머리말

정상 상태는 UP, 트립 상태는 CIRCUIT_OPEN으로 /health를 통해 확인할 수 있으며, 프로젝트에
SpringBoot의 액츄에이터(헬스 모니터링)를 도입해야 한다는 전제가 있다. 상위 프로젝트에 추가됨

<dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

대시보드 제어 대시보드 준비

환경 준비

  1. m-parent를 기반으로 새 모듈 mvn 프로젝트를 만듭니다.m-cloud-hystrix-dashboard-9000
  2. 종속성 가져오기
<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>
  1. @EnableHystrixDashboard활성화 대시보드를 추가하려면 수업을 시작하세요.
@SpringBootApplication
@EnableDiscoveryClient
@EnableHystrixDashboard //开启HystrixDashboard
public class HystrixDashboard9000 {
    
    
    public static void main(String[] args) {
    
    
        SpringApplication.run(HystrixDashboard9000.class, args);
    }
}
  1. 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@



  1. 모니터링되는 마이크로서비스 (예: 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;
    }
  1. 프로젝트를 시작하고 http://localhost:8090/actuator/hystrix.stream
    여기에 이미지 설명을 삽입하세요.
    여기에 이미지 설명을 삽입하세요.
    postMan을 방문하여 소비자 서비스를 호출합니다.
    여기에 이미지 설명을 삽입하세요.
  2. 액세스 테스트 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을 집계 모니터링에 사용할 수 있으며, 이를 통해
관련 마이크로서비스의 모니터링 데이터를 집계하여 쉽게 볼 수 있습니다.

여기에 이미지 설명을 삽입하세요.

환경 준비

  1. m-parent를 기반으로 새 모듈 mvn 프로젝트를 만듭니다.m-cloud-hystrix-turbine-9001
  2. 종속성 가져오기
    <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>
  1. @EnableTurbine활성화 대시보드를 추가하려면 수업을 시작하세요.
@SpringBootApplication
@EnableDiscoveryClient
@EnableTurbine //开启 Turbine 
public class HystrixTurbine9001 {
    
    
    public static void main(String[] args) {
    
    
        SpringApplication.run(HystrixTurbine9001.class,args);
    }
}
  1. 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'" # 集群默认名称
  1. 브라우저 (http://localhost:9001/turbine.stream) 를 사용하여 Turbine 프로젝트에 액세스하면 모니터링 데이터를 볼 수 있습니다(데이터 postMan 재시도 없음).
    여기에 이미지 설명을 삽입하세요.

  2. 대시보드 페이지를 통해 데이터를 보는 것이 더욱 직관적입니다. 대시보드 주소 표시줄에 방금 입력한 주소를 입력하세요.
    여기에 이미지 설명을 삽입하세요.
    여기에 이미지 설명을 삽입하세요.

  3. m-service-autodeliver-8090을 복사하여 m-service-autodeliver-8091로 수정하고 m-parent 프로젝트에 추가하면 postMan이 8090 및 8091의 인터페이스에 액세스합니다.

  4. 서비스를 다시 시작
    여기에 이미지 설명을 삽입하세요.
    하고 위의 서비스를 순서대로 중지합니다. 다시 시작 순서는 8090-8091-9000-9001입니다.

  5. 액세스 인터페이스여기에 이미지 설명을 삽입하세요.

  6. 모니터링 페이지
    여기에 이미지 설명을 삽입하세요.

추천

출처blog.csdn.net/u014535922/article/details/129951943