Autodiscovery Template Variables

Autodiscovery enables you to set static configurations for dynamic resources like containers.

You can use the following template variables to dynamically assign your container’s values:

Template VariableDescription
"%%host%%"The container’s network IP.
"%%host_<NETWORK NAME>%%"When the container is attached to multiple networks, returns the network name to use.
"%%port%%"The highest exposed port sorted numerically and in ascending order.
For example, returns 8443 for a container that exposes ports 80, 443, and 8443.
"%%port_<NUMBER_X>%%"The <NUMBER_X> port sorted numerically and in ascending order.
For example, if a container exposes ports 80, 443, and 8443, "%%port_0%% refers to port 80, and "%%port_1%%" refers to 443.
"%%port_<NAME>%%"The port associated with the port name <NAME>.
"%%pid%%"The container process ID, as returned by docker inspect --format '{{.State.Pid}}' <CONTAINER_NAME>.
"%%hostname%%"The hostname value from the container configuration. Only use this variable if the "%%host%%" variable cannot fetch a reliable IP (for example, in ECS awsvpc mode).
"%%env_<ENV_VAR>%%"The contents of the $<ENV_VAR> environment variable as seen by the Agent process.
"%%kube_namespace%%"The Kubernetes namespace.
"%%kube_pod_name%%"The Kubernetes pod name.
"%%kube_pod_uid%%"The Kubernetes pod UID.

Fall back:

  • For the "%%host%%" template variable: in case the Agent is not able to find the IP, this template variable falls back to the bridge network IP.
  • For the "%%host_<NETWORK NAME>%%": if the <NETWORK_NAME> specified is not found, this template variable behaves like "%%host%%".

Depending on your platform, not all template variables are supported:

PlatformAuto-discovery identifiersHostPortTagPidEnvHostnameKube NamespacePod NamePod UID
Docker
ECS Fargate
Kubernetes

Further Reading

PREVIEWING: may/unit-testing