Request an exact quote
Cybersecurity · SIEM & log analytics migration path

From Splunk Enterprise Security to Wazuh

Leaving an ingest-priced SIEM for a self-hosted one: auditing which sourcetypes actually earn their keep, rewriting SPL correlation searches as Wazuh rules, sizing the indexer, and parallel-ingesting until detection coverage is proven.

Effort
High
Est. timeline
~18 wks
Wazuh model
Free (self-hosted)
Open source
Yes
▶ Model your savings in the interactive calculator

Splunk Enterprise Security is usually the best security product in the building and the one finance asks about first. That tension is the whole migration. The platform is priced on how much you send it, so the security team’s instinct (log everything, keep it forever) is in permanent conflict with the budget, and every new log source turns into a business case. Wazuh is the most common open destination because it is the only free platform that covers log collection, correlation, file-integrity monitoring, and compliance reporting in one project. What it is not is a drop-in replacement for a search platform, and the gap is where migrations fail.

Start by auditing what actually fires

Do not begin with architecture. Begin with a query against your own alerting history, because the single biggest determinant of how hard this migration is is a number you probably do not know yet: how many of your correlation searches have produced an alert a human acted on in the last twelve months.

In most estates the answer is uncomfortable. A few dozen searches carry the entire programme, several hundred exist because someone enabled a content pack, and a long tail has been silently erroring since a field extraction changed. Rank them by real-world usefulness and draw a line. Everything above the line gets reimplemented deliberately. Everything below it gets deleted, and deleting it is a genuine improvement rather than a compromise, because carrying dead detection content into a new platform is how you arrive on day one with a console nobody trusts.

Do the same exercise for sourcetypes. For each one, ask what detection or investigation would become impossible without it. Sources that survive that question are the ones you re-point at Wazuh. Sources that do not are the ones you stop paying to index anywhere.

The mapping

  • Universal forwarders → Wazuh agents, deployed via the same configuration management you already use for the forwarder estate.
  • HTTP Event Collector and syslog inputs → Wazuh’s syslog listener, Filebeat, or the agent’s localfile collection.
  • Field extractions and CIM normalization → Wazuh decoders, which parse at ingest rather than at search time.
  • Correlation searches → Wazuh rules (XML, evaluated as events arrive), with frequency and timeframe for the stateful ones.
  • Lookups and asset lists → CDB lists, the flat key-value files Wazuh rules can test against.
  • Notable events and incident review → an external case platform (TheHive is the usual pairing); Wazuh does not provide this.
  • Adaptive response actions → Wazuh active response scripts.
  • ES compliance dashboards → Wazuh’s SCA policies and regulatory templates (PCI DSS, HIPAA, NIST 800-53).

The search-time versus ingest-time inversion

This is the conceptual shift that catches teams, and it is worth understanding before you write a single rule. Splunk indexes raw events and does the clever work when you search: schema-on-read means you can ask a question today about data you collected last year, using a field you only just decided to extract. Wazuh decodes and evaluates at ingest: a rule either matched when the event arrived, or it did not.

The practical consequences are concrete. Retroactive hunting across historical data, the thing an analyst does when a new indicator lands, is materially weaker in Wazuh because the correlation already happened or did not. Conversely, detection latency improves, because you are not waiting for a scheduled search to run. And crucially, if you get a decoder wrong, you do not silently get worse search results, you get no alert at all. Decoder testing therefore becomes a first-class activity rather than an afterthought, and wazuh-logtest becomes the tool your detection engineers live in.

Teams that need genuine retrospective search alongside Wazuh’s real-time rules usually keep the OpenSearch indexer’s raw data queryable through the dashboard and accept that the query language and ergonomics are a step down from SPL. Be honest with your analysts about that up front rather than letting them discover it in week three.

Sizing the thing you now own

Splunk’s licence made capacity somebody else’s problem in one specific sense: you knew what a gigabyte cost. Self-hosting inverts that. The Wazuh manager handles decoding and rule evaluation and is CPU-bound; the indexer stores and searches and is disk and memory-bound; the dashboard is comparatively trivial.

Size the indexer from daily indexed volume and required hot retention, not from endpoint count, and add capacity for at least one replica shard unless you are genuinely willing to lose a node’s worth of data. Put hot indices on fast local storage, because search performance on spinning disk will destroy analyst confidence faster than any missing feature. Then plan the lifecycle policy that moves warm data to cheaper storage and eventually deletes it, and make sure the deletion point is the one your compliance obligation actually requires rather than the one someone guessed.

Budget for this properly. A self-hosted SIEM at real enterprise volume is a multi-node cluster with a maintenance burden, and pretending otherwise is how these projects acquire a reputation for false economy.

Running both, and the order of operations

  1. Audit sourcetypes and correlation searches as above, and get the retention obligation per source in writing.
  2. Build the Wazuh cluster sized for your surviving volume, with the indexer lifecycle policy configured from day one rather than retrofitted.
  3. Onboard sources in tiers, starting with the ones whose decoders are easiest to validate (endpoint agents, standard syslog) and ending with the bespoke application logs that needed custom field extractions in Splunk.
  4. Reimplement the surviving detections, testing every decoder with wazuh-logtest and every rule against a replayed sample of real events before enabling it.
  5. Wire up case management and active response, so an alert has somewhere to go and something to do.
  6. Parallel-ingest through a full detection-test cycle and at least one month-end, comparing what fires on each platform and investigating every discrepancy in both directions.
  7. Reduce the Splunk licence tier first, cancel second. Dropping ingest volume while keeping search access is the low-risk intermediate step, and it starts saving money months before the cutover completes.

