A practical reference for integrating Linkerd service mesh metrics into an existing OpenTelemetry Collector pipeline. Covers what OTel app instrumentation provides versus what Linkerd's sidecar proxy exposes at the network layer, where the two overlap (request rate, latency, errors) and where they don't (mTLS identity, business semantics, distributed traces). Includes a working OTel Collector config using a dedicated prometheus/mesh receiver with Kubernetes pod discovery, OTTL-based metric filtering, and resource enrichment to tag mesh metrics with layer=mesh. Also discusses cardinality implications of proxy label sets, a known $-expansion gotcha in Collector relabel configs, and how to visualize both layers side-by-side in Grafana using a mixed datasource panel. The reference stack uses K3s, Linkerd edge-26.5.5, OTel Demo (Astronomy Shop), OTel Collector contrib 0.118.0, VictoriaMetrics, and Grafana.

13m read timeFrom cncf.io
Post cover image
Table of contents
What OTel coversWhat mesh-derived metrics coverThe non-overlapThe integration patternA short note on cardinalityWhere each one earns its place
610 Impressions