The shape
1
One agent per host
A systemd service on a VM, a container with host PID access under Docker,
or a DaemonSet pod on Kubernetes. Same binary in each case.
2
It discovers processes
It scans for processes that serve or make network calls and attaches probes
to the ones it can instrument. New processes are picked up as they start —
nothing needs restarting when you deploy.
3
Probes write to kernel maps
Bounded work at the event, results into shared memory. See
How eBPF works.
4
Userspace aggregates and decorates
Requests are assembled into spans and RED metrics, URL paths reduced to
route patterns, and Kubernetes or host metadata attached.
5
It exports OTLP over TLS
To exactly one destination: your endpoint, authenticated with your license
key. From there it is ordinary telemetry — see
Platform architecture.
Why one process sees everything
Because it is in the kernel, the agent does not need to be inside your application. It needs to be in the same PID namespace as the processes it observes — which is whathostPID: true on Kubernetes and --pid=host under
Docker are for.
The same principle explains something people find surprising: the workload’s
base image is irrelevant. A container has no kernel of its own, so a
distroless image, a musl-based image and a full distribution image are all
equally observable. The requirements apply to the host.
What it does before exporting
Three transformations happen on the host, and each exists for a reason worth knowing:URL paths become route patterns
URL paths become route patterns
/orders/8817 and /orders/8818 are reduced to a single route shape.Two effects, and both matter. Cardinality: raw paths would turn one
endpoint into a series per identifier, which is the fastest known way to
make a metrics store unusable. Privacy: identifiers embedded in paths
never leave the host.Health and metrics endpoints are dropped
Health and metrics endpoints are dropped
Highest frequency, lowest diagnostic value, and frequently a large share of
total volume. Dropping them at the source costs you nothing you would have
looked at and reduces both your ingest bill and your rate-limit pressure.
Batches are sized for a fleet
Batches are sized for a fleet
A DaemonSet across 200 nodes is 200 exporters spending one organization’s
rate-limit budget. Batching is tuned with that in mind rather than left at
a single-process default. See Plan limits.
Deployment shapes
What it reads from Kubernetes
On Kubernetes the agent decorates telemetry with pod, namespace, node and workload. That needs cluster access, and the grant is deliberately small:listandwatchon pods, services, nodes and replicasets.- Read-only, cluster-scoped.
- Used solely to attach metadata to telemetry — nothing is created, modified or deleted.
privileged: false, drops all capabilities
and then adds back exactly the profile’s set, and mounts the root filesystem
read-only. You can inspect the whole thing before installing anything — see
Kubernetes.
Where the credential lives
Never in a configuration file. On Kubernetes it is a Secret injected as an environment variable — never in the ConfigMap, so inspecting the ConfigMap stays a safe debugging step. On Linux it is a root-owned environment file with mode0600. It is redacted in every diagnostic the tooling prints.
Issue the agent its own license key, scoped to traces and metrics, and
revocable independently of your primary ingest key. A DaemonSet places the
credential on every node, which is a materially wider exposure than one
application’s configuration. See Security model.
Network requirements
Exactly one outbound destination — your OTLP endpoint, over TLS. The agent opens no inbound listeners and contacts nothing else: no analytics, no update check, no vendor telemetry. An egress-restricted network needs that one host allowed. The exception is install time, when upstream artefacts are downloaded and checksum-verified. See OpenTelemetry OBI.Next
Security model
The full statement for a security review.
Capability profiles
Choosing a privilege level.
Install on Kubernetes
The Helm chart, values and what it renders.