springcloud 퓨즈 모니터링 Hystrix Dashboard 와 Turbine

Hystrix-dashboard 는 Hystrix 를 대상 으로 실시 간 으로 모니터링 하 는 도구 로 Hystrix Dashboard 를 통 해 각 Hystrix Command 의 요청 응답 시간,요청 성 공률 등 데 이 터 를 직관 적 으로 볼 수 있 습 니 다.그러나 Hystrix Dashboard 만 사용 하면 하나의 응용 프로그램 내 서비스 정보 만 볼 수 있 습 니 다.이것 은 분명 부족 합 니 다.시스템 내 여러 서비스의 데 이 터 를 모 아 Hystrix Dashboard 에 표시 할 수 있 는 도구 가 필요 합 니 다.이 도 구 는 바로 Turbine 입 니 다.
Hystrix Dashboard
예제 항목 spring-cloud-consumer-hystrix 를 녹 여 다음 이름 을 바 꿉 니 다.spring-cloud-consumer-hystrix-dashboard.
1.의존 도 추가

<dependency>
 <groupId>org.springframework.cloud</groupId>
 <artifactId>spring-cloud-starter-hystrix</artifactId>
</dependency>
<dependency>
 <groupId>org.springframework.cloud</groupId>
 <artifactId>spring-cloud-starter-hystrix-dashboard</artifactId>
</dependency>
<dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
이 세 개의 가방 은 반드시 추가 해 야 한다.
2.시작 클래스
시작 클래스 추가

@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
@EnableHystrixDashboard
@EnableCircuitBreaker
public class ConsumerApplication {

 public static void main(String[] args) {
 SpringApplication.run(ConsumerApplication.class, args);
 }
}
3.테스트
프로젝트 시작 후 접근http://localhost:9001/hystrix,다음 화면 을 볼 수 있 습 니 다:

그림 에 힌트 가 있 습 니 다.
Cluster via Turbine (default cluster): http://turbine-hostname:port/turbine.stream
Cluster via Turbine (custom cluster): http://turbine-hostname:port/turbine.stream?cluster=[clusterName]
Single Hystrix App: http://hystrix-app:port/hystrix.stream
기본 클 러 스 터 를 보면 첫 번 째 url 을 사용 하고 지정 한 클 러 스 터 를 보면 두 번 째 url 을 사용 합 니 다.하나의 모니터링 은 마지막 을 사용 합 니 다.우 리 는 잠시 하나의 응용 만 보 여 주 므 로 입력 상자 에 입력 합 니 다.
http://localhost:9001/hystrix.stream ,입력 후 Monitor 를 클릭 하여 페이지 에 들 어 갑 니 다.
요청 이 없 으 면 먼저 표시Loading ...,접근http://localhost:9001/hystrix.stream 핑 도 계속 뜨 고.
요청 서비스http://localhost:9001/hello/neo모니터링 효 과 를 볼 수 있 습 니 다.먼저 방문 하 세 요.http://localhost:9001/hystrix.stream,다음 과 같이 표시:
ping:
data: {"type":"HystrixCommand","name":"HelloRemote#hello(String)","group":"spring-cloud-producer","currentTime":1494915453986,"isCircuitBreakerOpen":false,"errorPercentage":100,"errorCount":1,"requestCount":1,"rollingCountBadRequests":0,"rollingCountCollapsedRequests":0,"rollingCountEmit":0,"rollingCountExceptionsThrown":0,"rollingCountFailure":0,"rollingCountFallbackEmit":0,"rollingCountFallbackFailure":0,"rollingCountFallbackMissing":0,"rollingCountFallbackRejection":0,"rollingCountFallbackSuccess":1,"rollingCountResponsesFromCache":0,"rollingCountSemaphoreRejected":0,"rollingCountShortCircuited":0,"rollingCountSuccess":0,"rollingCountThreadPoolRejected":0,"rollingCountTimeout":1,"currentConcurrentExecutionCount":0,"rollingMaxConcurrentExecutionCount":0,"latencyExecute_mean":0,"latencyExecute":{"0":0,"25":0,"50":0,"75":0,"90":0,"95":0,"99":0,"99.5":0,"100":0},"latencyTotal_mean":0,"latencyTotal":{"0":0,"25":0,"50":0,"75":0,"90":0,"95":0,"99":0,"99.5":0,"100":0},"propertyValue_circuitBreakerRequestVolumeThreshold":20,"propertyValue_circuitBreakerSleepWindowInMilliseconds":5000,"propertyValue_circuitBreakerErrorThresholdPercentage":50,"propertyValue_circuitBreakerForceOpen":false,"propertyValue_circuitBreakerForceClosed":false,"propertyValue_circuitBreakerEnabled":true,"propertyValue_executionIsolationStrategy":"THREAD","propertyValue_executionIsolationThreadTimeoutInMilliseconds":1000,"propertyValue_executionTimeoutInMilliseconds":1000,"propertyValue_executionIsolationThreadInterruptOnTimeout":true,"propertyValue_executionIsolationThreadPoolKeyOverride":null,"propertyValue_executionIsolationSemaphoreMaxConcurrentRequests":10,"propertyValue_fallbackIsolationSemaphoreMaxConcurrentRequests":10,"propertyValue_metricsRollingStatisticalWindowInMilliseconds":10000,"propertyValue_requestCacheEnabled":true,"propertyValue_requestLogEnabled":true,"reportingHosts":1,"threadPool":"spring-cloud-producer"}
data: {"type":"HystrixThreadPool","name":"spring-cloud-producer","currentTime":1494915453986,"currentActiveCount":0,"currentCompletedTaskCount":1,"currentCorePoolSize":10,"currentLargestPoolSize":1,"currentMaximumPoolSize":10,"currentPoolSize":1,"currentQueueSize":0,"currentTaskCount":1,"rollingCountThreadsExecuted":0,"rollingMaxActiveThreads":0,"rollingCountCommandRejections":0,"propertyValue_queueSizeRejectionThreshold":5,"propertyValue_metricsRollingStatisticalWindowInMilliseconds":10000,"reportingHosts":1}
모니터링 결과 가 돌 아 왔 다 는 뜻 입 니 다.
모니터링 페이지 에 가면 다음 그림 이 표 시 됩 니 다.

