17

The Components in One Map

Source: Observability Platform source notes, section 17, “The Components in One Map”

The enterprise problem and today’s slice

Enterprise problem: An operator who cannot say which component owns each telemetry transition will route data through overlapping tools, hide failure boundaries, and lengthen incidents for customers.

Whole-course context: The incoming evidence is a four-signal design with collection, storage, query, rules, and notification responsibilities already introduced; this day turns those parts into one reviewable component contract.

Today’s slice: We map application instrumentation, exporters, collectors, specialized backends, Grafana, rulers, Alertmanager, and object storage without treating any product name as the customer outcome.

End-of-day evidence: A component matrix and two traced journeys show the producer, consumer, owner, protocol, and terminal evidence at every boundary.

Still unsolved: Deployment scale, signal economics, schema governance, and privacy policy remain deliberately outside today’s component map.

The smallest complete model

A component map is useful only when it explains how raw system behavior becomes evidence an operator can act on. Without that chain, a box inventory hides duplicate ownership and gaps between tools.

Thesis: The smallest complete component map is producer → evidence path → owned action; product names matter only after every transition has one accountable owner. Why this matters: during an incident, the team must identify the failing handoff without guessing which adjacent tool was supposed to do the work.

The boundary here includes evidence creation, collection, storage, query, recognition, notification, and action. It excludes deployment sizing and signal economics, which require the ownership map but do not change its smallest shape.

Expand the model one boundary at a time

Expand the middle box in dependency order: first create domain evidence, then protect and route it, then preserve its signal-specific shape, and only then correlate it for a decision. Each added noun refines the same producer-to-action path.

When similar tools appear adjacent, teams can accidentally assign the same job twice and lose the actual failure boundary. The decisive question is what each component consumes, how it transforms that input, and what durable interface it exposes.

ComponentPrimary responsibilityConsumesProduces or exposes
Application instrumentationCreate evidence with domain meaningRuntime eventsMetrics, logs, spans, and profiles
ExporterTranslate system-specific stateNative system dataPrometheus exposition or OpenTelemetry data
OpenTelemetry SDKDescribe application operations and propagate contextApplication executionOpenTelemetry Protocol (OTLP) telemetry
OpenTelemetry Collector or Grafana AlloyReceive, protect, transform, batch, and routeOTLP, scrape targets, logs, profilesBackend-specific writes and pipeline health
PrometheusDiscover and scrape targets; query local metrics and evaluate rulesPrometheus exposition endpointsPromQL API, local time series, alerts, remote write
MimirSupply shared, scalable, long-retention metricsRemote write or OpenTelemetry metricsPrometheus-compatible query API
LokiStore and query label-organized log streamsLog streamsLogQL API
TempoStore and reconstruct distributed tracesSpansTrace lookup and TraceQL API
PyroscopeAttribute sampled resource use to codeProfile samplesProfile queries and flame graphs
GrafanaCorrelate and visualize signalsBackend query APIsDashboards, exploration, and alert views
Ruler and AlertmanagerRecognize conditions, then group and route notificationsQueries, rules, and firing alertsRecorded series, alert state, silences, notifications
Object storagePersist economical historical blocks and chunksBackend blocksDurable historical objects under retention policy

Application instrumentation owns business semantics: only the checkout code knows whether a payment was duplicated or a policy denied. A collector can normalize and redact that evidence, but cannot reconstruct missing domain meaning. Backends specialize in storing and querying signal shapes; Grafana correlates their APIs rather than becoming their authoritative store.

The relationship card below makes the operational constraints explicit instead of leaving them implicit in arrows.

BoundaryInputs and transformationOutput or interfaceScaling constraint and main failure modeAlternatives and selection guidance
Producer → collectorRuntime events become OpenTelemetry Protocol (OTLP) records or exporter output with propagated contextAuthenticated push, scrape, or file-tail interfaceApplication overhead and collector queue capacity; missing business attributes cannot be repaired laterUse an OpenTelemetry SDK for application semantics and exporters for system-native state; avoid collector-only enrichment when the application alone knows the meaning
Collector → storeRecords are authenticated, redacted, batched, sampled, normalized, and routedBackend write APIs with tenant identity and delivery countersBurst volume, retry buffers, and backend availability; overflow produces drops or backpressureUse an OpenTelemetry Collector or Alloy when policy must be centralized; avoid adding a gateway when direct delivery already meets isolation and recovery objectives
Store → querySignal-shaped indexes and objects become bounded query resultsPromQL, LogQL, TraceQL, and profile-query APIsCardinality, retained bytes, fan-out, and query concurrency; overload yields slow or rejected queriesUse specialized stores when signal semantics matter; avoid forcing every signal into one storage model merely to reduce product count
Query → actionCorrelated results become a condition, notification, decision, and bounded changeGrafana links, rule state, Alertmanager notification, and incident action recordHuman attention and rule quality; component noise can page without customer impactUse rules for measurable conditions and Alertmanager for routing; avoid treating Grafana as the authoritative signal store or notification policy owner

