1。はじめに
前の記事では、単一のサービスインスタンスの監視を実装しました。もちろん、実際のアプリケーションでは、単一のインスタンスの監視データはあまり価値がありません。さらに必要なのは、クラスターシステムの監視情報です。現時点では、タービンを導入する必要があります。タービンは、監視情報を収集し、集中的なディスプレイと監視のために集計情報をHystrixダッシュボードに提供できます。
2。監視局とサービスを構築します
2.1全体の構造と準備
この記事のエンジニアリングの実装は、前の記事のプロジェクトに基づいています。タービンを導入することにより、Service-Ribbon Serviceの監視情報を集約し、表示するためにHystrixダッシュボードに出力します。複数のサービス用のダッシュボードが必要なため、サービスリボンクラスターを構築し、情報を集約して表示するための新しいService-Turbineプロジェクトを作成する必要があります。最終的な全体的な構造は次のとおりです。
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 <http://www.w3.org/2001 xsi:schemalocation = "http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.0.sdsd"> <modelversion> 4.0.0 </modelversion> <グループ<バージョン> 0.0.1-snapshot </version> <packaging> jar </packaging> <name> service-turbine </name-turbine </name> <describe> spring boot </description> <parent> <parringframework.boot </groupid> <artifactid> spring-boot-starter- vertion- </artifactid> </artifactid> </artifactid> </artifactid> </artifactid> </artifactid> <! - リポジトリからのlookup parent-> </parent> <properties> <properties> <project.build.sourceencoding> utf-8 </project.build.sourceencoding> utf-8 </project.reporting.outputencoding> <spring-cloud.version> edgware.sr1 </spring-cloud.version> </properties> <dependencies> <dependency> <groupid> org.springframework.cloud> spring-cloud-cloud-starter-turbine </artifactid> </dependency> <deprogid> <artifactid> spring-cloud-netflix-turbine </artifactid> </dependency> <dependency> groupid> org.springframework.boot </groupid> <artifactid> spring-boot-starter-actuator </artifactid> </dependency> <依存関係> <グループ< <artifactid> spring-boot-starter-test </artifactid> <scope>テスト</scope> </dependency> </dependencies> <dependencymanagement> <dependencies> <dependency> groupid> org.springframework.cloud </groupid> <artifactid> spring-cloud. </artifactid> </artifactid>> < <タイプ> pom </type> <scope>インポート</scope> </dependency> </dependencies> </dependencymanagement> <bultins> <blubins> <groupid> org.springframework.boot </groupid> <artifactid> spring-boot-maven-plugin </artifactid> </plumin
@enableturbineアノテーションをプロジェクトの起動クラスに追加し、タービンを有効にします。注釈には、 @enablediscoveryclientアノテーションが既に含まれています。つまり、登録サービスが有効になっています。
@SpringBootApplication @EnableTurbine Public Class ServiceTurbineApplication {public static void main(string [] args){springApplication.run(serviceTurbineApplication.class、args); }}次のように、application.propertiesにeurekaおよびタービン関連の構成を追加します。
spring.application.name = service-turbine server.port = 8766 security.basic.enabled = false eureka.client.serviceurl.defaultzone = http:// localhost:8761/eurekaタービン。 Turbine.combine-host-port = true
上記の構成では、Turbine.App-Configパラメーターは、eurekaのServiceIDリストを構成して、どのサービスが監視されているかを示します。 Turbine.Cluster-Name-Expressionパラメーターは、クラスター名をデフォルトとして指定します。多数のサービスがある場合、複数のタービンサービスを開始して、さまざまな集約クラスターを構築できます。このパラメーターを使用して、これらの異なる集約クラスターを区別できます。同時に、パラメーター値を使用して、Hystrixダッシュボードのさまざまな集約クラスターを見つけることができます。 HystrixストリームのURLでクラスターパラメーターを指定するだけです。 Turbine.comBine-Host-PortパラメーターはTrueに設定されているため、同じホストのサービスは、ホスト名とポート番号の組み合わせによって区別できます。デフォルトでは、さまざまなサービスがホストによって区別されます。これにより、ローカルマシン上のさまざまなサービスがデバッグ中に統計のために1つのサービスに集約されます。
3。クラスター監視
ポート番号8761でユーレカサーバープロジェクトを開始します。
ポート番号8762および8763でユーレカクライアントプロジェクトを開始します。
ポート番号8764および8765でサービスリボンプロジェクトを開始します。
ポート番号8766でService-Turbineプロジェクトを開始します。
http:// localhost:8766/turbine.streamにアクセスしてください。
http:// localhost:8765/hystrixにアクセスして、監視ストリームhttp:// localhost:8766/turbine.streamを入力してください。
図で見ることができるように、2つのサービスリボンを開始しましたが、監視ページには監視図のみが表示されています。ただし、図のクラスターレポート領域のホスト属性は、以前にスタンドアロンモニタリングを試すときとは異なることがわかりますが、これらの2つのインスタンスは同じサービスであり、クラスターの場合、サービスクラスターの高可用性を心配しているため、タービンは全体と同じサービスを監視して概要します。
もちろん、2つの監視図を本当に表示したい場合は、Spring.Application.NameをService-Ribbonのインスタンスの1つの名前を別の名前に設定して、実行後に2つの異なる監視図が表示されます。
4。メッセージブローカーと組み合わせた
Spring Cloudがタービンをカプセル化すると、メッセージブローカーに基づいてコレクションの実装もカプセル化します。したがって、メッセージブローカーに収集する必要があるすべての監視情報を出力でき、タービンサービスはメッセージブローカーからこれらの監視情報を非同期に取得し、最終的にそれらを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-Surbine-StreamとSpring-Cloud-Starter-Stream-Rabbitを実際にラップするため、これらの2つの依存関係を導入するだけです。
<?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 <http://www.w3.org/2001 XSI:Schemalocation = "http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.0.sdsd"> <modelversion> 4.0.0 </modelversion> <グループ> com.dan </groupid> <artifactid> service-turbine-amqp </artifactid> <バージョン> 0.0.1-snapshot </version> <packaging> jar </packaging> <name> service-turbine-amqp </name> <説明>スプリングブート</description> <parent> org.springframework.boot </groupid> <artifactid> spring-boot-starter-parent </artifactid> <バージョン> 1.5.9.release </version> <relativepath/> <! - lookup parent from repository-> </parent> <properties> <build.sourceencoding> utf-8 </project.build.sourceding> <project.reporting.outputencoding> utf-8 </project.reporting.outputencoding> <java.version> 1.8 </java.version> <spring-cloud.version> edgware.sr1 </spring-cloud.version> </properties> <sedencies> <deprofency> <edprigid> <artifactid> spring-cloud-starter-turbine-amqp </artifactid> </dependency> <dependency> groupid> org.springframework.boot </groupid> <artifactid> spring-boot-starter-actuator </artifactid> <scope> scope> dependency> </depency> </dependency> despency> despency> dependenc <Dependency> GroupId> org.springframework.cloud </groupid> <artifactid> spring-cloud-dependencies </artifactid> <version> $ {spring-cloud.version} </version> <type> pom </type> <scope> import </scope> </depence> </dependency> < <gripid> org.springframework.boot </groupid> <artifactid> spring-boot-maven-plugin </artifactid> </plugin> </plugins> </build> </project>メインクラスで@EnableTurbinEntreamアノテーションを使用して、タービンストリームの構成を有効にします。
@SpringBootApplication @ENABLETURBINESTREAM @ENABLEDISCOVERINT PUBLIC CLASS SERTURBINEAMQPAPPLICATION {public Static void Main(String [] args){SpringApplication.run(ServiceTurbineamQPapplication.class、args); }}次に、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に依存関係を追加してください。
<Dependency> groupId> org.springframework.cloud </groupId> <artifactid> spring-cloud-netflix-hystrix-amqp </artifactid> </dependency>
上記の構成を完了した後、必要なすべてのプロジェクトを開始し、http:// localhost:8765/hystrixにアクセスして、監視ストリームhttp:// localhost:8766/turbine.streamに入ります。
ソースコードのダウンロード:https://github.com/lingd3/springcloudlearning/tree/master/chapter8
上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。