The commercial timing that actually matters

Splunk contracts renew annually and the notice period is usually generous to Splunk, not to you. Work backwards from the renewal date with real dates: the parallel-ingest quarter, the tiering-down step, and the notice deadline. Teams that start this project three months before renewal end up either signing another year under time pressure or cutting the validation period short, and the second option is how a coverage gap gets into production.

If your renewal is closer than two quarters, the honest play is to negotiate a shorter or reduced-volume term now with the migration as your stated leverage, then execute properly against the following renewal.

Clearing the bar before you cut over

The acceptance criteria are specific and testable. Every surviving detection has fired correctly against a replayed real event. Every decoder has been validated against live production log samples, not synthetic ones. Analysts have worked real incidents end to end in the new case workflow. Compliance reports render with the evidence your auditor asked for last cycle. Indexer capacity has survived a peak day with headroom. And you know, in writing, what happens to historical data.

The short version

Splunk ES to Wazuh removes an ingest meter and hands you a cluster to operate, a decoder estate to maintain, and a weaker retroactive-search story in exchange. It is a genuinely good trade for organisations whose detection content is smaller than their licence suggests, which is most of them, and a poor trade for teams who use SPL as an investigative tool every day. Audit what fires before you cost anything, model the per-endpoint figures in the calculator above as illustrative, and treat the storage and staffing you take on as part of the price rather than a rounding error.

Tooling & automation for this path

Inventory sourcetypes and the searches that actually fire; re-point log sources to the Wazuh indexer via agents, syslog, or Filebeat; re-author SPL correlation searches as Wazuh rules and decoders (there is no SPL converter); parallel-ingest both platforms through a full detection-test cycle before cancelling the ingest licence.

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

Frequently asked questions

Is there a converter that turns SPL searches into Wazuh rules?

No, and anyone selling you one is selling you a disappointment. SPL is a full search and transformation language evaluated at query time across an indexed corpus; Wazuh rules are declarative XML evaluated at ingest time against a decoded event. The two models do not map. What transfers is intent: for each correlation search that has actually fired a real ticket in the last year, write down the condition it detects in plain English, then implement that condition as a Wazuh rule. Expect to reimplement tens of searches, not hundreds, because most of the estate has never fired.

Can Wazuh handle our ingest volume?

Wazuh's indexer is OpenSearch, so the honest answer is that it scales the way an OpenSearch cluster scales, and you now own that capacity planning. A rough starting point is to size on events per second and daily indexed gigabytes rather than endpoint count, plan for replicas, and be realistic that hot retention on local NVMe is what costs money. The saving is real, but it converts a licence line into a storage and operations line rather than removing it.

What about the years of historical data sitting in Splunk?

Plan for it explicitly, because it is the thing that quietly keeps you paying. You have three practical options: export what you are legally obliged to keep to cheap object storage in a readable format, keep a small frozen Splunk instance alive purely for lookback, or accept the loss for sources with no retention obligation. Decide per sourcetype before you serve notice, and get the retention requirement in writing from whoever owns the obligation.

Does Wazuh replace Splunk ES's risk-based alerting and notable-event workflow?

Not like for like. Wazuh has rule levels and alerting, but it does not ship an equivalent of the risk-based alerting framework or ES's notable-event triage queue. If your analysts work out of the incident review queue every day, budget for pairing Wazuh with an open case-management platform such as TheHive, and treat that integration as part of the migration rather than a later nice-to-have.

How long should the parallel-ingest period be?

At least one full detection-test cycle plus one month-end, and realistically a quarter. The reason is not technical caution, it is that seasonal and periodic activity (patch windows, month-end batch jobs, quarterly access reviews) generates the noise your tuning has to survive. Cutting over after two clean weeks means discovering your false-positive profile in production.

Model your 3-year cost

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

Sized at 500 GB ingested/day, cost is computed on this.
Stay on Splunk Enterprise Security (3yr)
$2,700,000
Move to Wazuh (3yr + migration)
$132,000
Projected savings
$2,568,000 (95%)
Payback period
1.0 mo
Build a decision report from these numbers:

How this is licensed: Security is the category where the billing unit changes per segment: EDR/XDR bills per endpoint or per protected asset; SIEM bills by ingest volume (GB/day) or events per second; MDR, MSSP, and SOC-as-a-Service bill per endpoint or per asset for endpoint-centric services but per GB ingested for co-managed SIEM and SOC-as-a-Service; SOAR bills per analyst seat or per automation run; and vulnerability management bills per scanned asset. The calculator normalizes everything to protected endpoints so segments stay comparable; if you are modelling a SIEM or an ingest-priced SOC-as-a-Service specifically, treat one endpoint as roughly one asset generating logs and sanity-check the total against your GB/day contract.

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

Request a vendor-accurate Wazuh 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 Enterprise Security estate?

Every device that needs the agent installed. Not sure? Enter rough numbers, the distributor confirms exact counts later.

1,000 endpoints
Default mid-size assumption (1,000 endpoints)