# Observability Runbook ## Scope Jarvis observability covers: - persistent telemetry snapshots in `OBSERVABILITY_DB_PATH` - runtime event stream in `OBSERVABILITY_EVENT_LOG_PATH` - restart and uptime state in `OBSERVABILITY_STATE_PATH` - Prometheus/OpenMetrics export at `GET /metrics` (operator server) - SSE event feed at `GET /events` (operator server) ## Key Signals - Latency percentiles: STT / LLM-first-sentence / TTS-first-audio (`p50`, `p95`, `p99`) - Tool rolling rates: per-tool `success_rate` / `error_rate` windows - Intent success signals: `answer_quality_success_rate`, `completion_success_rate`, `correction_frequency` - Unified scorecard: `jarvis_scorecard` and `system_status.scorecard` (latency, reliability, initiative, trust) - Failure burst alerts: generated when recent tool errors exceed `OBSERVABILITY_FAILURE_BURST_THRESHOLD` - Budget alerts: - `latency_budget_exceeded` when LLM first-sentence p95 breaches `OBSERVABILITY_LATENCY_BUDGET_P95_MS` - `tokens_budget_exceeded` when estimated hourly tokens breach `OBSERVABILITY_TOKENS_BUDGET_PER_HOUR` - `cost_budget_exceeded` when estimated hourly spend breaches `OBSERVABILITY_COST_BUDGET_USD_PER_HOUR` - Router canary disagreement analytics: `observability.router_canary_analytics` for canary coverage and shadow disagreement rate - Process lifecycle: `runtime_start`, `runtime_stop`, `restart_count`, `uptime_sec` ## Triage Flow 1. Check current health snapshot: - query `system_status` - inspect `observability.alerts` 2. Inspect metrics endpoint: - `curl http://127.0.0.1:8765/metrics` - verify spikes in p95/p99 latency lines 3. Inspect event stream and timeline: - `curl http://127.0.0.1:8765/events` - filter for `watchdog_reset`, `stt_fallback`, `tts_fallback_text_only`, `failure_burst`, budget alert types 4. Correlate with tool history: - query `tool_summary` and `tool_summary_text` 5. Inspect canary disagreement panel: - open Operator Console and inspect `Router Canary` - review `recent_disagreements` to identify mismatched primary vs shadow route decisions ## Tuning - Increase snapshot density: - lower `OBSERVABILITY_SNAPSHOT_INTERVAL_SEC` - Reduce noisy alerts: - raise `OBSERVABILITY_FAILURE_BURST_THRESHOLD` - increase `OBSERVABILITY_ALERT_COOLDOWN_SEC` - Tune budget sensitivity: - adjust `OBSERVABILITY_LATENCY_BUDGET_P95_MS` - adjust `OBSERVABILITY_TOKENS_BUDGET_PER_HOUR` and `OBSERVABILITY_COST_BUDGET_USD_PER_HOUR` - adjust `OBSERVABILITY_BUDGET_WINDOW_SEC` for shorter/longer smoothing windows - Tighten degraded-mode detection: - combine lower burst threshold with watchdog timeouts (`WATCHDOG_*`) ## SLO Suggestions - STT p95 < 1200ms - LLM first sentence p95 < 1800ms - TTS first audio p95 < 700ms - Tool error rate < 5% for critical integrations ## Backup / Retention - Observability DB and event log are local files; include them in host backup policy. - If disk pressure increases, rotate/trim event log and archive DB snapshots out of band. ## Related Runbooks - `campaign-execution-runbook.md` - `integrations-degradation-runbook.md` - `autonomy-checkpoint-runbook.md`