springcloud 퓨즈 모니터링 Hystrix Dashboard 와 Turbine
10960 단어 springcloudHystrixDashboardTurbine
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
시작 클래스 추가
@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);
}
대응 하 는HelloRemoteHystrix
과ConsumerController
류 는 수정 에 따라 코드 를 구체 적 으로 봅 니 다.수정 이 완료 되면 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 실전 마이크로 서 비 스 를 사용 합 니 다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Spring Cloud에서 Feign에 대한 일반적인 질문 요약1. FeignClient 인터페이스, @GettingMapping 같은 조합 메모는 사용할 수 없음 코드 예: 이쪽 @RequestMapping(value = "/simple/{id}", method = Reque...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.