Skip to content

observability: flow-synthetic matrix dashboard + alerts + Prom rules + catalog#53

Merged
mastermanas805 merged 1 commit into
masterfrom
observability/flow-synthetic-matrix
Jun 4, 2026
Merged

observability: flow-synthetic matrix dashboard + alerts + Prom rules + catalog#53
mastermanas805 merged 1 commit into
masterfrom
observability/flow-synthetic-matrix

Conversation

@mastermanas805

Copy link
Copy Markdown
Member

What

The infra half of the continuous-monitoring synthetic flow runner — paired with worker PR feat/flow-synthetic-runner (#91). Turns the runner's three metrics + the InstantFlowTest NR event into the green/red matrix the directive asked for, with full rule-25 coverage (alert + dashboard tile + catalog row, all in one PR).

The two PRs ship together; rule 25's "same PR" is satisfied cross-repo.

Dashboard — newrelic/dashboards/instanode-reliability.json (5 new tiles)

  • Flow matrix gridSELECT latest(result) FROM InstantFlowTest WHERE cohort='synthetic' FACET flow, actor rendered as a table, red on fail. One cell per flow×actor — the single "is everything green right now" view.
  • Fails by flow (1h, must be 0) and leaked reaps (1h, must be 0).
  • P95 latency per flow (6h) — latency-regression watch.
  • Distinct flows reporting (15m) — silent-death watch (a flow that stops emitting is itself a failure).

Alerts — newrelic/alerts/

file condition priority
flow-test-p0-fail.json instant_flow_test_total{result="fail"} ABOVE 0 over 10m, FACET flow P0
flow-test-latency-regression.json percentile(latencyMs,95) > 5s over 30m P2
flow-test-silent-death.json event count BELOW 1 over 15m (loss-of-signal) P1
flow-synthetic-leak.json reaped{outcome="leaked"} ABOVE 0 (rule-24 cleanup-ledger breach) P2

The P0 alert FACETs by flow; the description instructs the responder to read the failing event's commitId and compare to /healthz .commit_id to name the bad deploy (rule 14/15).

Prom backstop — k8s/prometheus-rules.yaml

New group instant-worker-flow-synthetic mirroring all four NR alerts (FlowTestP0Fail / FlowTestLatencyRegression / FlowTestSilentDeath / FlowSyntheticLeak). yamllint + (CRD-aware) kubeconform clean.

Catalog — observability/METRICS-CATALOG.md

Rows for instant_flow_test_total, instant_flow_test_latency_seconds, instant_flow_synthetic_reaped_total (lazy *Vec, INERT until the flag is on).

Inert until lit + operator steps (infra has NO auto-apply — CLAUDE.md rule 15)

All metrics are lazy *Vec and inert until an operator sets FLOW_SYNTHETIC_ENABLED=true on the worker — the alerts never fire until the flag is lit and the series exist. After both PRs merge + deploy, the operator must:

  1. Light the worker flag: kubectl set env -n instant-infra deploy/instant-worker FLOW_SYNTHETIC_ENABLED=true (the worker PR's operator steps).
  2. Apply the Prom rules: kubectl apply -f k8s/prometheus-rules.yaml (manual by design).
  3. Import the NR dashboard (instanode-reliability.json) + create the alert policies from newrelic/alerts/flow-*.json, and wire them to the existing PagerDuty/Slack notification channel (same routing as auth-probe-fail.json).
  4. NR license key for the metrics path is already present; the InstantFlowTest event push needs NR configured on the worker (else the runner degrades to a noop emitter — metrics still flow).

🤖 Generated with Claude Code

…+ catalog

The infra half of the continuous-monitoring synthetic flow runner (paired with
worker feat/flow-synthetic-runner). Wires the runner's three metrics into the
green/red matrix the directive asked for, with full rule-25 coverage (alert +
tile + catalog in one PR).

Dashboard (newrelic/dashboards/instanode-reliability.json) — 5 new tiles:
  - Flow matrix grid: latest(result) FACET flow,actor (red=fail) — the single
    "is everything green right now" view.
  - Fails by flow (1h, must be 0); leaked reaps (1h, must be 0).
  - P95 latency per flow (6h) — regression watch.
  - Distinct flows reporting (15m) — silent-death watch.

Alerts (newrelic/alerts/flow-test-*.json + flow-synthetic-leak.json):
  - flow-test-p0-fail            P0  any result="fail" over 10m, FACET flow
  - flow-test-latency-regression P2  P95 latencyMs > 5s over 30m
  - flow-test-silent-death       P1  runner stopped reporting (loss-of-signal)
  - flow-synthetic-leak          P2  reaped{outcome="leaked"} > 0 (rule-24 breach)

Prom backstop (k8s/prometheus-rules.yaml): new group
instant-worker-flow-synthetic mirroring all four (FlowTestP0Fail /
FlowTestLatencyRegression / FlowTestSilentDeath / FlowSyntheticLeak).

METRICS-CATALOG.md: rows for instant_flow_test_total /
instant_flow_test_latency_seconds / instant_flow_synthetic_reaped_total.

All metrics are lazy *Vec and INERT until the operator sets
FLOW_SYNTHETIC_ENABLED=true on the worker — the alerts never fire until the
flag is lit and the series exist. infra has NO auto-apply (CLAUDE.md rule 15):
the operator must apply prometheus-rules.yaml and import the NR dashboard +
alert policies + wire them to the existing PagerDuty/Slack channel.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@mastermanas805 mastermanas805 enabled auto-merge (squash) June 4, 2026 21:13
@mastermanas805 mastermanas805 merged commit c2799ba into master Jun 4, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant