helm install.
About an hour to first data, a day to something useful, a week or two to
a team using it. Most of that is not installation.
The shape
Two tiers, and this is the standard arrangement rather than an advanced one:1
A DaemonSet — one Collector per node
Collects node and pod telemetry, receives OTLP from workloads on that node,
and attaches Kubernetes metadata. Applications export here.
2
A gateway — a Deployment of a few replicas
Everything the DaemonSets collect goes here. Holds the license key, and is
the one place tail sampling, redaction and filtering are configured.
Why two tiers rather than one. Kubernetes metadata must be attached on
the node that ran the pod, which only a DaemonSet can do. Tail sampling
requires every span of a trace to reach the same instance, which only a
gateway can guarantee. Neither tier can do the other’s job.It also means the license key lives on a few gateway pods rather than on
every node.
The four decisions to make first
Day one
1
Prove the path
Quickstart from inside the cluster — a pod with
curl. This proves cluster egress, which is the constraint that most often
surprises people.2
Store the license key as a Secret
Never in a ConfigMap, never in a values file you commit. Only the gateway
needs it.
3
Deploy the gateway, then the DaemonSet
In that order — a DaemonSet with nowhere to forward to just buffers and
then drops.
4
Confirm Kubernetes metadata is attached
Open a record and check it carries pod, namespace and node. If not, the
Kubernetes attributes processor lacks read access to pods — see
Infrastructure and Kubernetes.
5
Point one workload at the DaemonSet
Then verify, before rolling it out to everything.
Week one
Instrument one full request path
Instrument one full request path
Every service one real request touches. Then open a trace and confirm it
spans all of them — a hole means propagation broke or sampling is
inconsistent. See
Traces with a hole in them.
Set resource limits on the Collectors
Set resource limits on the Collectors
And include the memory limiter processor, first in every pipeline. Without
it a traffic spike can push a Collector into the node’s out-of-memory
killer — and on a shared node, what dies may not be the Collector.See Collector configuration.
Filter health and readiness probes
Filter health and readiness probes
Kubernetes probes every pod constantly. On a cluster this is frequently the
largest single share of telemetry volume, and nobody has ever read one.
Monitor the Collectors themselves
Monitor the Collectors themselves
Scrape their own metrics and send them along. A silently failing gateway
looks exactly like a quiet cluster.
Alert on absence, not only on thresholds
Alert on absence, not only on thresholds
The rule that catches a broken pipeline. See
Alerting.
Coverage for what you cannot instrument
Every cluster has them: vendor images, a legacy service nobody owns, something in a language no one left uses. The eBPF agent observes them at the kernel with no code change, as a second DaemonSet.Next
Kubernetes install
The working manifests.
Sampling
Gateway tail sampling, done correctly.
Enterprise
Many teams, single sign-on and a rollout plan.