U4 — FinOps Dashboard — Test Runbook¶
Asset: U4 — FinOps cost-governance Grafana dashboard (
modules/azure/grafana-dashboards/dashboards/snowops-finops.json). Extends J5; no new module. Pairs with U1 (budgets) + U2 (tag policy) + U5 (cost anomaly) + J7 (log-cost lever) to round out the U cost-governance series. Owner: CO · Milestone: M4.
Part A — Offline gate (~2 min, $0)¶
cd modules/azure/grafana-dashboards
./scripts/validate.sh # or: python3 scripts/validate_dashboards.py
Acceptance:
- [ ] Gate reports the dashboard set valid, including snowops-finops.json.
- [ ] Required datasource + workspace template variables present; every
non-row panel binds to the Azure Monitor datasource with an Azure query.
Part B — Dashboard shape review (~3 min, $0)¶
The dashboard surfaces the cost-governance signals available without a Cost Management spend export — it is honest about that boundary:
- Log-ingestion cost (the J7 Basic-Logs lever): daily billable ingestion
GB + top tables by ingestion (the
Usagetable) — these are the tables to consider moving to J7's Basic tier. - Tag governance & allocation: untagged-resource count (missing
CostCenter), resources byCostCentertag, resources by type — the cost-allocation readiness signals from Azure Resource Graph. - No fabricated spend — subscription $ spend needs a Cost Management export feed (not yet wired; same honest stance as V5's cost section). The dashboard description states this explicitly. U1 (budgets) + U5 (anomaly alerts) cover threshold + anomaly alerting on real spend in the meantime.
Part C — Live (requires a deployed J5 instance + the J1 workspace)¶
- Deploy via the J5 path:
- SnowOps — FinOps & Cost Governance renders; the
Usagepanels show ingestion (every workspace hasUsage), and the ARG panels show resource inventory across the subscription the instance identity can read. - Cross-check "top tables by ingestion" against J7's Basic/Analytics split — high-ingestion, low-query tables are Basic candidates.
- Untagged-resource count should trend toward zero as U2 (tag policy) enforcement takes hold.
Notes¶
- ARG panels need the Grafana identity to have Reader (covered by J5's
monitoring_reader_scopesat subscription scope where granted); the offline gate checks structure only, not data presence.