Request an exact quote
Monitoring migration path

From Splunk to Grafana

Replacing Splunk with Grafana + Loki, the index-light cost model, the SPL-to-LogQL mindset shift, label-cardinality discipline, and the premium apps with no OSS equal.

Effort
Medium
Est. timeline
~15 wks
Grafana model
Free OSS / Cloud tiers
Open source
Yes
▶ Model your savings in the interactive calculator

Splunk is powerful, and its ingest-based licensing (priced largely per GB per day) makes high log volume expensive and retention a budgeting problem. The common open-source replacement is Grafana for visualization paired with Loki for logs, extended with Mimir for metrics and Tempo for traces. The catch is that Loki is architecturally different from Splunk, so this is a re-platform with a real mindset shift, not a like-for-like swap.

Why teams leave Splunk

It’s rarely the product, it’s the cost curve of ingest. Every additional GB per day and every extra retention day raises the bill, and premium apps add more. Teams with the engineering capacity to run their own stack can cut spend dramatically, trading a managed platform for operational ownership.

The core architectural difference

This is the part to internalize before anything else. Splunk indexes your data heavily and lets you search across it flexibly. Loki indexes only labels and stores the raw log lines as compressed chunks in object storage (S3/GCS), then filters them grep-style at query time. The result is far cheaper storage at volume, but the query patterns differ, and a Splunk habit becomes an anti-pattern: high-cardinality labels (user IDs, request IDs) wreck Loki performance. You filter by a few stable labels (app, environment, host) and then search within, rather than indexing every field.

The mapping

  • Splunk indexers → Loki (chunks in object storage).
  • SPL searches → LogQL, a different language and model.
  • Dashboards → Grafana.
  • Splunk alerts → Grafana alerting.
  • Universal/Heavy Forwarders → Grafana Alloy, Promtail, or the OpenTelemetry Collector.
  • Metrics (if you used Splunk for them) → Prometheus/Mimir; traces → Tempo.
  • Apps / Technology Add-ons → manual reimplementation.

Translating SPL searches to LogQL

This is where most of the migration effort actually lands, because it is a redesign, not a find-and-replace. A useful way to think about it: in SPL you search first and narrow later; in LogQL you select labels first and search within.

  • Stream selection replaces the base search. Start every LogQL query by matching a small set of stable labels ({app="checkout", env="prod"}), then apply line filters (|= "error") and parsers (| json, | logfmt) to pull fields out at query time.
  • stats and timechart become metric queries. Aggregations like counts and rates over time map to LogQL’s count_over_time, rate, and sum by (...), often after unwrap for numeric fields.
  • eval and rex field extraction happen at query time via parser expressions rather than being baked into indexed fields.
  • Cardinality is the trap. Any SPL search that keyed on a high-cardinality field is the one most likely to perform badly if you naively lift it into a label. Reshape it to filter within a stream instead.

Rebuild the highest-value saved searches first and confirm each returns what the Splunk original did before you retire it.

The premium-app gap (be honest about this)

Loki and Grafana replace logging and dashboards well. They do not drop-in replace Splunk’s premium solutions, Enterprise Security (SIEM) and ITSI. If those are why you run Splunk, scope a separate path: an open SIEM such as Wazuh or the Elastic stack, or a dedicated security product. Pretending Grafana covers ES is how migrations stall.

A safe migration flow

  1. Inventory dashboards, saved searches, alerts, sourcetypes, retention, and downstream hooks (ticketing/paging).
  2. Deploy the stack: Loki with object storage, Grafana, and Alloy/OTel collectors. Point a subset of sources at it first.
  3. Rebuild the essentials: translate your highest-value searches into LogQL and recreate the dashboards and alerts that page humans, not everything on day one.
  4. Dual-ingest. Send logs to both Splunk and Loki during validation, and compare coverage, alert fidelity, and false-positive rates.
  5. Cut over forwarders to the new collectors once you trust the alerts, then retire the indexers after the retention window closes.

Where the cost goes now

