16

The Full Observability Platform Architecture

Source: Observability Platform source — section 16, “The Full Architecture”

The enterprise problem and today’s slice

Enterprise problem: Independently capable collectors and backends can still fail as a platform when ownership, tenant boundaries, capacity signals, alert routing, recovery, and retirement are unspecified.

Whole-course context: The incoming evidence proves each signal path and one cross-signal investigation; today assembles those bounded components into an operable service with explicit failure domains rather than a decorative stack diagram.

Today’s slice: Define the complete running-system-to-action architecture, platform SLOs, multi-tenant controls, alert lifecycle, disaster recovery, cost governance, and self-observation.

End-of-day evidence: Produce a reviewable architecture decision record and game-day report proving ingestion, query, correlation, notification, isolation, and recovery objectives for a test tenant.

Still unsolved: Organization-specific capacity numbers, vendor contracts, production credentials, and irreversible data-retirement approvals remain deliberate owner decisions outside this reference design.

Customer use cases

A platform diagram is not a customer outcome unless teams can onboard safely and responders can diagnose failures during degraded operation. These use cases cover both the tenant journey and the platform’s recovery duty.

Use case IDActorCustomer jobSuccess outcomeDenial or recovery evidence
D16-UC-01Service team and incident responderOnboard checkout telemetry, detect a sustained failure, correlate evidence, and reach an owned actionFour signals meet freshness/retention objectives and one alert-to-investigation run identifies a tested remediationUnauthorized tenant access and invalid schema are denied while authorized controls remain usable
D16-UC-02Observability platform operatorOperate, scale, recover, export, and retire the platform without losing ownership or evidenceSLOs, limits, backups, restore drills, cost attribution, and deletion reports meet reviewed objectivesInjected backend/collector failure is contained and recovery proves declared RPO/RTO and unaffected tenants

Actor-centred user stories

“Highly available observability” hides different write, read, and notification objectives. These stories require customer-visible signal quality and operator-visible recovery proof.

Story IDUse case IDsUser storyObservable acceptance conditions
D16-US-01D16-UC-01As a service team responder, I want one governed onboarding and incident path, so that I can trust freshness, correlation, ownership, and notification evidenceOnboarding validates schema/limits; game day records metric, log, trace, profile, alert, correlation, denial, and remediation evidence
D16-US-02D16-UC-02As a platform operator, I want independent capacity and recovery controls for every signal path, so that one query or tenant cannot disable collection for everyoneLoad and failure tests meet write/read SLOs, isolate a noisy tenant, restore metadata/data within RPO/RTO, and prove deletion/export lifecycle

End-to-end product flows

The platform is valuable only when a production symptom reaches an accountable action and the evidence survives partial failure. The flow therefore includes onboarding, steady operation, incident response, recovery, and retirement.

Flow IDUse case IDsPathTriggerNumbered stepsTerminal evidence
D16-FLOW-01D16-UC-01, D16-UC-02HappyService owner submits checkout onboarding revision then triggers the approved game day1. Schema, tenant, limits, retention, ownership, and cost policy are reviewed.<br>2. SDKs/exporters and collectors emit four signals.<br>3. Prometheus remote-writes metrics; collectors route logs, traces, and profiles.<br>4. Backends retain/query within SLOs.<br>5. Rules create alerts and Alertmanager routes notification.<br>6. Grafana correlation reaches trace, logs, profile, deployment, runbook, and action.<br>7. Evidence and cost are attributed to the tenant.Revision, actor, tenant, four-signal freshness, alert states, receiver payload, correlation chain, action, environment, timestamps, and game-day ID
D16-FLOW-02D16-UC-01, D16-UC-02RecoveryOperator injects a collector/back-end failure and later retires the test tenant1. Self-observation detects the failed boundary.<br>2. Limits protect unaffected tenants and critical ingestion.<br>3. Operator restores or fails over the component.<br>4. Backlog drains and query continuity is checked.<br>5. Tenant export is verified.<br>6. Access is revoked and retained telemetry follows deletion policy.<br>7. Tombstone/deletion report closes the lifecycle.Detection time, affected scope, backlog, RPO/RTO, recovered controls, tenant denial, export digest, deletion report, and run ID

