Repository navigation
feat(monitoring): alert and panel for decdn_node_boot_ready - #203
Merged
Merged
Conversation
decdn/decdn#2821 serves /metrics during boot, so a node stuck in boot scrapes fine and DecdnNodeDown no longer pages for it. Add DecdnNodeBootStuck (max_over_time(decdn_node_boot_ready[15m]) == 0 for 10m, the appendix-observability recommendation) with promtool tests, and plot min boot ready on the chain dashboard's chain RPC panel. Closes #202 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ests The crash-loop series used bare gaps, which the 5m lookback bridges, so the bare gauge passed it too: model each failed scrape as a staleness marker. Add a node that comes up, to pin the resolve. Name the for, not the boot deadline, as the 10m, and reword the two older "before the first scrape" rationales that #2821 no longer guarantees. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
There was a problem hiding this comment.
🔵 Needs a closer look
The unreleased decdn_node_boot_ready gauge still needs live metric-name validation, and rollout requires coordination with the decdn bump, readiness companion #204, chart release, and Grafana publishing.
No open issues 🎉
What changed in this PR
Adds boot-readiness monitoring for deCDN nodes that answer metrics requests before startup finishes, covering the monitoring gap described in #202.
Changes:
- Adds
DecdnNodeBootStuckwith tests for first boot, restart timing, crash-loop gaps, and recovery. - Adds “min boot ready” to the chain dashboard and corrects comments about metrics availability during startup.
- Updates monitoring documentation and skill guidance. Rollout is coordinated with the upstream metric release; readiness-probe changes remain in #204.
| File | Description |
|---|---|
monitoring/README.md |
Lists the new alert’s unit-test coverage. |
monitoring/decdn-node/prometheus-alerts.yml |
Adds the boot-stuck alert and corrects startup-related comments. |
monitoring/decdn-node/prometheus-alerts_test.yml |
Tests alert timing, crash-loop persistence, and recovery. |
monitoring/decdn-node/dashboard-chain.json |
Displays minimum boot readiness across selected nodes. |
.claude/skills/grafana-dashboards/SKILL.md |
Updates rule counts and the tested-alert list. |
Review effort: Balanced
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.
Closes #202.
decdn/decdn#2821 binds the node's
/metricslistener before the RPC preflight and boot chain reads and addsdecdn_node_boot_ready(0 until thenode runtime readybanner, then 1). A node stuck in boot then scrapes fine (up == 1), soDecdnNodeDownstops paging for it.DecdnNodeBootStuck(decdn-liveness, beforeDecdnRpcUnhealthy):max_over_time(decdn_node_boot_ready[15m]) == 0for 10m,component: node,severity: warning, runbook#rpc-unreachable(that section covers boot). This is the recommended alert fromadr/appendix-observability.md§ Node / Process Metrics. It fires about 10m into a first boot and up to 25m after a ready node restarts.1holds the alert off while it is in the window. A restart of a ready node fires 25m after the last1. A crash loop (each failed scrape a staleness marker) keeps firing through its gaps, and a node that comes up resolves at its first1. Mutation-checked: the bare gauge,min_over_timeandkeep_firing_foreach fail the block.dashboard-chain.json: the "Watcher persistence and chain RPC" panel gets target E,min(decdn_node_boot_ready{…}), "min boot ready". Its description no longer says the listener binds after the boot reads.monitoring/README.mdand the grafana-dashboards skill list the new tested rule.DecdnRpcUnhealthy,DecdnNoActiveStreamsandDecdnDhtRoutingTableEmptyare unchanged (see #202).The readiness checks in the role,
decdn-compose healthand the chart probes also assume/metricsanswers only after boot. Fixing them is #204, which ships in the same rollout.Draft until decdn ships #2821. It merged after v0.3.1, so no release exports the gauge yet. This PR merges in the same rollout as that release, right after its bump PR. Then: release the chart, and republish the
decdn-chaindashboard and the rule to Grafana.Verified:
make lint-helm(promtool check + unit tests) andmake lint. To do before ready: run the name check against a node on the release.🤖 Generated with Claude Code