Where should I install the consul-esm binary?


I’m attempting to give consul-esm a go however I’m not sure where I am meant to install it. The readme only says to move the binary to the $PATH but not if it needs to go on my Consul servers or nodes or both.

Could someone clarify or point me to where it specifies in the documentation?


Hi @CarbonCollins,

Consul ESM can run on any machine in your environment. It just needs to have access to the Consul API.

The paragraphs at the end of this tutorial are a bit more clear that ESM is designed to run on nodes where a Consul agent is not present. https://learn.hashicorp.com/tutorials/consul/service-registration-external-services#monitor-the-external-service-with-consul-esm

Internal services are those provided by nodes where the Consul agent can run directly. They are registered with service definitions via the local Consul agent.

External services run on nodes where the Consul agent cannot be run. They must be registered directly with the catalog because, by definition, they don’t have a local Consul agent to register with.

Because Consul monitoring requires that a Consul agent be running on the monitored service, health checks are not performed on external services. To enable health monitoring for external services, use Consul External Service Monitor.

Hmmm ok good to know, I assume then if the external “node” itself can not have other binaries running on it its ok to run esm on one of my normal consul nodes?

I have an external service which has a http, https, and tcp endpoints which I would like consul to health check (also potentially add some tags so that traefik can auto-detect it)

The external node can have other binaries running on it. It should just not have a Consul agent running on it, otherwise the services associated with the external node will be removed via the next anti-entropy sync.