Run the model through one incident

The general rule is to follow the evidence transition that failed, not to search every component independently. A simple example is a metric query that succeeds while its exemplar trace lookup fails: the metric store is healthy, so the missing correlation reference or trace boundary is the first suspect.

In a recurring checkout incident, the on-call starts with an elevated error-rate metric, opens an exemplar in Tempo, follows the trace context into Loki logs, and identifies the checkout service owner. The observed evidence should include the metric query, trace ID, related log query, component-map revision, tenant, and investigation run ID. If the trace is absent, the operator checks whether the application emitted context, whether the collector accepted and routed spans, and whether Tempo stored them—in that dependency order. A successful metric query remains the positive control while an invalid trace ID proves the failure path is distinguishable from an authorization or query outage.

This is reusable beyond checkout: preserve one healthy transition, locate the first missing output, and inspect only the producer-consumer contract that should have created it.

Failure modes, trade-offs, and decision rules

The main failure mode is an arrow labelled only “connects to”; it hides protocol, authentication, retry, tenancy, buffering, evidence, and ownership. The central trade-off is map simplicity versus diagnostic precision: too few boundaries conceal responsibility, while too many implementation boxes make the map stale and hard to operate.

represent a boundary when it changes accountable ownership, protocol, durable state, tenant enforcement, or observable failure semantics; otherwise keep it inside the owning component and document it at the lower-level runbook.

Use this boundary protocol for every represented edge:

  1. Name the producer, consumer, protocol, direction, and accountable owner.
  2. State whether the edge is push, pull, or query, and where buffering occurs.
  3. Record tenant identity and authentication independently at collection and query boundaries.
  4. Inject one invalid credential and one unavailable consumer; observe rejection, retry, drop, or backpressure.
  5. Preserve the positive control: another authorized tenant and healthy edge still work.
  6. Falsify the map if any observed hop, durable store, or operator action lacks a represented edge.

Use a product-level map when several teams need a shared incident contract. Avoid using it as a deployment manifest: replica counts and internal workers belong in topology evidence unless they create a distinct failure domain or owner.

Close the loop

A component map earns its maintenance cost only when it changes an operational decision and the result is measured. Apply Observe → Interpret → Decide → Act → Measure to one bounded edge at a time.

Observe a failed checkout trace link while the metric control succeeds. Interpret that the break lies between context creation, span routing, and trace storage. Decide which single owned boundary to probe first. Act by restoring the last passing collector route or instrumentation revision, not by changing every backend. Measure the effect by repeating the same trace lookup and requiring both the valid trace to appear and an invalid trace ID to remain a clean negative result within the agreed recovery window. If either probe fails, the action did not repair the component contract.

Key takeaways

A memorable product list is not an architecture; the useful map follows evidence from behavior to accountable action.

  • Applications and exporters create or translate evidence; collectors protect and route it.
  • Prometheus, Mimir, Loki, Tempo, and Pyroscope retain and query different signal shapes.
  • Grafana correlates signals, rulers detect conditions, and Alertmanager controls notification delivery.
  • Every edge needs an owner, protocol, tenancy rule, and falsifiable failure observation.

Checklist

An incomplete review creates false confidence, so complete these checks before accepting the component map.

  • [ ] Every producer and consumer has one accountable owner.
  • [ ] Every arrow names protocol, direction, tenant identity, and failure behavior.
  • [ ] Application-owned business semantics are not delegated to infrastructure.
  • [ ] The metric-to-trace-to-log journey has positive and negative evidence.
  • [ ] Object storage retention and deletion remain owned by each backend.

Sources

Product responsibilities change, so these current claims were checked against official primary documentation.