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.

Customer use cases

Without customer jobs, a component inventory becomes a shopping list and teams cannot tell whether a missing or duplicated component breaks an investigation. These use cases anchor the map in two observable outcomes.

Use case IDActorCustomer jobSuccess outcomeDenial or recovery evidence
D17-UC-01On-call engineerFollow a checkout symptom from metric to trace and logsOne investigation links the anomaly to a responsible service and immutable traceA broken correlation link names the boundary, rejected query, and unaffected metric query
D17-UC-02Platform operatorProve every telemetry hop has one accountable ownerThe map names the ingress, transform, store, query, rule, and notification ownerAn unknown or duplicate owner fails review and produces a remediation record

Actor-centred user stories

Vague architecture goals cannot be accepted or rejected, so each actor needs an observable story tied to the same use-case contract.

Story IDUse case IDsUser storyObservable acceptance conditions
D17-US-01D17-UC-01As an on-call engineer, I want correlated signal links, so that I can move from customer impact to causal evidence without guessingA recorded investigation starts at a metric, opens one trace and its related logs, and records a negative lookup for an invalid trace ID
D17-US-02D17-UC-02As a platform operator, I want an owned component map, so that gaps and overlapping responsibilities are reviewableEvery arrow names a protocol and owner; one intentionally removed owner makes the validation fail

End-to-end product flows

A component map is only credible when customer actions traverse it, otherwise arrows may describe no usable product flow. The happy and failure paths below end in reviewable evidence.

Flow IDUse case IDsPathTriggerNumbered stepsTerminal evidence
D17-FLOW-01D17-UC-01HappyEngineer selects a checkout error-rate exemplar in Grafana1. Grafana queries Prometheus or Mimir.<br>2. The exemplar supplies a trace reference.<br>3. Grafana queries Tempo.<br>4. The trace context selects related Loki logs.<br>5. The engineer records the service owner and action.Actor, tenant, query ranges, expected links, observed links, environment, timestamp, trace ID, and investigation run ID
D17-FLOW-02D17-UC-02FailureOperator validates a proposed component map1. Validator walks every producer-consumer edge.<br>2. It checks protocol and accountable owner.<br>3. A missing owner rejects publication.<br>4. A known-good edge remains queryable as a positive control.Failed edge, expected owner, observed absence, unchanged positive control, map revision, environment, timestamp, and validation run ID

System design derived from the flows

If services are named independently of the flows, the diagram hides unnecessary hops and ownerless state. This design includes only components required by the two customer journeys.

Use case IDEntry pointResponsible servicesAuthoritative storeFailure evidence
D17-UC-01Grafana Explore or dashboard exemplarGrafana query layer, Prometheus or Mimir, Tempo, Loki, identity proxySpecialized telemetry stores owned by their backend teamsQuery error, missing correlation reference, or tenant-scope denial tied to the investigation run
D17-UC-02Component-map validation actionArchitecture registry, policy validator, collector owners, backend ownersVersioned component registry owned by the platform teamUnowned edge, protocol mismatch, duplicate responsibility, and unaffected-edge control

Data model and ownership

Ownerless metadata makes a correct diagram decay after the first reorganization, so the map itself needs durable identity, revision, and evidence records. No generated customer application is being built here.

Generated-application database: Not created in this slice — durable control-plane component contracts and investigation evidence are sufficient.

Record or entityStore and ownerPrimary keyForeign key or opaque referenceTenant keyMaterial constraintLifecycle and deletionUse case IDs
ComponentContractArchitecture registry, platform architecture ownercomponent_idNone — root record for a platform componentorganization_idComponent name and active revision are unique per organization; exactly one accountable ownerVersion on change, retire after migration, retain revisions for audit, delete under metadata policyD17-UC-01, D17-UC-02
ComponentEdgeArchitecture registry, platform architecture owneredge_idcomponent_id_from and component_id_to local FKsorganization_idProducer, consumer, protocol, and evidence type are mandatoryReplace by revision, tombstone on component retirement, retain with parent audit historyD17-UC-01, D17-UC-02
InvestigationRunEvidence store, incident tooling ownerrun_idOpaque trace, query, alert, and map-revision referencesorganization_idActor, scope, expected and observed results, environment, and timestamp are immutableRetain to incident policy, export with incident, expire payload before audit metadataD17-UC-01, D17-UC-02

Responsibility map

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 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.

Boundary protocol

Architecture reviews fail when a line merely says “connects to,” because authentication, retry behavior, tenancy, and loss semantics stay invisible. Use this protocol for every edge in the map.

  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.

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.