For teams measuring automation value in Prometheus and Grafana

When a dashboard is enough, and when you need a ledger.

A counter per run, a recording rule carrying the value formula, a Grafana panel in dollars. That setup is free, private, and close to the alerting you already operate, and for plenty of teams it settles the question. The requirements change the moment the number leaves the engineering channel. This page lays out both halves.

The number stays inside engineering

Keep the dashboard. The data never leaves your network, there is no invoice, and the run-rate charts sit beside the alerts your team already watches.

The case for staying →

The number has to convince someone else

A client QBR, a budget review, an auditor. That meeting asks how the figure was derived, and a dashboard has no closed months, no effective-dated rates, and no drill-down to show.

The case for graduating →
The platform

One ledger, from ingest to audit.

Runs come in from anything that speaks HTTP, get priced against cited rates, and become reports and exports your finance team can audit. Closed periods reconcile themselves nightly.

Ingest
Run-event ingest API OpenTelemetry & LiteLLM ingest MCP server for agents Token-priced AI runs (2,400+ models) Billed AI spend import & coverage
Pricing & analysis
ROI engine, failures priced Cited BLS rate cards Savings classes & conservatism factor Flat-rate billing basis Variance, sensitivity & NPV What-if scenarios & repricing stress test Shared-cost showback Candidate pipeline
Losses & mitigation
Incident (loss) ledger Sensor & webhook incident capture Mitigation initiatives & business cases Locked measured baselines Initiative to automation, baseline carried
Reporting & export
White-label report branding Shareable live report links Scheduled Exec Value Pack Public ROI calculator Finance export (capex/opex) BI warehouse extracts Self-serve data export, no lock-in
Governance & platform
Closed-period corrections Nightly reconciliation canary Append-only audit log Workspaces & MSP managed orgs
What it looks like

The screens behind the argument.

The LumaTrack ledger: net value filtered to $51,268 with gross and costs beside it, filters for workspace, automation, savings class and bucket, a restatements table, and a closed-period corrections table.
Net value of $51,268, filtered and traceable to the runs behind it. October 2025 closed at $266 on one automation; $89 of evidence arrived afterwards and posted as its own correction. October still reads $266 everywhere it was ever shown, and the all-time total reads $51,357 with the correction called out.
The LumaTrack dashboard: net savings, hours returned, ROI, runs, and a 30-day activity digest.
The portfolio dashboard leads with one net number, costs already subtracted.
LumaTrack analytics: cumulative payback, projected against realized, monthly savings, and reliability charts.
Projected against realized, both read from the same ledger. Where they diverge is the part most tools quietly hide.
The case for staying

Keep the dashboard

Prometheus does real work here: the data never leaves your network, there's no invoice, and the run-rate charts sit beside the alerts your team already watches. When someone asks whether the patching playbook earns its keep, the answer is one query away. Our open-source starter kit ships that whole setup as code: a dependency-free exporter, recording rules that carry the formula, a provisioned dashboard. If the number never has to convince anyone outside engineering, that is the right amount of tooling.

The case for graduating

The moment it stops being enough

The requirements usually change on a date you can name: a client QBR lands on the calendar, a budget review asks for last year instead of last month, or an auditor asks how a figure was derived. A dashboard falls short in that meeting in specific ways, so they're worth listing one by one.

Dimension Prometheus + Grafana LumaTrack
A run A count inside a counter. The individual execution is not recoverable from the aggregate. A stored record, priced at ingest, reachable from every figure that includes it.
Editing a rate Dashboards join today's rate against historical counts, so one edit silently reprices all history. Rates are effective-dated. March stays priced at March's rates, and corrections post as their own entries.
History 15 days by default; keeping more means operating remote storage yourself. 90 days of per-run detail on Free, 13 months on Team, and value roll-ups kept forever on every plan.
Money float64 samples, rounded at render time. Decimal arithmetic to the cent, re-proved nightly against the raw runs.
The deliverable A Grafana login. A live report link or a PDF under your brand, made to hand to a client or a CFO.
Cost Free, plus the hours that operating it takes. Free for 5 automations and 25,000 run events a month. Paid tiers start at $59.
Read this part first

When to stay with Prometheus

One team, one audience

The people who read the number are the people who produce it, and nothing obliges you to defend it outside the room.

Prometheus is already your day job

You operate it at scale, retention included, and a second system would be one more thing to patch.

No reporting date on the calendar

Nobody has asked for last quarter, and nobody is scheduled to.

In those cases, stay with Prometheus. The starter kit will hold, and the export below works whenever that changes.

Your history comes with you

Bring your history when you come

Export daily counts from Prometheus and replay them into the ledger with their original dates. The first report you generate will cover months from before you signed up.

Export from Prometheus

One JSON line per automation, status, and day. The script ships with the starter kit and survives counter resets.

scripts/export-history.py --days 90 > history.jsonl

Replay into the ledger

executed_at keeps each run's original date and external_id makes retries safe, so the same run never books twice. Imported runs carry a permanent backfilled flag: a chart reader can always tell bulk evidence from live evidence. The backfill guide covers CSV and the in-app importer.

curl -X POST https://lumatrack.io/api/v1/runs/backfill \
  -H "Authorization: Bearer $LUMATRACK_KEY" \
  -H "Content-Type: application/json" \
  -d "{\"format\": \"jsonl\", \"data\": $(jq -Rs . < backfill.jsonl)}"

See your estate as a ledger.

Free tier: 5 automations, 25,000 run events a month · your data exports as CSV and JSON on every plan