GithubHelp home page GithubHelp logo

lukehuang / eureka-consul-adapter Goto Github PK

View Code? Open in Web Editor NEW

This project forked from twinformatics/eureka-consul-adapter

0.0 2.0 0.0 80 KB

This project contains a Spring Boot Starter that registers HTTP endpoints on a Spring Cloud Eureka server to support Prometheus's service discovery mechanism for Consul (<consul_sd_config>)

License: MIT License

Java 100.00%

eureka-consul-adapter's Introduction

Eureka Consul Adapter (for Prometheus)

This project contains a Spring Boot Starter that registers HTTP endpoints on a Spring Cloud Eureka server to support Prometheus's discovery mechanism for Consul (<consul_sd_config>)

Restrictions

This adapter does not support everything of Consul's HTTP API but only those endpoints and attributes that are required for Prometheus' service discovery mechanism.

Functionality

This starter adds the following HTTP endpoints:

  • /v1/agent/self Returns the name of the datacenter in use (Consul API: https://www.consul.io/api/agent.html#read-configuration). In Eureka, this can be set using the archaius.deployment.datacenter configuration property.
  • /v1/catalog/services Returns the names of the deployed applications (Consul API: https://www.consul.io/api/catalog.html#list-services). No service tags service will be returned as Eureka does not support this concept.
  • /v1/catalog/service/{service} Returns all available details for the particular application (instances, host names, ports, meta data, service tags). No service tags service will be returned as Eureka does not support this concept.

Long-polling

Consul HTTP API offers long-polling on some of its endpoints. Prometheus' client uses this functionality to get notified about changes in the registry (i.e. service de-/registrations). Prometheus adds the wait parameter (e.g. http://service-registry/v1/catalog/service/MY-SERVICE?wait=30000ms ), which causes the response to be delayed by specified time passed or returns immediately if the service itself changes within this time range. This behaviour has the benefit, that services changes are detected at once whithout have to wait the whole polling interval. Prometheus opens one long-polling request for each service. In order not to block one thread for each call, this adapter uses the async capabilities of Spring MVC. The default timeout for async requests is by default lower than 30 seconds and can cause AsyncRequestTimeoutExceptions. To prevent this you need to set spring.mvc.async.request-timeout to at least 35000 (35 seconds).

How to use this starter

Simply add this dependency the your Spring Cloud Eureka Server (https://github.com/spring-cloud-samples/eureka):

Maven

<dependency>
  <groupId>at.twinformatics</groupId>
  <artifactId>eureka-consul-adapter</artifactId>
  <version>${eureka-consul-adapter.version}<version>
</dependency>

Gradle

dependencies {
    compile 'at.twinformatics:eureka-consul-adapter:${eureka-consul-adapter.version}'
}

Requirements

  • Java 1.8+

Versions 1.x and later

  • Spring Boot 2.0
  • Spring Cloud Finchley

Versions 0.x

  • Spring Boot 1.5
  • Spring Cloud Edgware

eureka-consul-adapter's People

Contributors

barrycommins avatar lubos-bistak avatar tine2k avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.