The Odigos VM Agent is available as part of Odigos Pro. For access and licensing details,
contact us.
odictl, exactly as on any VM Agent.
Agent environment variables
:443 in an endpoint implies wss. The connection is outbound-only, so a
public Central endpoint or one in a different AWS account works with no inbound
rules on the cluster.Platform naming per mode
The agent’s name depends on the topology so each mode displays naturally in the Central UI:ODIGOS_AGENT_NAME overrides both. In Agent-only mode, if the cluster cannot be
determined (task metadata unavailable), the agent falls back to the hostname and
logs a warning.
Both modes register with platform type aws.ecs, so a cluster presents
consistently in Central either way.
Configuration precedence and persistence
ODIGOS_DEFAULT_CONFIG is a default, not an override. Precedence, lowest to
highest:
1
Built-in ECS distribution defaults
The baseline shipped in the image.
2
Discrete env vars
ODIGOS_CENTRAL_ENDPOINT, ODIGOS_AGENT_NAME, and so on.3
ODIGOS_DEFAULT_CONFIG
The inline document from the task definition.
4
The persisted config.yaml
Whatever Central or
odictl has written. This wins on every boot after the first./etc/odigos-ecs-agent (a host bind mount), so the agent keeps its deployment
identity and configuration across task restarts and image upgrades.
Proxy environment variables
The proxy is unprivileged — no host PID, no Docker socket, no host mounts.
What the proxy does with requests
The journal replays config mutations to agents that connect later, so a node
that joins the cluster — or a task that migrates to a fresh instance — converges
to the cluster configuration automatically. Each agent’s replay position is
tracked by its stable deployment id, so a reconnecting agent replays only what it
missed.
Membership and lifecycle events
- Agent connects and disconnects are logged and forwarded to Central as
ecs-proxy.agent-lifecycleevents; departed agents keep a tombstone (id, node, last seen). - Coverage changes are logged and forwarded as
ecs-proxy.coverageevents. GET /healthzon port 4321 returns the whole view: connected agents, departed tombstones, and the last coverage result. See checking the healthz endpoint.
What gets instrumented
The agent’s own binaries, the
amazon-ecs-agent, the SSM agent, and awsvpc
pause containers are excluded from instrumentation automatically.
How the collector runs
As in the Docker deployment, there is nosystemd inside the container:
odigos-otelcolruns as a supervised child process of the agent, so its lifecycle follows the agent task.- Agent and collector share the task’s stdout, captured by the
awslogsdriver into the/odigos/ecs-agentlog group. - With host networking, the collector and OpAMP server listen on the instance’s network namespace, reachable by instrumented tasks on localhost or the instance IP.
- Collector logs are JSON-formatted on ECS; the
awslogsdriver ships them to CloudWatch Logs as the primary log stream. - systemd memory limits
do not apply — cap the agent with the task definition’s
cpu,memory, andmemoryReservationinstead.
Instrumentation file sync
The image bakes the Java instrumentation files into a staging directory. On startup the agent rsyncs them onto the container instance’s/var/odigos (the
task definition bind mount), and seeds them into a workload’s container namespace
when it attaches. Go, C++, and the OBI fallback are compiled into the agent
binary and need no on-disk files.
This is why /var/odigos must be a writable host mount. The full list of
elevated task settings is under
required permissions.