Skip to content

fix(monitoring): follow decdn v0.1.0 buyer metrics, quiet the registry-resync alert (#125) - #162

Merged
thiras merged 2 commits into
mainfrom
fix/monitoring-v0.1
Oct 14, 2026
Merged

thiras merged 2 commits into
mainfrom
fix/monitoring-v0.1

Conversation

@thiras

@thiras thiras commented Oct 14, 2026

Copy link
Copy Markdown
Contributor

Summary

Checked against decdn v0.1.0 (which carries decdn/decdn#2406) and the live testnet fleet.

#125

  • Chain dashboard: the panel charted decdn_voucher_nonce_gaps_total, which v0.1.0 no longer exports. I dropped that series and renamed the panel "Lane and receipt-log writes". "Pool-open failures by cause" now names the aggregate's real extra causes (store, open-task, capability signing, lane seed). "Buyer ledger integrity" names the four lane-seed causes.
  • Delivery dashboard: "Pool plumbing on the pull leg" now lists gas, RPC, buyer store and lane seed as causes. Pools do not expire, so "an expired pool" is gone.
  • DecdnBuyerLaneSeedFailing summary is now "Buyer lane seeds refused on …", and the description lists all four causes.

Firing on noise in the fleet

  • DecdnRpcErrorRatioHigh (firing on all 8 nodes): the provider answers about a third of eth_getLogs calls with "error code 19: Temporary internal error". The poller retries these in place by design. The annotation and the "RPC failures by outcome" panel said rpc_error "usually means a range cap", which is wrong: a range cap has its own counter, and it is at 0 fleet-wide. This PR changes the text only; the expression is unchanged.
  • DecdnCapacityBondRegistryResyncFailing (firing on nbg1): it fired on one failed attempt of a 15-minute resync. It now fires at increase(...[1h]) >= 2. I added promtool tests: one failure does not fire, two do. The test fails against the old > 0 rule. The slash-resync and blacklist re-enumeration rules stay at > 0 because those are slash exposure.
  • Node drilldown "Peers known" went blank after every restart because it gated on a counter the restart resets. It now gates on max_over_time(...[1d]).

The other 395 panel queries ran clean against the fleet. After make lint-helm and make lint, the metric-name check against v0.1.0 finds no unexported name.

After merge: republish the dashboards and Grafana-managed rules in the deCDN folder. Those copies still predate #128.

Closes #125

🤖 Generated with Claude Code

…y-resync alert (#125)

decdn v0.1.0 (decdn/decdn#2406) removed decdn_voucher_nonce_gaps_total and
widened the pool-open and lane-seed counters:

- chain dashboard: drop the nonce-gap series (the panel is now "Lane and
  receipt-log writes"); name the pool-open aggregate's real causes (store,
  open-task, capability signing, lane seed) and the four lane-seed causes.
- delivery dashboard: pool open failures are gas, RPC, buyer store or lane
  seed, not an expired pool.
- DecdnBuyerLaneSeedFailing: "Buyer lane seeds refused", all four causes.

Alerts and panels that misled on the live fleet:

- DecdnRpcErrorRatioHigh and "RPC failures by outcome": rpc_error on
  eth_getLogs is mostly a provider's transient error the poller retries in
  place, not a range cap (that has its own counter). Text only.
- DecdnCapacityBondRegistryResyncFailing fires on two failed attempts in the
  hour (>= 2), not one transient eth_call error; promtool tests added.
- Node drilldown "Peers known" gates on max_over_time of pull attempts, so a
  restart no longer blanks it.

Closes #125

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Copilot AI balanced review requested due to automatic review settings October 14, 2026 22:16

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Approval recommended

The focused changes have no blocking findings and include regression coverage for the revised alert threshold.

1 open finding
What changed in this PR

Aligns deCDN monitoring with v0.1.0 buyer metrics and reduces transient registry-resync alert noise.

Changes:

  • Removes the obsolete nonce-gap series and updates buyer/RPC explanations.
  • Requires two registry-resync failures per hour, with regression tests.
  • Makes the peer-count display tolerate counter resets after restarts.
File Description
monitoring/​README.md Documents expanded alert tests.
monitoring/​decdn-node/​prometheus-alerts.yml Adjusts resync threshold and alert explanations.
monitoring/​decdn-node/​prometheus-alerts_test.yml Tests resync firing and recovery.
monitoring/​decdn-node/​dashboard-node.json Adds historical gating for peer counts.
monitoring/​decdn-node/​dashboard-delivery.json Updates pool-failure explanations.
monitoring/​decdn-node/​dashboard-chain.json Removes obsolete metric and updates panel text.
.claude/​skills/​grafana-dashboards/​SKILL.md Documents resync test coverage.

🧠 Review effort: Balanced


💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread monitoring/decdn-node/dashboard-node.json Outdated
…not a recent pull

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@thiras
thiras force-pushed the fix/monitoring-v0.1 branch from 1568d53 to 93ea508 Compare October 14, 2026 22:20
@thiras
thiras merged commit 3832e5a into main Oct 14, 2026
17 checks passed
@thiras
thiras deleted the fix/monitoring-v0.1 branch October 14, 2026 22:33
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.

monitoring: sync buyer pool-open and lane-seed panels with decdn#2406

2 participants