feat(observability): BackendT2Degraded alert for silent tier-2 offload degradation#125
feat(observability): BackendT2Degraded alert for silent tier-2 offload degradation#125EdHasNoLife wants to merge 1 commit into
Conversation
Codex reviewFiles reviewed
FindingsBlockingNone. Should-fixdocs/observability/alerts.md:779 — The runbook says the Nitdocs/observability/alerts.md:732 — The section opens with “A managed CacheBackend’s tier-2...” even though the alert is documented as broader and applicable to Per-category coverage
Verdictchanges-requested |
…d degradation Per-CacheBackend Prometheus alert that fires when a backend is actively serving tier-2 (external offload) queries yet recalling zero reloads — the silent degradation the 32B/TP=2 dig surfaced (PYTHONHASHSEED, server OOM, version skew). Per-CacheBackend companion to the per-pod LMCacheT2NoHits (no scrape-scoping caveat) and the Prometheus view of the advisory T2Degraded CR condition. - BackendT2Degraded in both alerting-rules.yaml (flat) and the PrometheusRule CR; warning, for: 5m. Activity-gated: rate(inferencecache_backend_t2_query_tokens_total[10m]) > 1000 tokens/sec AND max by (namespace, backend) (inferencecache_backend_t2_hit_rate) == 0 - promtool tests: fires (+ pending-before-dwell), not-on-serving, not-on-idle, below-floor, per-install isolation - runbook section in docs/observability/alerts.md; enablement docs note the controller scrape both controller-side alerts need - correct the now-stale LMCacheT2NoHits note (the engine-metrics scraper reads vLLM's external_prefix_cache_* counters now) Re-lands the alert onto main; the original PR merged into the stacked base branch rather than main, so it never reached main.
71ecf68 to
5bff981
Compare
Codex reviewFiles reviewed
FindingsBlockingNone. Should-fixNone. NitNone. Per-category coverage
Verdictapprove |
Per-CacheBackend Prometheus alert for silently-degraded tier-2 (external offload). Fires when a backend is actively serving tier-2 queries (
rate(inferencecache_backend_t2_query_tokens_total[10m]) > 1000tokens/sec) yet recalling zero reloads (inferencecache_backend_t2_hit_rate == 0). The query-rate clause is the activity gate — an idle/cold backend has no query growth (rate ≈ 0), so it doesn't page. Per-backend companion to the per-podLMCacheT2NoHits; the Prometheus view of the advisoryT2Degradedcondition (broader — also covers External backends, whose condition the controller doesn't manage).BackendT2Degradedin both the flatalerting-rules.yamland thePrometheusRuleCR (drift-gated) — warning,for: 5mdocs/observability/alerts.mdLMCacheT2NoHitsnote (the engine-metrics scraper reads vLLM'sexternal_prefix_cache_*now)make verify-prometheusgreen (drift-synced, kustomize clean). Consumesinferencecache_backend_t2_hit_rate+inferencecache_backend_t2_query_tokens_total, both already onmain.Note: re-lands the alert onto
main— #120 merged into the stacked base branch (cac-192-t2-alerting) rather than main, so the alert never reached main. Content matches #120 plus the alert-scope reword + lifetime-cumulative caveat.