Grafana → Elastic · PromQL & TCO
Competitive lab · Challenge 1 · ~10 min

Stop scaling Prom just to cut cost.

Customer value: Keep PromQL — and stop using scrape intervals and remote-write fan-out as your cost controls.

Prometheus admins stretch scrape intervals, stand up multiple remote-write endpoints, relabel every job, farm recording rules, run HA Prom + Thanos/Mimir, and shard by team — high ops tax, coarser data in incidents. Elastic Serverless is one managed remote-write / OTLP path: keep resolution, Drop noise at ingest, no sidecar TSDB. Then paste the same Explore expressions. (Bonus: one project instead of Prometheus + Loki + Tempo.)

PROM COST LEVERS

Starve the scrape

15s → 60s scrapes · extra remote-write paths · relabel YAML · recording rules · shard the TSDB.

ELASTIC

Drop, don’t starve

One remote-write / OTLP endpoint · Streams Drop · lifecycle — no Prom/Mimir compactors to run.

PROMQL

Same PromQL

Paste into Discover / Metrics — Explore habit, Elastic backend, resolution you actually want.

In the lab: Last 2 hours → paste PromQL A / B / C → name one Prom cost lever you no longer need.
elastic
Competitive lab · Challenge 2 · ~15 min

Grafana continuity — panels map, plus easy migration.

Customer value: Familiar boards on Kibana — and a path to migrate a few real Grafana exports without a rewrite project.

Open Horizon — Grafana continuity, the sample board migrated with obs-migrate, then Horizon — Dashboard sprawl — which boards still query which indexes (Grafana folder sprawl).

MAP

Grafana → Kibana

Time series, stat, table → same story on the continuity board.

MIGRATE

obs-migrate

Sample: Prometheus Basics + PromQL alerts → Dashboards on live Horizon metrics.

ALERTS

Beyond Alertmanager

Keep PromQL in Kibana rules (ES|QL PROMQL) — one project, no Alertmanager sidecar.

SPRAWL

Boards → indexes

Grafana folder sprawl: Elastic inventories which dashboards still query which indexes, and alerts if a schema change would blank a widget.

In the lab: Continuity board → Sample: Prometheus Basics → Horizon — Dashboard sprawl → Streams metrics-generic.otel-default.
elastic
Competitive lab · Challenge 3 · ~15 min

Serverless TCO — ~33% lower on Grafana Cloud.

Customer value: Same PromQL workloads — modeled ~33% lower than Grafana Cloud, plus one store instead of three.

On the Grafana stack worksheet, two reference points: 100k samples/sec @ 296B → Grafana Cloud ~$33K/mo (Elastic ~$22K/mo, ~33% lower); smaller Prometheus footprint → Grafana Cloud ~$3.1K/mo (Elastic ~$2.1K/mo, ~33% lower). In the lab: Drop /debug/pprof, open Horizon — Streams savings, then open the sheet with your samples/sec.

Grafana Cloud
~$33K
Elastic Serverless
~$22K · ~33% lower
Smaller footprint (GC)
~$3.1K → Elastic ~$2.1K

Modeled list-rate · ~33% lower than Grafana Cloud in pricing analysis · tco-calc.o11ybot.app/?scenario=grafana-stack · confirm with measured usage

LEVER

Streams Drop

Cut scrape/debug noise before ingest — keep resolution without starving scrapes to control Grafana Cloud billable series.

TAKEAWAY

Leadership line

One observability store, one investigation query language, PromQL preserved — and ~33% lower than Grafana Cloud on modeled workloads.

In the lab: Drop → savings dashboard → open the TCO calc → one sentence for leadership.
elastic
Beyond PromQL · investigation

One ES|QL query across logs, metrics, and traces.

Customer value: Keep PromQL for dashboards — but stop exporting host lists and trace IDs between Loki, Prometheus, and Tempo.

In a typical Grafana stack, logs, metrics, and traces sit in three stores with three query languages. ES|QL subqueries (WHERE field IN (subquery)) keep the intermediate cohort inside Elasticsearch — saturated hosts, erroring hosts, or 500 slow trace IDs never land in a clipboard. One query answers questions like “what did the saturated hosts log?” or “470 of 500 slow traces share the same lock wait.” (Observability Labs · Aug 2026)

GRAFANA STACK

Three hops

PromQL chart → copy host names → LogQL → copy trace IDs → Tempo. Stale lists, manual joins, negative checks skipped.

ELASTIC

One store

Metrics → logs, logs → metrics, traces → logs, or all three nested — OTel fields kept on ingest, one time picker.

REPRODUCIBLE

Saved correlation

One ES|QL string anyone can re-run in Discover — not a join that lives in one engineer’s head during the incident.

Talk track: PromQL stays for metrics boards; Elastic wins when the question crosses signals — and when Agent Builder needs one query, not three tool calls.
elastic