사실은http://localhost:9001/hystrix.stream결 과 를 되 돌려 주 는 도형 화 에 따 르 면 Hystrix Dashboard Wiki 는 그림 의 모든 지표의 의 미 를 상세 하 게 설명 하고 다음 과 같다.

이 단일 응용 프로그램의 퓨즈 모니터링 이 완료 되 었 습 니 다.
Turbine
복잡 한 분포 식 시스템 에서 같은 서비스의 노드 는 백 내지 수천 개 를 배치 해 야 한다.많은 경우 에 운영 자 들 은 같은 서비스의 노드 상 태 를 하나의 전체적인 군집 형식 으로 보 여 주 기 를 원한 다.그러면 전체 시스템 의 상 태 를 잘 파악 할 수 있다.이 를 위해 넷 플 릭 스 는 여러 개의 Hstrix.stream 의 내용 을 하나의 데이터 소스 로 집합 하여 Dashboard 에 보 여 주 는 오픈 소스 프로젝트(Turbine)를 제공 합 니 다.
1.의존 도 추가

<dependencies>
 <dependency>
 <groupId>org.springframework.cloud</groupId>
 <artifactId>spring-cloud-starter-turbine</artifactId>
 </dependency>
 <dependency>
 <groupId>org.springframework.cloud</groupId>
 <artifactId>spring-cloud-netflix-turbine</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-hystrix-dashboard</artifactId>
 </dependency>
</dependencies>
2.프로필

spring.application.name=hystrix-dashboard-turbine
server.port=8001
turbine.appConfig=node01,node02
turbine.aggregator.clusterConfig= default
turbine.clusterNameExpression= new String("default")

