observability: flow-synthetic matrix dashboard + alerts + Prom rules + catalog#53
Merged
Merged
Conversation
…+ 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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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 + theInstantFlowTestNR event into the green/red matrix the directive asked for, with full rule-25 coverage (alert + dashboard tile + catalog row, all in one PR).Dashboard —
newrelic/dashboards/instanode-reliability.json(5 new tiles)SELECT latest(result) FROM InstantFlowTest WHERE cohort='synthetic' FACET flow, actorrendered as a table, red onfail. One cell per flow×actor — the single "is everything green right now" view.Alerts —
newrelic/alerts/flow-test-p0-fail.jsoninstant_flow_test_total{result="fail"}ABOVE 0 over 10m, FACET flowflow-test-latency-regression.jsonpercentile(latencyMs,95)> 5s over 30mflow-test-silent-death.jsonflow-synthetic-leak.jsonreaped{outcome="leaked"}ABOVE 0 (rule-24 cleanup-ledger breach)The P0 alert FACETs by flow; the description instructs the responder to read the failing event's
commitIdand compare to/healthz .commit_idto name the bad deploy (rule 14/15).Prom backstop —
k8s/prometheus-rules.yamlNew group
instant-worker-flow-syntheticmirroring all four NR alerts (FlowTestP0Fail/FlowTestLatencyRegression/FlowTestSilentDeath/FlowSyntheticLeak). yamllint + (CRD-aware) kubeconform clean.Catalog —
observability/METRICS-CATALOG.mdRows 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
*Vecand inert until an operator setsFLOW_SYNTHETIC_ENABLED=trueon the worker — the alerts never fire until the flag is lit and the series exist. After both PRs merge + deploy, the operator must:kubectl set env -n instant-infra deploy/instant-worker FLOW_SYNTHETIC_ENABLED=true(the worker PR's operator steps).kubectl apply -f k8s/prometheus-rules.yaml(manual by design).instanode-reliability.json) + create the alert policies fromnewrelic/alerts/flow-*.json, and wire them to the existing PagerDuty/Slack notification channel (same routing asauth-probe-fail.json).InstantFlowTestevent push needs NR configured on the worker (else the runner degrades to a noop emitter — metrics still flow).🤖 Generated with Claude Code