Bram Vandewalle
Bram Vandewalle

Reputation: 1664

Spring Cloud Consul health check configuration

I'm running a Spring Boot application as a Docker container. This works fine so far, but it's giving me some head aches when trying to use Spring Cloud Consul as well. It reads the configuration from the Consul KVS just fine, but the health checks seem to be acting up.

The default health check uses the hostname of the docker container, for example http://users-microservice/health. Obviously this won't resolve when accessed from Consul.

No problem, the documentation mentions that you can use healthCheckPath in your bootstrap.yml file to configure it. This is what I have now:

spring:
    application:
        name: users-microservice
    cloud:
        consul:
        host: myserver.com
        port: 8500
        config:
            prefix: API-CONFIG
            profileSeparator: '__'
        discovery:
            tags: users-microservice
            healthCheckPath: http://myserver.com:${server.port}/status
            healthCheckInterval: 30s

Unfortunately, this variable seems to be used in a very different manner from what I expected. This is what Consul is trying to reach:

Get http://users:18090http//myserver.com:18090/status: dial tcp: unknown port tcp/18090http

How can I fix this? Is there some undocumented configuration parameter that I should set?

Upvotes: 2

Views: 6801

Answers (1)

spencergibb
spencergibb

Reputation: 25157

Use spring.cloud.consul.discovery.healthCheckUrl=http://myserver.com:${server.port}/status

healthCheckPath only changes the path, not host and port.

Upvotes: 5

Related Questions