Несколько экземпляров приложения в Cloud Foundry не отображаются на панели управления Netflix Hystrix

Я настроил Netflix Eureka, Hystrix и Turbine on Cloud Foundry, разделенные на два приложения:

Приложение для мониторинга «mrc-service» включает Eureka Server, Turbine и Hystrix Dashboard. Application.yml для этого приложения выглядит так:

---
spring:
  profiles: cloud
eureka:
  instance:
    nonSecurePort: 80
    hostname: ${vcap.application.uris[0]}
    leaseRenewalIntervalInSeconds: 10
    metadataMap:
      instanceId: ${spring.application.name}:${vcap.application.instance_id:${spring.application.instance_id:${random.value}}}
  client:
    registerWithEureka: true
    fetchRegistry: true
    service-url:
      defaultZone: https://mrc-service.myurl/eureka/

turbine:
  aggregator:
    clusterConfig: LOG-TEST
  appConfig: log-test

Приложение для создания потока Hystrix под названием «log-test» имеет несколько экземпляров в Cloud Foundry. Приложение является клиентом Eureka и предоставляет поток Hystrix с помощью Spring Actuator. Вот application.yml для приложения:

---
spring:
  profiles: cloud
eureka:
  instance:
    nonSecurePort: 80
    hostname: ${vcap.application.uris[0]}
    metadataMap:
      instanceId: ${spring.application.name}:${vcap.application.instance_id:${spring.application.instance_id:${random.value}}}
    secure-port-enabled: true
  client:
    healthcheck:
        enabled: true
    service-url:
      defaultZone: https://mrc-service.myurl/eureka/

Два экземпляра приложения log-test правильно регистрируются на сервере Eureka:

Успешная регистрация клиента Eureka

Но когда я начинаю отслеживать поток турбины, на приборной панели Hystrix отображается только один хост (как указано красной стрелкой) вместо двух:

На панели управления Hystrix отображается только один хост вместо двух

Журнал Turbine правильно извлекает оба экземпляра, но затем сообщает, что работает только один хост:

2017-08-23T10:12:10.764+02:00 [APP/PROC/WEB/0] [OUT] 2017-08-23 08:12:10.764 INFO 19 --- [ Timer-0] o.s.c.n.turbine.EurekaInstanceDiscovery : Fetching instances for app: log-test
2017-08-23T10:12:10.764+02:00 [APP/PROC/WEB/0] [OUT] 2017-08-23 08:12:10.764 INFO 19 --- [ Timer-0] o.s.c.n.turbine.EurekaInstanceDiscovery : Received instance list for app: log-test, size=2
2017-08-23T10:12:10.764+02:00 [APP/PROC/WEB/0] [OUT] 2017-08-23 08:12:10.763 INFO 19 --- [ Timer-0] o.s.c.n.t.CommonsInstanceDiscovery : Fetching instance list for apps: [log-test]
2017-08-23T10:12:10.764+02:00 [APP/PROC/WEB/0] [OUT] 2017-08-23 08:12:10.764 INFO 19 --- [ Timer-0] c.n.t.discovery.InstanceObservable : Retrieved hosts from InstanceDiscovery: 2
2017-08-23T10:12:10.765+02:00 [APP/PROC/WEB/0] [OUT] 2017-08-23 08:12:10.764 INFO 19 --- [ Timer-0] c.n.t.discovery.InstanceObservable : Found hosts that have been previously terminated: 0
2017-08-23T10:12:10.765+02:00 [APP/PROC/WEB/0] [OUT] 2017-08-23 08:12:10.764 DEBUG 19 --- [ Timer-0] c.n.t.discovery.InstanceObservable : Retrieved hosts from InstanceDiscovery: [StatsInstance [hostname=log-test.myurl:80, cluster: LOG-TEST, isUp: true, attrs={securePort=443, fusedHostPort=log-test.myurl:443, instanceId=log-test:97d83c44-8b9e-44c4-56b4-742cef7bada0, port=80}], StatsInstance [hostname=log-test.myurl:80, cluster: LOG-TEST, isUp: true, attrs={securePort=443, fusedHostPort=log-test.myurl:443, instanceId=log-test:3d8359e4-a5c1-4aa0-5109-5b49a77a1f6f, port=80}]]
2017-08-23T10:12:10.765+02:00 [APP/PROC/WEB/0] [OUT] 2017-08-23 08:12:10.764 INFO 19 --- [ Timer-0] c.n.t.discovery.InstanceObservable : Hosts up:1, hosts down: 0

Поэтому мне интересно, действительно ли Turbine объединяет потоки Hystrix двух экземпляров. Турбина должна будет связаться с экземплярами, например, используя специфические параметры заголовка Cloud Foundry, такие как X-CF-APP-INSTANCE. Не уверен, что это уже происходит.

Возможен ли описанный подход в Cloud Foundry или мне нужно вместо этого использовать Turbine Stream с RabbitMQ?


person Philipp    schedule 23.08.2017    source источник
comment
Сколько ваших методов регистрируется в @HystrixCommand?   -  person Pramod S. Nikam    schedule 24.08.2017
comment
и @EnableHystrixDashboard   -  person Pramod S. Nikam    schedule 24.08.2017
comment
Существует только один метод регистрации в @HystrixCommand. Панель HystrixDashboard включена, см. Снимок экрана выше. Доступ к отдельным потокам Hystrix работает, но проблема заключается в объединении нескольких потоков Hystrix в Turbine.   -  person Philipp    schedule 24.08.2017
comment
По какому URL-адресу вы пытаетесь увидеть панель инструментов hystrix?   -  person Pramod S. Nikam    schedule 02.09.2017


Ответы (2)


Я получил официальный ответ от средства отслеживания проблем Spring Cloud Netflix : для агрегирования данных Hystrix из нескольких экземпляров приложения в Cloud Foundry требуется Turbine Stream в сочетании с брокером (например, RabbitMQ).

person Philipp    schedule 04.09.2017

Чтобы открыть Turbine в совокупности, это те же шаги, что и для Hystrix, но вы должны сообщить кластеру через Turbine: http://localhost:8989// turbine.stream?cluster=READ.

Это откроет тот же экран, что и Hystrix, но если у меня будет больше сервисов, они появятся в совокупности.

person Pramod S. Nikam    schedule 02.09.2017
comment
Это не работает в Cloud Foundry, поскольку несколько экземпляров используют один и тот же маршрут. - person Philipp; 04.09.2017