System design derived from the flows

One shared “observability cluster” failure domain makes capacity and recovery promises impossible to reason about. The architecture keeps collection policy, each signal backend, investigation, and notification independently scalable and observable.

Use case IDEntry pointResponsible servicesAuthoritative storeFailure evidence
D16-UC-01Tenant onboarding API/repository, Grafana, and alert receiverSchema/policy pipeline, SDK/exporters, Alloy/OTel, Prometheus, Mimir, Loki, Tempo, Pyroscope, Grafana, rules, Alertmanager, deployment/runbook catalogsVersioned platform policy; specialized telemetry backends; Grafana UI state; alert/evidence storesSchema rejection, freshness breach, query/correlation error, missing alert transition, route failure, or ownership gap
D16-UC-02Platform operations, SLO dashboards, restore/export/delete workflowsCapacity controllers, backend operators, object stores, Kafka-compatible buses, secret/identity systems, backup/restore, cost attribution, lifecycle workersObject storage and metadata stores per backend; policy/audit/evidence stores; external secret managerSaturation, lag, limit rejection, unavailable partition, restore mismatch, RPO/RTO breach, orphaned access, or incomplete deletion

Data model and ownership

The platform cannot prove isolation or retirement if tenant policy, resource grants, telemetry objects, and lifecycle jobs are implicit. This model assigns durable control/evidence state without relocating application business authority.

Generated-application database: Not created in this slice — the observability platform stores telemetry and control-plane evidence only; each observed application keeps its own tenant, user, and domain data.

Record or entityStore and ownerPrimary keyForeign key or opaque referenceTenant keyMaterial constraintLifecycle and deletionUse case IDs
Tenant observability contractPlatform policy store owned by governanceobservability_tenant_id/contract_versionOpaque organization, service-catalog, and billing referencesorganization_idApproved signals, schema, limits, retention, residency, owners, RPO/RTO, and cost centreDraft, approve, revise, suspend, export, retire, retain audit historyD16-UC-01, D16-UC-02
Backend data objectOwning Mimir/Loki/Tempo/Pyroscope storebackend/tenant_id/object_idOpaque source service and policy-version referencesobservability_tenant_idBackend-specific integrity, encryption, tenant isolation, and retentionIngest, compact, retain, export where supported, tombstone, deleteD16-UC-01, D16-UC-02
Access grantIdentity/policy store owned by platform securitygrant_idOpaque subject, role, tenant, and backend referencesorganization_idLeast privilege, expiry, audit, and independent revocation per boundaryProvision, review, rotate, revoke, retain audit event, delete after policyD16-UC-01, D16-UC-02
Lifecycle jobPlatform workflow/evidence store owned by operationslifecycle_job_idForeign reference to tenant contract and opaque backend job IDsorganization_idIdempotent state machine; export digest and per-backend deletion proof requiredRequest, approve, execute, retry, verify, close, retain reportD16-UC-02
Game-day evidenceImmutable evidence store owned by reliability engineeringgame_day_idOpaque references to contract, deployment, queries, alerts, and lifecycle jobsorganization_idPositive/negative paths, actor, resource, scope, expected/observed, environment, time, IDsCreate per exercise, retain for assurance objective, then expireD16-UC-01, D16-UC-02

Signal ownership and service objectives

A single uptime percentage hides whether data was collected, queryable, correlated, or notified in time. Define objectives per customer-visible stage and tenant tier.

StageOwnerExample indicators
CollectionService team plus collector platformscrape/receive success, refused/dropped items, queue age, schema rejection
Metrics delivery/storagePrometheus and Mimir operatorsremote-write lag, rejected samples, ingest partition health, block upload, query freshness
LogsLoki operatorsdistributor rejection, active streams, chunk flush, query latency, retention
TracesTempo operatorsaccepted/refused spans, consumer lag, block builds, trace completeness, TraceQL latency
ProfilesPyroscope operatorsprofile freshness, ingestion errors, overhead, query latency, symbol coverage
InvestigationGrafana administratorsdata-source health, panel errors, permission denials, correlation conformance
NotificationRule and Alertmanager ownersevaluation delay, pending/firing/resolved transitions, route delivery, grouping and inhibition

