0

Turbine インスタンスが実行されている Eureka Server とそれに接続されているいくつかの検出クライアントがあります。すべて正常に動作しますが、server.contextPath設定されている検出クライアントを登録すると、認識されずInstanceMonitor、Turbine ストリームはそのhystrix.stream.

これは、Eureka/Turbine サーバーのログでどのように見えるかです:

2015-02-12 06:56:23.265  INFO 1 --- [        Timer-0] c.n.t.discovery.InstanceObservable       : Hosts up:3, hosts down: 0
2015-02-12 06:56:23.266  INFO 1 --- [        Timer-0] c.n.t.monitor.instance.InstanceMonitor   : Url for host: http://user-service:8887/hystrix.stream default
2015-02-12 06:56:23.268 ERROR 1 --- [InstanceMonitor] c.n.t.monitor.instance.InstanceMonitor   : Could not initiate connection to host, giving up: []
2015-02-12 06:56:23.269  WARN 1 --- [InstanceMonitor] c.n.t.monitor.instance.InstanceMonitor   : Stopping InstanceMonitor for: user-service default

com.netflix.turbine.monitor.instance.InstanceMonitor$MisconfiguredHostException: []
    at com.netflix.turbine.monitor.instance.InstanceMonitor.init(InstanceMonitor.java:318)
    at com.netflix.turbine.monitor.instance.InstanceMonitor.access$100(InstanceMonitor.java:103)
    at com.netflix.turbine.monitor.instance.InstanceMonitor$2.call(InstanceMonitor.java:235)
    at com.netflix.turbine.monitor.instance.InstanceMonitor$2.call(InstanceMonitor.java:229)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)

http://user-service:8887/hystrix.streamserver.contextPath を含む正しい URL があるべき場所から hystrix ストリームを取得しようとします。http://user-service:8887/uaa/hystrix.stream

そのapplication.ymlクライアントの には次が含まれます。

server:
  port: 8887
  contextPath: /uaa

security:
  ignored: /css/**,/js/**,/favicon.ico,/webjars/**
  basic:
    enabled: false

私の質問は、適切な hystrix.stream URL の場所を登録するために、このユーザー サービス検出クライアントに追加の構成オプションを追加する必要があるかどうかです。

私はまだそれを掘り下げていません。その質問への回答を得る前に何かを見つけたらお知らせします。

現在のソリューション

と の使用に関しては、1 つの問題がありserver.contextPathますmanagement.context-path。両方が設定されている場合、タービン ストリームは で提供され${HOST_URL}/${server.contextPath}/${management.context-path}/hystrix.streamます。その場合、使用を中止する必要がserver.contextPathありました ( controllers のプレフィックスに置き換えました@RequestMapping)。

ここで、 を使用するmanagement.context-pathと、hystrix.stream は、それをプレフィックスとして使用する URL から提供されます。その場合、スペンサーの提案に従って設定する必要があります

turbine.instanceUrlSuffix=/{PUT_YOUR_MANAGEMENT_CONTEXT_PATH_HERE}/hystrix.stream

もちろん、これはすべてのディスカバリー クライアントで同じ値に設定する必要があります。Spring Cloud Config http://cloud.spring.io/spring-cloud-config/spring-cloud-config.htmlmanagement.context-pathで簡単に設定できます。

4

1 に答える 1

3

設定できますturbine.instanceUrlSuffix.<CLUSTERNAME>=/uaa/hystrix.stream<CLUSTERNAME>で設定された値はどこにありますかturbine.aggregator.clusterConfigTurbine 1 wikiのすべての設定オプションが機能します。Spring Cloud Netflix Turbine が eureka からポートを追加するため、サフィックスにポートを追加する必要はありません。

于 2015-02-14T17:32:53.273 に答える