1. 소개
이전 기사에서는 단일 서비스 인스턴스의 모니터링을 구현했습니다. 물론 실제 응용 분야에서 단일 인스턴스의 모니터링 데이터는 그다지 가치가 없습니다. 더 필요한 것은 클러스터 시스템의 모니터링 정보입니다. 현재 터빈을 도입해야합니다. 터빈은 모니터링 정보를 수집하고 중앙 집중식 디스플레이 및 모니터링을 위해 Hystrix 대시 보드에 집계 된 정보를 제공 할 수 있습니다.
2. 모니터링 기관 및 서비스 구축
2.1 전반적인 구조 및 준비
이 기사의 엔지니어링 구현은 이전 기사의 프로젝트를 기반으로합니다. 터빈을 도입함으로써 서비스 리본 서비스의 모니터링 정보를 집계하고 디스플레이를 위해 Hystrix 대시 보드에 출력합니다. 여러 서비스를위한 대시 보드가 필요하기 때문에 서비스 리본 클러스터를 구축 할 것이며 정보를 집계하고 표시하려면 새로운 서비스-터빈 프로젝트를 만들어야합니다. 최종 전체 구조는 다음과 같습니다.
2.2 서비스-터빈을 만듭니다
Service-Turbine이라는 새 Spring Boot 프로젝트를 작성하고 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.xsd"> <modelversion> 4.0.0 </modelversion> <groupid> com.dan </groupid> <artifactid> service-turbactide <버전> 0.0.1-snapshot </version> <packaging> jar </packaging> <name> service-turbine </name> <description> 스프링 부츠를위한 데모 프로젝트 </descript> <부모> <groupid> org.spramframewort.boot </groupid> <artifactid> spring-boot-starter-parent </artifactid> <version> </relate>>. 저장소에서 부모 조회-> </parent> <properties> <project.build.build.build.sourceencoding> utf-8 </project.build.sourceencoding> <project.Reporting.outputEncoding> utf-8 </project.reporting.outputencoding> <java.version> 1.8 </java.verion> <Spring-cloud.versition> edgware.sr1 </spring-cloud.version> </properties> <pectionements> <pectionement> <groupid> org.springframework.cloud </groupid> <artifactid> spring-cloud-starter-turbine </atrectid> <prection </groupid> orgramprongramwork.scramwork.scramwork.scramed <artifactid> spring-cloud-netflix-turbine </artifactid> </fectionency> <pectionement> <groupid> org.springframework.boot </groupid> <atifactid> spring-boot-starter-actuator </artifactid> </dependency> <groupid> groupid> org.springframwork.boot <Artifactid> Spring-Boot-starter-test </artifactid> </artifactid> </scope> </scope> </spectency> </fectionements> <pectionencymanagement> <pectionies> <pectionement> <groupid> org.springframework.cloud </groupid> <trifactid> spring-cloud-dependencies </artifactid> <type> pom </type> <cope> 가져 오기 </scope> </scope> </fectionency> </fectionemence> </fectionencyManagement> <fuglin> <plugin> <groupid> org.springframework.boot </groupid> <artifactid> Spring-Boot-Maven-Plugin </plugin> </build> </build> </build> </build> </build>
프로젝트 시작 클래스에 @enableturbine 주석을 추가하고 터빈을 활성화하십시오. 주석에는 이미 @enablediscoveryclient 주석, 즉 등록 서비스가 활성화되었습니다.
@SpringBootApplication @enableTurbine public class serviceturbineApplication {public static void main (String [] args) {springApplication.run (serviceturbineApplication.class, args); }} Application.properties에 다음과 같이 Eureka 및 Turbine 관련 구성을 추가하십시오.
spring.application.name = service-turbine server.port = 8766 security.basic.enabled = false eureka.client.serviceurl.defaultzone = http : // localhost : 8761/eureka turbine.aggregator.cluster-config = default turbine.app-config = service-expley = "" "-extepledon.clustrustor-name-name-name-name-config. Turbine.combine-Host-port = true
위 구성에서 Turbine.app-Config 매개 변수는 Eureka의 Serviceid 목록을 구성하여 어떤 서비스가 모니터링되는지를 나타냅니다. Turbine.cluster-Name-Expression 매개 변수는 클러스터 이름을 기본값으로 지정합니다. 많은 서비스가 있으면 여러 터빈 서비스가 다른 집계 클러스터를 구축하기 시작할 수 있습니다. 이 매개 변수는 이러한 다른 응집 클러스터를 구별하는 데 사용될 수 있습니다. 동시에 파라미터 값을 사용하여 Hystrix 대시 보드에서 다른 집계 클러스터를 찾을 수 있습니다. Hystrix 스트림의 URL에 클러스터 매개 변수를 지정하십시오. Turbine.com -bine-Host-Port 매개 변수는 True로 설정되어 동일한 호스트의 서비스가 호스트 이름과 포트 번호의 조합으로 구별 될 수 있습니다. 기본적으로 다른 서비스는 호스트별로 구별되며, 이로 인해 로컬 머신의 다른 서비스가 디버깅 중 통계를 위해 하나의 서비스로 집계됩니다.
3. 클러스터 모니터링
포트 번호 8761로 유레카-서버 프로젝트를 시작하십시오.
포트 번호 8762 및 8763으로 Eureka-Client 프로젝트를 시작하십시오.
포트 번호 8764 및 8765로 서비스 리본 프로젝트를 시작하십시오.
포트 번호 8766을 사용하여 서비스-터빈 프로젝트를 시작하십시오.
http : // localhost : 8766/turbine.stream을 방문하십시오.
http : // localhost : 8765/hystrix를 방문하고 모니터링 스트림을 입력하십시오 http : // localhost : 8766/turbine.stream을 참조하십시오.
그림에서 볼 수 있듯이 두 개의 서비스 리본을 시작했지만 모니터링 페이지에는 여전히 모니터링 다이어그램 만 표시됩니다. 그러나 그림의 클러스터보고 영역의 호스트 속성은 이전에 독립형 모니터링을 시도 할 때와 다르지만,이 두 인스턴스는 동일한 서비스이므로 클러스터의 경우 서비스 클러스터의 고용성에 대해 우려하므로 터빈은 전체와 동일한 서비스를보고 모니터링 다이어그램으로 요약 할 것입니다.
물론 두 개의 모니터링 다이어그램을보고 싶다면 Spring.Application.Name Service Ribbon 인스턴스 중 하나의 이름을 다른 이름으로 설정하여 실행 후 두 개의 다른 모니터링 다이어그램이 나타납니다.
4. 메시지 브로커와 결합
스프링 클라우드가 터빈을 캡슐화하면 메시지 브로커를 기반으로 컬렉션 구현을 캡슐화합니다. 따라서 메시지 브로커에 수집 해야하는 모든 모니터링 정보를 출력 한 다음 터빈 서비스는 메시지 브로커에서 이러한 모니터링 정보를 비동기 적으로 얻고 최종적으로 Hystrix 대시 보드에 집계하여 출력합니다. 메시지 브로커를 소개하면 터빈 및 Hystrix 대시 보드에서 구현 한 모니터링 아키텍처를 아래 그림과 표시된 구조로 변경할 수 있습니다.
먼저 Service-Turbine-AMQP라는 새로운 Spring Boot 프로젝트를 만들고 Spring-Cloud-Starter-Turbine-AMQP 및 Spring-Boot-Starter-Actuator 종속성을 소개하십시오. Spring-Cloud-Starter-Turbine-AMQP가 실제로 Spring-Cloud-Starter-Turbine-Stream 및 Spring-Cloud-Starter-Stream-Rabbit을 감싸기 때문에 이것이 두 가지 의존성을 소개하는 것입니다.
<? 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.xsd"> <modeversion> 4.0.0 </modelversion> <groupid> com.dan </groupid> <artifactid> service-turbine-turbine-tripicat <버전> 0.0.1-snapShot </version> <packaging> jar </packaging> <name> service-turbine-amqp </name> <description> 스프링 부츠를위한 데모 프로젝트 </descript> <perforid> org.springframework.boot </groupid> <artifactid> spring-boot-starter-parent </artifactid> </version 1.9.9.9.9.9.9.9. <RelativePath/> <!-리포지토리에서 부모를 조회합니다 .-> </parent> <properties> <proffice.build.sourceencoding> utf-8 </project.build.sourceencoding> <project.worting.outputencoding> utf-8 </project.reporting.outputencoding> <java.version> 1.8 </java.version> 1.8. <Spring-cloud.versition> edgware.sr1 </spring-cloud.version> </properties> <pectionals> <pectionement> <prevence> <groupid> org.springframework.cloud </groupid> <artifactid> spring-cloud--starter-turbine-amqp </artifactid> </courplency> <groupspr) <Artifactid> Spring-Boot-starter-Actuator </artifactid> <cope> test </scope> </spectency> </fectionency> </fectionement> <pectionencymanagement> <pectionement> <groupId> org.spramframework.cloud </groupID> spring-cloud-delberies </artifactid> <버전> $ {spring-cloud.version} </version> <type> pom </type> <cope> import </scope> </fectionency> </fectionency> </fectionencymanagement> <build> <플러그인> <groupId> org.springframework.boot.boot </group-Mafact </artifactid> </플러그인> </빌드> </project> 메인 클래스에서 @enableturbinestream 주석을 사용하여 터빈 스트림의 구성을 활성화하십시오.
@SpringBootApplication @EnableTurbinEStream @EnableTiscoveryClient public class serviceturbineamqPapplication {public static void main (string [] args) {springApplication.run (serviceturbineamqPapplication.class, argss); }}그런 다음 Application.Properties 파일을 구성합니다.
spring.application.name = service-turbine-amqp server.port = 8766 eureka.client.serviceurl.defaultzone = http : // localhost : 8761/eureka
터빈의 구성이 완료되었습니다. 다음은 모니터링 정보를 RabbitMQ에 출력 할 수 있도록 서비스 리본을 수정해야합니다. 이 수정은 매우 간단합니다. pom.xml의 Spring-Cloud-Netflix-Hystrix-Amqp에 의존성을 추가하십시오.
<pectionency> <groupid> org.springframework.cloud </groupid> <artifactid> Spring-Cloud-Netflix-Hystrix-Amqp </artifactid> </fectionency>
위의 구성을 완료 한 후 필요한 모든 프로젝트를 시작하고 http : // localhost : 8765/hystrix를 방문하고 모니터링 스트림 http : // localhost : 8766/turbine.stream을 입력하면 여기에서 모니터링 정보 수집이 메시지 브로커를 통해 비동기로 구현된다는 점을 제외하고는 이전과 동일한 결과를 볼 수 있습니다.
소스 코드 다운로드 : https://github.com/lingd3/springcloudlearning/tree/master/chapter8
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.