【问题标题】:Spring cloud netflix turbine.stream reports no dataSpring Cloud Netflix Turbo.stream 报告无数据
【发布时间】:2016-04-27 20:33:41
【问题描述】:

像我之前的其他一些人一样,我无法让我的服务报告的 hystrix 流由涡轮机(本地,而不是 amqp)聚合。我已经阅读了关于 SO 的所有问题和答案,应用了他们的建议,但一无所获。这是我的设置。

版本:布里克斯顿 M4
在 localhost 上运行的服务:eureka、zuul、myservice、myservice2、turtle

myservice 和 myservice2 是暴露 hystrix.stream 的微服务。与zuul 一样,我可以直接连接到这些hystrix.stream 端点并查看数据。 turbine.stream 始终为空。

turbine application.yml

此配置的涡轮部分几乎直接取自 spring cloud 文档中的示例。

spring:
  application:
    name: turbine

server:
  port: 8989

management:
  port: 8990

turbine:
  aggregator:
    clusterNameExpression: metadata['cluster']
    clusterConfig: LOCAL
  appConfig: myservice,myservice2,zuul
  InstanceMonitor:
    eventStream:
      skipLineLogic:
        enabled: false

eureka:
  instance:
    leaseRenewalIntervalInSeconds: 10
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/

info:
  component: Turbine!

3 项服务中的每一项都包括:

eureka:
  instance:
    leaseRenewalIntervalInSeconds: 10
    metadataMap:
      cluster: LOCAL
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/

http://localhost:8761/eureka/apps验证 Eureka 中的元数据映射是否正确

<applications>
  <versions__delta>1</versions__delta>
  <apps__hashcode>UP_4_</apps__hashcode>
  <application>
    <name>MYSERVICE</name>
    <instance>
      <instanceId>192.168.43.128:myservice:2222</instanceId>
      <hostName>192.168.43.128</hostName>
      <app>MYSERVICE</app>
      <ipAddr>192.168.43.128</ipAddr>
      <status>UP</status>
      <overriddenstatus>UNKNOWN</overriddenstatus>
      <port enabled="true">2222</port>
      <securePort enabled="false">443</securePort>
      <countryId>1</countryId>
      <dataCenterInfo class="com.netflix.appinfo.InstanceInfo$DefaultDataCenterInfo">
        <name>MyOwn</name>
      </dataCenterInfo>
      <leaseInfo>
        <renewalIntervalInSecs>10</renewalIntervalInSecs>
        <durationInSecs>90</durationInSecs>
        <registrationTimestamp>1453382031096</registrationTimestamp>
        <lastRenewalTimestamp>1453382630966</lastRenewalTimestamp>
        <evictionTimestamp>0</evictionTimestamp>
        <serviceUpTimestamp>1453382031096</serviceUpTimestamp>
      </leaseInfo>
      <metadata>
        <cluster>LOCAL</cluster>
      </metadata>

当我运行涡轮时,它会在 Eureka 中找到服务实例,但没有选择它们来报告数据:

o.s.c.n.t.CommonsInstanceDiscovery       : Fetching instance list for apps: [myservice, myservice2, zuul]
o.s.c.n.turbine.EurekaInstanceDiscovery  : Fetching instances for app: myservice
o.s.c.n.turbine.EurekaInstanceDiscovery  : Received instance list for app: myservice, size=1
o.s.c.n.turbine.EurekaInstanceDiscovery  : Fetching instances for app: myservice2
o.s.c.n.turbine.EurekaInstanceDiscovery  : Received instance list for app: myservice2, size=1
o.s.c.n.turbine.EurekaInstanceDiscovery  : Fetching instances for app: zuul
o.s.c.n.turbine.EurekaInstanceDiscovery  : Received instance list for app: zuul, size=1
c.n.t.discovery.InstanceObservable       : Retrieved hosts from InstanceDiscovery: 3
c.n.t.discovery.InstanceObservable       : Found hosts that have been previously terminated: 0

还有另一个(可能有用的?)日志行,当日志被提升到DEBUG时出现:

c.n.t.discovery.InstanceObservable       : Retrieved hosts from InstanceDiscovery: [StatsInstance [hostname=192.168.43.128, cluster: MYSERVICE, isUp: true, attrs={cluster=LOCAL, port=2222}], StatsInstance [hostname=192.168.43.128, cluster: MYSERVICE2, isUp: true, attrs={cluster=LOCAL, port=2223}], StatsInstance [hostname=192.168.43.128, cluster: ZUUL, isUp: true, attrs={cluster=LOCAL, port=8765}]]

【问题讨论】:

    标签: spring spring-cloud netflix hystrix


    【解决方案1】:

    好吧,没关系,这是我在调试器中运行涡轮机时发现的一个愚蠢的错误。 clusterNameExpressionturbine 的孩子,而不是 aggregator

    纠正该错误后,我可以在逗号分隔列表中看到第一个服务报告涡轮流中的数据,但看不到其他服务。这是预期的吗?即,turtle 是为监控来自构成相同逻辑应用程序的多个微服务的流而设计的,还是纯粹用于同一微服务的多个实例?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-31
      • 2016-03-31
      • 2017-07-08
      • 2017-07-21
      • 2017-07-15
      • 2018-04-26
      • 2022-12-05
      • 1970-01-01
      相关资源
      最近更新 更多