Findings Ledger Observability Profile (Sprint 120)

Audience: Findings Ledger Guild · Observability Guild · DevOps · AirGap Controller Guild
Scope: Metrics, logs, traces, dashboards, and alert contracts required by LEDGER-29-007/008/009. Complements the schema spec and workflow docs.

1. Telemetry stack & conventions

2. Metrics

MetricTypeLabelsDescription / target
ledger_write_duration_secondsHistogramtenant, event_type, sourceEnd-to-end append latency (API ingress → persisted). P95 ≤ 120 ms.
ledger_events_totalCountertenant, event_type, source (policy, workflow, orchestrator)Incremented per committed event. Mirrors Merkle leaf count.
ledger_ingest_backlog_eventsGaugetenantNumber of events buffered in the writer/anchor queues. Alert when >5 000 for 5 min.
ledger_quota_remainingGaugetenantRemaining ingest capacity before backpressure applies (defaults to 5 000 events).
ledger_backpressure_applied_totalCountertenant, reason, limitIncremented whenever backlog crosses quota threshold.
ledger_quota_rejections_totalCountertenant, reasonIncremented when requests are actively rejected due to quotas.
ledger_projection_lag_secondsGaugetenantWall-clock difference between latest ledger event and projection tail. Target <30 s.
ledger_projection_rebuild_secondsHistogramtenantDuration of replay/rebuild operations triggered by LEDGER-29-008 harness.
ledger_projection_apply_secondsHistogramtenant, event_type, policy_version, evaluation_statusTime to apply a single ledger event to projection. Target P95 <1 s.
ledger_projection_events_totalCountertenant, event_type, policy_version, evaluation_statusCount of events applied to projections.
ledger_merkle_anchor_duration_secondsHistogramtenantTime to batch + anchor events. Target <60 s per 10k events.
ledger_merkle_anchor_failures_totalCountertenant, reason (db, signing, network)Alerts at >0 within 15 min.
ledger_attachments_encryption_failures_totalCountertenant, stage (encrypt, sign, upload)Ensures secure attachment pipeline stays healthy.
ledger_db_connections_activeGaugerole (writer, projector)Helps tune pool size.
ledger_app_version_infoGaugeversion, git_shaStatic metric for fleet observability.
ledger_scoring_latency_secondsHistogramtenant, policy_version, resultLatency of risk scoring operations per finding. P95 target <500 ms.
ledger_scoring_operations_totalCountertenant, policy_version, resultTotal number of scoring operations by result (success, partial_success, error, etc.).
ledger_scoring_provider_gaps_totalCountertenant, provider, reasonCount of findings where scoring provider was unavailable or returned no data.
ledger_severity_distribution_criticalGaugetenant, policy_versionCurrent count of critical severity findings by tenant and policy.
ledger_severity_distribution_highGaugetenant, policy_versionCurrent count of high severity findings by tenant and policy.
ledger_severity_distribution_mediumGaugetenant, policy_versionCurrent count of medium severity findings by tenant and policy.
ledger_severity_distribution_lowGaugetenant, policy_versionCurrent count of low severity findings by tenant and policy.
ledger_severity_distribution_unknownGaugetenant, policy_versionCurrent count of unknown/unscored findings by tenant and policy.
ledger_score_freshness_secondsGaugetenantTime since last scoring operation completed by tenant. Alert when >3600 s.
ledger_scored_findings_exports_totalCountertenant, record_countCount of scored findings export operations.
ledger_scored_findings_export_duration_secondsHistogramtenant, record_countDuration of scored findings export operations.
ledger_airgap_staleness_secondsHistogramdomainCurrent staleness of air-gap imported data by domain.
ledger_airgap_staleness_gauge_secondsGaugedomainCurrent staleness of air-gap data by domain (observable gauge).
ledger_staleness_validation_failures_totalCounterdomainCount of staleness validation failures blocking exports.

Derived dashboards

3. Logs & traces

4. Alerts

AlertConditionResponse
LedgerWriteSLAledger_write_latency_seconds P95 > 1 s for 3 intervalsCheck DB contention, review queue backlog, scale writer.
LedgerBacklogGrowingledger_ingest_backlog_events > 5 000 for 5 minInspect upstream policy runs, ensure projector keeping up.
LedgerBackpressureledger_backpressure_applied_total increases while ledger_quota_remaining < 0Throttle callers, raise quota or scale anchor worker.
ProjectionLagledger_projection_lag_seconds > 30 sTrigger rebuild, verify change streams.
AnchorFailureledger_merkle_anchor_failures_total increase > 0Collect logs, rerun anchor, verify signing service.
AttachmentSecurityErrorledger_attachments_encryption_failures_total increase > 0Audit attachments pipeline; check key material and storage endpoints.
ScoringFreshnessStaleledger_score_freshness_seconds > 3600 s for any tenantCheck scoring pipeline, verify provider connectivity, re-trigger scoring job.
ScoringProviderGapsledger_scoring_provider_gaps_total increase > 10 in 5 minInvestigate provider failures; check rate limits or connectivity.
AirgapDataStaleledger_airgap_staleness_gauge_seconds > threshold for 15 minRe-import air-gap bundle; verify export pipeline in source enclave.

Alerts integrate with Notifier channel ledger.alerts. For air-gapped deployments emit to local syslog + CLI incident scripts.

5. Testing & determinism harness

6. Offline & air-gap guidance

7. Runbook pointers


Draft compiled 2025-11-13 for LEDGER-29-007/008 planning. Update when metrics or alerts change.