How to activate /turbine.stream endpoint in a standalone Turbine application

坚强是说给别人听的谎言 提交于 2019-12-08 07:37:51

问题


I am trying to create a standalone application to collect Hystrix stream from other applications. But it does not expose the /turbine.stream endpoint by default. I am sure what is missing in my project.

Spring Boot: 2.0.4.RELEASE, Spring Cloud: Finchley.SR1

The application class:

@SpringBootApplication
@EnableDiscoveryClient
@EnableTurbine
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

}

The content of applicaiton.yml:

server:
  port: 8383
spring:
  application:
    name: hystrix-turbine

management:
  endpoints:
    web.exposure.include: '*'
applications: hystrix
turbine:
  aggregator:
    clusterConfig: ${applications}
  appConfig: ${applications}
#  instanceUrlSuffix.default: actuator/hystrix.stream

And the maven dependencies:

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-turbine</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies> 

I created a sample project for this.


回答1:


I'd suggest you check the configuration steps below:

1) Your stream URL in the Hystrix Dashboard should be:

http://localhost:{turbine app port}/turbine.stream?cluster={configured cluster in properties file}

The url should be pointing to the port of the application that has @EnableTurbine annotation in your main class.

2) Check if you are getting a response for:

http://localhost:{client app port}/actuator/hystrix.stream

(use your browser for this) (this should be coming from the application you have enabled hystrix on using @EnableCircuitBreaker)

If you're getting pings, then atleast your hystrix stream is accessible. If not, Check if you have: org.springframework.boot:spring-boot-starter-actuator in your client side dependencies and make sure you have the below property set in application.properties file of the application that has @EnableCircuitBreaker in the main class:

management.endpoints.web.exposure.include= hystrix.stream, info, health

Check the URL again.

3) Once your get a reponse from hystrix.stream, you can now configure your cluster on the turbine app properties file:

turbine:

      appConfig: {serviceId in lower case}
      aggregator:
        clusterConfig: {above serviceId in upper case} 

after running the app, check if you've configured the cluster correctly:

http://localhost:{turbine app port}/clusters

you should'nt be getting a "[]" on your browser if all's well.

Once you see a response on the clusters endpoint, you will now be able to see the details on the dashboard when you point it to the turbine app



来源:https://stackoverflow.com/questions/52060679/how-to-activate-turbine-stream-endpoint-in-a-standalone-turbine-application

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!