grafana: a forge board, honest about being an inventory board
Adds the fourth per-service board. Unlike its three siblings it answers "what does the forge CONTAIN", not "is the forge healthy" -- forgejo's exporter publishes a census of stored objects and no request, error or latency series at all. That distinction is the board's own description rather than something a reader has to infer, because a fourth per-service board that silently answers a different question than the other three is worse than no board: someone checks it during an incident and reads a flat line as calm. Panels: repositories, users, orgs, issues open/closed, releases, the open-vs-closed pair over time, repos-and-users together (they move in lockstep when an agent is created, so divergence is the signal), discussion volume, and the webhook/hooktask pair. One panel ships deliberately EMPTY: issues-by-label. The metric is enabled in the forge's config but forgejo reads its [metrics] section at startup, so the series does not exist until that process restarts -- and a config merge alone does not restart it. The panel title says so, the description says how to tell "not deployed" from "no labelled issues", and `noValue` says it again in the graph itself. An empty panel with no explanation is the failure this board is trying not to be. Gated: every panel's metric confirmed to exist in the store, with a bogus name checked absent in the same run so the check can fail, plus a known-positive control against the label-values query itself -- a download that silently returned nothing would otherwise report every metric missing. Gate kept as verify-3494-forge-board.sh.
This commit is contained in:
parent
638e1ac2c6
commit
6f248a12be
2 changed files with 419 additions and 0 deletions
|
|
@ -61,6 +61,7 @@ let
|
|||
"agents.json"
|
||||
"authelia.json"
|
||||
"claude-usage.json"
|
||||
"forge.json"
|
||||
"logstore.json"
|
||||
"metricstore.json"
|
||||
"queue.json"
|
||||
|
|
|
|||
Loading…
Reference in a new issue