eureka.client.serviceUrl.defaultZone=http://localhost:8000/eureka/
  • turbine.appConfig:Eureka 의 serviceId 목록 을 설정 하여 어떤 서 비 스 를 감시 하 는 지 표시 합 니 다
  • turbine.aggregator.clusterConfig:어떤 군집 을 모 으 고 여러 개 를 사용 할 지 지정 합 니 다."분할,기본 값 은 default 입 니 다.사용 가능http://.../turbine.stream?cluster={clusterConfig }접근
  • turbine.clusterNameExpression:1.clusterNameExpression 클 러 스 터 이름,기본 표현 식 appName 을 지정 합 니 다.이때:turbine.aggregator.clusterConfig모니터링 하고 자 하 는 응용 이름 을 설정 해 야 합 니 다.2.clusterNameExpression:default 일 때turbine.aggregator.clusterConfig쓰 지 않 아 도 됩 니 다.기본 값 은 default 이기 때 문 입 니 다.3.clusterNameExpression:metadata['cluster']에서 모니터링 하고 자 하 는 응용 프로그램 설정eureka.instance.metadata-map.cluster: ABC을 가정 하면 설정 이 필요 하 며,동시에turbine.aggregator.clusterConfig: ABC
  • 3.시작 클래스
    시작 클래스 추가@EnableTurbine,Turbine 지원 활성화
    
    @SpringBootApplication
    @EnableHystrixDashboard
    @EnableTurbine
    public class DashboardApplication {
    
     public static void main(String[] args) {
     SpringApplication.run(DashboardApplication.class, args);
     }
    
    }
    여기 서 Turbine(hystrix-dashboard-turbine)설정 이 완료 되 었 습 니 다.
    4.테스트
    예제 항목 spring-cloud-consumer-hystrix 를 바탕 으로 두 서비스의 호출 자 spring-cloud-consumer-node 1 과 spring-cloud-consumer-node 2 로 수정 합 니 다.
    spring-cloud-consumer-node 1 항목 변경 은 다음 과 같 습 니 다.
    application.properties 파일 내용
    
    spring.application.name=node01
    server.port=9001
    feign.hystrix.enabled=true
    
    eureka.client.serviceUrl.defaultZone=http://localhost:8000/eureka/
    spring-cloud-consumer-node 2 프로젝트 변경 은 다음 과 같 습 니 다.
    application.properties 파일 내용
    
    spring.application.name=node02
    server.port=9002
    feign.hystrix.enabled=true
    
    eureka.client.serviceUrl.defaultZone=http://localhost:8000/eureka/
    Hello Remote 클래스 수정:
    
    @FeignClient(name= "spring-cloud-producer2", fallback = HelloRemoteHystrix.class)
    public interface HelloRemote {
    
     @RequestMapping(value = "/hello")
     public String hello2(@RequestParam(value = "name") String name);
    
    }
    대응 하 는HelloRemoteHystrixConsumerController류 는 수정 에 따라 코드 를 구체 적 으로 봅 니 다.
    수정 이 완료 되면 spring-cloud-eureka,spring-cloud-consumer-node 1,spring-cloud-consumer-node 1,hystrix-dashboard-turbine(Turbine)을 차례로 시작 합 니 다.
    eureka 백 스테이지 를 열 면 세 개의 서 비 스 를 등록 한 것 을 볼 수 있 습 니 다.

    방문 하 다.http://localhost:8001/turbine.stream
    돌아 가기:
    
    : ping
    data: {"reportingHostsLast10Seconds":1,"name":"meta","type":"meta","timestamp":1494921985839}
    또한 실시 간 모니터링 데 이 터 를 얻 기 위해 계속 갱신 하고 하나의 모니터링 과 유사 하 다 는 것 을 설명 하 며 모니터링 프로젝트 의 정 보 를 되 돌려 준다.도형 화 모니터링,입력:http://localhost:8001/hystrix,쿨 한 곰 돌 이 인터페이스 로 돌아 가 입력:http://localhost:8001/turbine.stream그리고 Monitor Stream 을 클릭 하면 두 개의 모니터링 목록 이 나 타 났 습 니 다.

    예제 코드
    참고:
    Spring Cloud 와 Docker 실전 마이크로 서 비 스 를 사용 합 니 다.
    이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

    좋은 웹페이지 즐겨찾기