Define error budgets separately for write acceptance, end-to-end freshness, query availability/latency, and critical notification delivery. A query SLO must not permit silent write loss.

Alert lifecycle and self-observation

An observability platform that pages only on application symptoms can fail silently. Monitor its collectors, queues, durable buses, object stores, query schedulers, rulers, Alertmanagers, Grafana data sources, and lifecycle workers from an independent enough path to detect common-mode failure.

Route alerts using stable ownership, service, environment, severity, and component labels. Rule evaluators determine alert state; Alertmanager manages grouping, deduplication, routing, inhibition, silences, and receiver delivery. Test firing and resolved notifications, route fallbacks, missing-owner handling, and receiver failure.

Capacity, tenancy, and cost controls

Unlimited telemetry lets one tenant degrade everyone, so limits are part of product correctness. Budget ingest rate, active series/streams, label cardinality, trace/profile volume, query concurrency, scanned bytes, retention, and object-store operations by tenant and signal.

Use rate limits, query fairness, bounded lookback, shuffle sharding or equivalent isolation where supported, and cost attribution. Do not solve budget pressure by silently dropping critical signals; publish priority and sampling/degradation policy, then alert when invoked.

Recovery, export, and retirement game day

Backups are claims until restored, and deletion is a claim until every owning store reports completion. Run a game day that interrupts one collector and one read component, validates backlog/catch-up and unaffected tenants, restores metadata/configuration, and checks data/query continuity against declared recovery point objective (RPO) and recovery time objective (RTO).

For retirement, revoke access first, stop new ingestion, export approved telemetry/configuration, apply retention/legal holds, schedule per-backend deletion, verify tombstones/object removal, and retain a non-sensitive deletion report. Never recursively delete object-store prefixes without resolved tenant scope and provider safeguards.

Architecture review and practical proof

A design review should reject component catalogs with no measured paths. The final exercise must record:

  1. Approved tenant contract and canonical schema revision.
  2. One positive four-signal onboarding/control query.
  3. One denied cross-tenant query and one rejected schema fixture.
  4. One metric alert through pending, firing, receiver delivery, resolved, and resolved delivery.
  5. One metric-to-trace-to-log-to-profile-to-deployment chain.
  6. One collector/backend failure with detection, containment, drain, and recovery measurements.
  7. One export/deletion dry run with resolved object counts and immutable report ID.

Key takeaways

The complete platform is a set of explicit ownership and failure boundaries, not a single product. Preserve these conclusions:

  • Collectors apply local transport and policy; specialized backends own each telemetry signal.
  • Grafana owns investigation state, while rules and Alertmanager own distinct evaluation and notification duties.
  • Write, freshness, query, correlation, and notification objectives require separate evidence.
  • Tenant limits, independent authorization, self-observation, and cost attribution are product requirements.
  • Restore, export, revoke, and delete complete the lifecycle and must be exercised.

Checklist

The architecture is not approved until its negative paths are demonstrated. Attach immutable evidence for each item:

  • [ ] Published tenant contracts, owners, schema, limits, retention, RPO/RTO, and cost centre.
  • [ ] Proved all four ingestion/query paths and one cross-signal investigation.
  • [ ] Proved schema rejection and cross-tenant denial with unaffected controls.
  • [ ] Proved alert pending, firing, routed, resolved, and resolved delivery.
  • [ ] Measured a failure’s detection, containment, backlog, catch-up, and recovery.
  • [ ] Restored configuration/metadata and checked data continuity.
  • [ ] Exercised access revocation, export, retention, and deletion reporting.
  • [ ] Verified the observability platform’s own critical signals use a survivable detection path.

Sources

Component architecture and feature status change across releases, so production implementation must follow current primary documentation. These sources support the integrated design: