Skip to main content
For containerised services on one or a handful of hosts, with Docker or Docker Compose.
Roughly twenty minutes to first data, an afternoon to something useful.

The shape

One Collector per host, not one per service. It gathers container and host telemetry itself, and your application containers export to it rather than directly to aiAxonIQ.
Why not export straight from each container? Three reasons that all arrive eventually:
  • Each container would carry the license key. One Collector means one place holding the credential.
  • Each would be its own exporter, and dozens of small exporters hit the request rate limit that one batching Collector does not.
  • Filtering, redaction and sampling would have to be configured per service instead of once.
A single container on one host is the exception where direct export is reasonable.

Day one

1

Prove the path

Quickstart — ten minutes, curl only. Do this from one of the hosts that will run the Collector, so egress is proven at the same time.
2

Agree service names and environments

Before sending anything. service.name identical across environments, separated by deployment.environment. See Resource attributes.
3

Run a Collector

Docker for a standalone container, or Docker Compose to add it as a service in an existing stack.You immediately get host metrics and per-container resource usage, with no change to any application.
4

Point one application at it

Note there is no license key here — the Collector holds it. Application containers only need to reach the Collector.
5

Verify

Services, Traces and Infrastructure should all have something in them within a minute. See Verify your data arrived.

Container logs

Two routes, and the choice matters:
Most estates want both. Tail everything so nothing is invisible, and add the OpenTelemetry logging bridge to the services you actually debug — those are the ones where trace correlation pays.

Settings that are painful to change later

The Collector’s endpoint name. Application containers reference it by service name on the Docker network. Renaming it later means touching every service’s environment. Pick a name you will not want to change.
deployment.environment, on everything, from the start. Retagging after the fact means every chart loses continuity at the point you changed it.

The Collector must not be a single point of failure

If the Collector is down, telemetry from that host is lost. Applications export to it, not through it to somewhere durable.Two mitigations, both cheap:
  • Restart policy. restart: unless-stopped, so it comes back with the host.
  • A sending queue, so a brief aiAxonIQ or network blip is buffered rather than dropped. See Exporters.
Then monitor the Collector itself — scrape its own metrics and send them along. A silently failing Collector looks exactly like an application that stopped receiving traffic.

Week one

Usually the single largest volume reduction available, and it costs you nothing you would have read. See Collector configuration.
The rule that catches a Collector that stopped. No threshold on the data itself can detect data that is not arriving. See Alerting.
Reachability from outside your network — the only signal that does not depend on your code having run. See Synthetic monitoring.
Vendor images, legacy containers and services nobody owns become visible with no code change. Early access — see zero-code instrumentation.

When you outgrow this

More than a handful of hosts, and per-host Collector configuration becomes the thing you maintain. That is the point at which a two-tier setup — an agent per host forwarding to a shared gateway — earns its complexity. It is also Kubernetes’ default shape; see Onboarding: Kubernetes.

Next

Docker install

The working configuration.

Collector configuration

Receivers, processors and exporters.

Full SaaS journey

Alerting, dashboards, roles and usage.