Splunk’s spend was driven by GB per day ingested and by retention; Loki changes the shape of both. Because it indexes only labels and stores compressed chunks in object storage, storage at volume gets much cheaper, but the cost moves to object storage, query compute, and the engineering time to run the stack. The dials that matter are label cardinality (keep labels to a few stable dimensions so stream counts stay bounded), retention (set it per stream deliberately, long retention at high volume is exactly what made Splunk expensive), and how much you parse at query time versus index. Treat the cutover as a chance to drop sourcetypes and verbose logs nobody queries, rather than lifting every Splunk index over unchanged.

Before you switch anything off

Set retention and object-storage sizing deliberately, long retention at volume is exactly what made Splunk expensive, and it sizes your Loki storage too. Fire test alerts end to end (trigger → Grafana alerting → pager → ack), do a dashboard parity review on the data that matters, and load-test query performance with realistic label cardinality before switching anything off.

So, is it worth it?

Splunk → Grafana/Loki is primarily a cost and ownership decision. Logs and dashboards migrate well; the work is learning LogQL, enforcing label-cardinality discipline, and accepting that Splunk’s SIEM/ITSI tiers need a separate plan. Dual-ingest, prove alert fidelity, then cut over forwarders last. Model your per-host and ingest savings in the calculator above, and validate them against a real quote, self-hosting trades license cost for engineering time and storage.

Tooling & automation for this path

Route logs to Loki or Elasticsearch; rebuild SPL searches as LogQL/queries; recreate dashboards and alerts in Grafana; parallel-ingest during cutover.

Primary references: official Grafana documentation ↗ and the Splunk documentation ↗ , always verify version-specific behavior against them before you migrate.

Frequently asked questions

How do I convert an SPL search into LogQL for Loki?

You do not translate SPL line by line; you rethink the query around Loki's model. SPL searches a heavily indexed store across many fields, while LogQL selects a small set of stable labels and then filters the raw lines, so a search that pivoted on high-cardinality fields must be reshaped to label-select first and pattern-match second. SPL stats and eval pipelines map roughly to LogQL's line filters, label filters, and metric queries with unwrap and rate, but expect to redesign rather than port.

Why do high-cardinality labels hurt Loki when they were fine in Splunk?

Because Splunk indexes fields heavily and Loki indexes only labels. In Splunk you could search any field cheaply; in Loki every distinct label value creates a new stream, so putting user IDs or request IDs in labels explodes stream counts and wrecks query performance. Keep labels to a few stable dimensions like app, environment, and host, and search within them for the high-cardinality values.

Do Splunk Enterprise Security and ITSI have Grafana equivalents?

No. Loki and Grafana replace logging and dashboards well, but they do not drop in for Splunk's premium SIEM (Enterprise Security) or ITSI. If those are why you run Splunk, scope a separate path, an open SIEM such as Wazuh or the Elastic stack, or a dedicated security product, rather than assuming Grafana covers them. Pretending it does is how these migrations stall.

How does the ingest-based cost model change moving to Loki?

Splunk priced largely per GB per day indexed, so both volume and retention drove the bill. Loki indexes only labels and stores compressed chunks in object storage, which makes storage far cheaper at volume, but the cost moves to object storage, query compute, and the engineering time to run the stack. Set retention and object-storage sizing deliberately, since long retention at high volume is what made Splunk expensive and will size Loki too.

Model your 3-year cost

Pre-filled for Splunk → Grafana; adjust every figure with your own numbers. Estimates are illustrative, not vendor quotes, see our methodology.

Sized at 300 monitored hosts, cost is computed on this.
Stay on Splunk (3yr)
$270,000
Move to Grafana (3yr + migration)
$70,800
Projected savings
$199,200 (74%)
Payback period
8.3 mo
Build a decision report from these numbers:

Illustrative, editable figures, not vendor pricing (defaults reviewed May 2026).

Request a vendor-accurate Grafana quote

A guided builder that turns your estimates into a requirements report (RFQ) you can send to a vendor, partner, or distributor for a binding quote, then feed the real prices back into the calculator above. How our estimates work.

  1. 1Size it
  2. 2Requirements
  3. 3Your details
  4. 4Channels & export

How big is your Splunk estate?

Physical + virtual hosts sending telemetry. Not sure? Enter rough numbers, the distributor confirms exact counts later.

300 monitored hosts
Default mid-size assumption (300 monitored hosts)