0

I am trying to get a view on 2 different services that are running using Spring Boot. Both services are nicely registered in Eureka and now i want to get some Hystrix data plotted in the Turbine webapplication.

When testing out the single services using Turbine it works great:

http://localhost:2222/hystrix.stream (service1)
http://localhost:3333/hystrix.stream (service2)

I am trying to get a view on the dashboard which plots both of the services but whatever i try only the first service in the Turbine config is plotted.

turbine:
   clusterNameExpression: new String('default')
   appConfig: service1,service2

I seem to hit a wall when trying to get the data into the turbine.stream for both of the services.

Any hints or tips?

Marco
  • 15,101
  • 33
  • 107
  • 174

2 Answers2

0

To answer my own question, it seems that Turbine cannot monitor more services on the same host as it is bound to the hostname. See https://github.com/Netflix/Turbine/issues/88

Turbine has 2 operating models:

  • pull; data from separate service streams are pulled by Turbine
  • push; data from separate services are pushed to a Turbine server by using an AMQP broker such as RabbitMQ

A workaround is to use TurbineAMQP that is capable of doing exact the stuff that i needed. It involves a bit more infrastructure but works nicely!

Marco
  • 15,101
  • 33
  • 107
  • 174
  • By now there is a property called `turbine.combineHostPort=true` that should solve your issue without having to use RabbitMQ. [Here](https://github.com/spring-cloud/spring-cloud-netflix/issues/1087) is a corresponding issue from the Spring Cloud Netflix project. – Philipp Aug 23 '17 at 12:23
0

First off, I don't think Turbine is host-exclusive as Marco saying

... it seems that Turbine cannot monitor more services on the same host as it is bound to the hostname

I implemented Turbine with the Hystrix Dashboard App (which is not recommended), aggregating 2 services with same spring.application.name.

I found how Turbine collects hystrix stream is that, each Turbine application will look for services in Eureka Registry with the given name by turbine.appConfig in application.properties, which is the spring.application.name by default or eureka.instance.appname explicitly of your services, regardless of the hosts of them. Till now turbine stream is ready.

A list of names as service IDs from your request in the previous step will be returned, and at least one of them should match the list of names you provide in turbine.aggregator.clusterConfig.

When you type http://[turbine-app-host:port]/turbine.stream?cluster=[cluster name] on the home page of Hystrix Dashboard, the cluster name parameter should be one of the matching names from turbine.aggregator.clusterConfig.

Zii
  • 45
  • 2
  • 10