PRACTITIONER GUIDE | SECURITY OPERATIONS
Practitioner GuideUpdated 15 min read

Why Your Splunk Bill Tripled After Moving to Cloud (And How to Cut It Without Losing Coverage)

30-40%
typical Splunk Cloud cost reduction from eliminating noisy log sources and applying index-time filtering
80%
of Splunk ingestion volume in most environments is low-signal data that can be filtered or routed to cheaper indexes
10x
cost differential between Splunk Cloud and S3-backed data lake storage for the same log volume

SponsoredRetool

Retool's new app builder is where AI-generated code ships safely

Building apps with AI is easy. Getting them to production safely is another story.

Start building for free today

Splunk Cloud charges by ingestion volume. The average enterprise ingests between 100 GB and 5 TB per day. At Splunk's standard pricing of roughly $150 per GB/day on an annual contract, a 500 GB/day environment costs approximately $2.7 million per year. When teams migrate from on-prem to Cloud, they routinely discover their actual ingest volume is 2-4x what they estimated, and nobody budgeted for that.

This guide covers the exact analysis and filtering strategies that have reduced Splunk Cloud bills by 40-60% in production environments without creating meaningful detection gaps. We will work through which log sources to look at first, what you can safely drop versus summarize, and how to implement event routing and index tiering.

Why Your Bill Jumped: The Migration Surprise

On-prem Splunk hid your true volume problem because disk was cheap and nobody tracked it carefully. When you move to Cloud, Splunk starts billing per GB of ingest and suddenly every log source has a dollar figure attached to it.

The three most common surprises when migrating to Splunk Cloud:

Firewall and network device logs. These are almost always the largest single contributor. A mid-size organization with 200 network devices easily generates 50-150 GB/day from firewall traffic logs alone. At the default verbosity settings, you are logging every permitted connection, every dropped packet, every NAT translation. That is not a security requirement. It is a habit.

Windows Security Event logs. The default Windows Security audit policy generates thousands of events per host per hour. A 2,000-seat Windows environment can easily push 80-120 GB/day. Most of that volume is logon noise (Event ID 4624), object access events for shares nobody cares about, and authentication chatter between machine accounts.

Endpoint telemetry duplication. Organizations that installed both an EDR agent and a Sysmon instance are often sending overlapping process creation, network connection, and file events to Splunk twice. The EDR vendor also runs their own cloud SIEM, so sometimes that data is going three places.

Step 1: Run the Volume Analysis (Before Touching Anything)

Before you filter or drop anything, you need to know where your bytes are actually coming from.

Run this search in Splunk to get a 7-day ingest breakdown by source type:

index=* earliest=-7d latest=now | eval gb_per_event=len(_raw)/1073741824 | stats sum(gb_per_event) as total_gb by sourcetype | sort -total_gb | eval daily_avg_gb=round(total_gb/7, 2) | eval monthly_est_gb=round(daily_avg_gb30, 0) | eval annual_cost_usd=round(monthly_est_gb30*150, 0) | table sourcetype, daily_avg_gb, monthly_est_gb, annual_cost_usd

Adjust the $150 figure to your actual contract rate. Run this for each index if you use multiple.

You will almost certainly find that 5-10 source types account for 75-85% of your total volume. Everything else is noise in the cost sense. Focus your optimization effort entirely on those top sources.

Free daily briefing

Briefings like this, every morning before 9am.

Threat intel, active CVEs, and campaign alerts, distilled for practitioners. 50,000+ subscribers. No noise.

Step 2: Firewall Logs, Drop What You Cannot Act On

Firewall logs are the single highest-leverage target in most environments. The key insight is that permitted traffic logs are almost never your detection source. Your detections come from denied traffic, suspicious allowed traffic to known-bad IPs, and traffic pattern anomalies.

What you can almost always drop:

  • Permitted inbound traffic from RFC 1918 (internal) addresses to internal destinations. You have this in your network flow data already.
  • Permit logs for common benign services (DNS to your resolvers, NTP to your time servers, ICMP between monitoring systems).
  • High-volume low-value log entries like Microsoft NPS RADIUS accounting logs that are just kept alive chatter.

What you must keep:

  • All denied traffic (inbound and outbound).
  • All traffic to/from external IPs on non-standard ports.
  • Any traffic involving your internet-facing servers.
  • Outbound connections on unusual ports (anything that is not 80, 443, 25, 587, 53, 123).

Implement this at the forwarder level using Splunk's props.conf and transforms.conf to drop events before they are transmitted to the indexer. Dropping at the forwarder means you never pay ingest cost for those events.

Example transforms.conf entry to drop routine permitted internal traffic:

[drop_internal_permit] REGEX = action="allow".*src_ip="(10.|172.1[6-9].|172.2[0-9].|172.3[01].|192.168.)".*dst_ip="(10.|172.1[6-9].|172.2[0-9].|172.3[01].|192.168.)" DEST_KEY = queue FORMAT = nullQueue

This pattern alone routinely cuts firewall ingest by 40-60% in environments with heavy internal East-West traffic.

Step 3: Windows Event Logs, Surgical Filtering

The Windows Security event log is a minefield of high-volume, low-value events when left at default audit settings.

The events you need for real detection coverage:

Event IDNameKeep?
4624Logon SuccessFilter, keep only interactive (Type 2), remote interactive (Type 10), service (Type 5) logons; drop network logons (Type 3) from machine accounts
4625Logon FailureKeep all
4648Logon with Explicit CredentialsKeep all
4663Object AccessDrop entirely unless specific high-value paths are scoped
4688Process CreationKeep, but only from DCs and servers, not all workstations
4698Scheduled Task CreatedKeep all
4720User Account CreatedKeep all
4732Member Added to Security-Enabled Local GroupKeep all
4768Kerberos TGT RequestKeep all
4769Kerberos Service TicketKeep failures and non-standard encryption only
4776NTLM AuthenticationKeep failures only

The most impactful change is filtering 4624 Type 3 (network logon) events. In an Active Directory environment, domain-joined machines generate thousands of Type 3 logon events per hour for normal operations like file share access, printer connections, and scheduled task authentication. For most detection use cases these are noise.

Implement filtering at the Windows Event Forwarding (WEF) level or in Splunk Heavy Forwarder's inputs.conf whitelist. WEF is preferable because it stops events at the source before any transmission.

Expected volume reduction: 30-50% of Windows Security event log ingest, depending on your environment.

Step 4: Endpoint Telemetry Deduplication

If you are running an EDR alongside Sysmon and sending both to Splunk, audit for overlap. Most EDRs (CrowdStrike, SentinelOne, Microsoft Defender for Endpoint) collect:

  • Process creation with command line arguments
  • Network connection events
  • File write events
  • Registry modifications
  • DNS queries

Sysmon collects exactly the same events. If you need Sysmon for historical data before your EDR contract, that is reasonable. If you have had your EDR for over a year and are still running Sysmon in parallel, you are paying for the same telemetry twice.

Decision matrix:

  • EDR cloud console handles your threat hunting and incident response? Disable Sysmon on endpoints.
  • EDR does not export raw telemetry to Splunk, or exports with a lag? Keep Sysmon for real-time detection.
  • You have specific Sysmon event types the EDR does not expose (e.g., DNS query logging)? Keep only those specific Sysmon event IDs.

Step 5: Index Tiering and Summary Indexing

Splunk Cloud has three storage tiers that differ in search speed and cost:

Hot/Warm: Fastest search performance. Most expensive for long retention. Cold/Frozen (SmartStore): Slower search, but significantly cheaper per GB for long-term retention. Summary Indexes: Pre-aggregated data at low volume for long-term trending without storing raw events.

For compliance-driven retention requirements (PCI DSS requires 12 months, many internal policies require 2-3 years), the difference between keeping raw logs in hot/warm versus moving them to SmartStore after 90 days can cut long-term storage costs by 60-70%.

For log sources where you need trending data but not raw event search (e.g., authentication volume by user, failed login counts by source IP), use a saved search that runs every 15 minutes and writes aggregated summary data to a summary index. Then delete the raw events after 30 days instead of 12 months.

Example summary index pattern for authentication volume:

index=windows EventCode=4625 | stats count as failed_logons by user, src_ip | collect index=summary_auth sourcetype=auth_summary

This compresses 30 days of authentication failure data into a fraction of the raw volume while preserving the ability to trend by user and source.

Step 6: Ingest Actions and Pipelines in Splunk Cloud

Splunk Cloud's native Ingest Actions feature lets you route, filter, and transform events at ingestion time without requiring a Heavy Forwarder. This is the preferred approach in fully Splunk Cloud environments.

Key capabilities:

  • Drop: Discard matching events entirely (never counted toward your ingestion quota).
  • Route: Send high-volume low-value data to a cheaper cold index instead of your main security index.
  • Mask: Redact sensitive fields (PII, credentials) before indexing.

Build an Ingest Action pipeline for each high-volume source type. Start with the top 3 by volume from your Step 1 analysis. Test each filter against a representative sample before enabling in production.

Step 7: The 30-Day Reduction Project

The fastest path to meaningful cost reduction:

Week 1: Run the volume analysis. Identify your top 5 source types by GB/day. Do not change anything yet.

Week 2: For each of those 5 source types, document what detections currently use it. Check your detection inventory (if you have one) or search your saved alerts for references to those source types. This tells you what you cannot safely drop.

Week 3: Implement drops at the forwarder for events with no detection dependency. Start conservative. Drop only events that are definitively not referenced in any alert or saved search.

Week 4: Measure. Run the volume analysis again. Calculate the reduction percentage. If coverage held (re-run your detections on the same test data and confirm they still fire), expand the filtering scope.

Most teams see 25-35% reduction in the first pass. The second pass, done 30-60 days later with more confidence in what is safe to filter, gets the rest.

Common Mistakes That Create Detection Gaps

Dropping entire source types without a detection audit. You will eventually discover that a Tier 1 alert you relied on for 2 years silently stopped working because the source type it queried no longer exists.

Filtering at the indexer instead of the forwarder. Events filtered at the indexer still count toward your ingest quota. You only save storage, not ingestion cost.

Applying global drops to compliance-required sources. PCI DSS, HIPAA, and SOC 2 auditors will ask for specific log types. Make sure your filter list has been reviewed against your compliance obligations before enabling.

Not documenting what you dropped and why. Six months from now, an incident will happen and someone will ask why a specific log source is missing. Document every drop decision with the date, the detection audit that was performed, and the business justification.

Realistic Outcomes

Organizations that apply the firewall, Windows event, and endpoint deduplication strategies typically see:

  • Firewall logs: 40-60% reduction
  • Windows Security events: 30-50% reduction
  • Endpoint telemetry (with EDR in place): 50-100% reduction if Sysmon is disabled
  • Overall bill: 35-55% reduction for a standard enterprise environment

The bottom line

The key constraint is detection coverage. Every byte you drop must be accounted for against your detection inventory. The goal is to stop paying for logs that produce no alerts and support no investigations, not to cut costs by creating blind spots.

Frequently asked questions

How do I know what I can safely drop from Splunk without breaking my detections?

Run a detection dependency audit before dropping anything. Search your saved alerts, correlation searches, and notable event definitions for references to each source type you are considering dropping. In Splunk ES, the 'Data Models' and 'Content Management' views show which correlation searches use which data model fields. For custom alerts, grep your savedsearches.conf for the source type name. Only drop events where zero active detections reference that source type, and then validate by running those detections against a test dataset to confirm they still fire.

Does filtering at the Heavy Forwarder actually reduce my Splunk Cloud bill?

Yes, but only if you drop events before they are transmitted. Events filtered at the indexer via transforms.conf on the indexer side still count against your ingest quota because Splunk counts data as it enters the ingestion pipeline. Drops must happen at the forwarder (via nullQueue in transforms.conf on the forwarder) or via Ingest Actions in Splunk Cloud before the event hits the indexer. If you are on Splunk Cloud, Ingest Actions is the preferred mechanism because it runs on Splunk's infrastructure before billing is counted.

What is the typical Splunk Cloud cost per GB and how does it compare to on-prem?

Splunk Cloud list pricing runs approximately $100 to $200 per GB per day on an annual contract, depending on volume commitments and Enterprise Agreement terms. At 200 GB/day that is roughly $7,300 to $14,600 per day or $2.7M to $5.3M per year. On-prem licensing is typically capacity-based (per GB indexed per day) at a lower rate per GB but with hardware, maintenance, and operations overhead added. The Cloud premium is real, but so is the elimination of hardware capital expenditure. The shock comes from discovering actual ingest volume is 2-4x what was planned for in the business case.

Is there a way to keep long-term log retention without paying full Splunk Cloud storage rates?

Yes. Splunk Cloud's SmartStore feature stores data in object storage (S3 or equivalent) and retrieves it on demand for search. This is dramatically cheaper than hot/warm storage for data older than 30-90 days. For compliance retention where you need the data to exist but rarely query it, move your index's hot to warm to cold tiering thresholds so that data transitions to SmartStore after 30 days. For data where raw events are not needed at all for historical trending, use summary indexing to pre-aggregate the data and then delete the raw events after your minimum required retention period.

Can I use Cribl or a similar pipeline tool to reduce Splunk Cloud costs?

Yes. Cribl Stream (and similar tools like Elastic Logstash with filtering, Gravwell, or Tenzir) sit in front of Splunk as a data pipeline and can filter, aggregate, sample, and route events before they hit Splunk's ingest pipeline. This is especially useful when you cannot modify forwarder configurations directly (e.g., third-party log sources or SaaS API ingestion). Cribl is widely used specifically for Splunk cost reduction. The trade-off is an additional infrastructure component to operate and license.

What Windows Event IDs are safe to drop entirely in most environments?

The safest to drop: 4634 (Logoff) in most detection use cases since you have the logon event; 4656 and 4658 (Object handle open/close) unless you have specific file access detection requirements; 4663 (Object access) at scale unless scoped to specific critical paths; 5156 and 5158 (Windows Filtering Platform connection permitted) if you have network flow data elsewhere; 4672 (Special privilege logon) in isolation, as it is redundant with 4624 when correlated. Never drop: 4625 (logon failure), 4648 (explicit credential use), 4688 (process creation) from servers, 4698/4699 (scheduled task create/delete), 4720/4732 (account/group changes), and all Kerberos failure events (4768 failure, 4771, 4776 failure).

How long does it take to see cost reduction results after implementing filtering?

Splunk Cloud billing is typically calculated on a rolling daily average over your contract period. Changes in ingest volume are visible in the Monitoring Console within hours of implementing forwarder-side drops. If you are on a capacity license (GB/day), you will see the daily average drop within the same billing cycle. If you are on a workload pricing model (compute units), the relationship between ingest reduction and billing is less direct. In both cases, expect to see measurable evidence of volume reduction within 24-48 hours of implementing filters, and billing impact in the next invoice cycle.

Sources & references

  1. Splunk Documentation: Data Volume Reduction
  2. SANS: Managing SIEM Data Costs

Free resources

25
Free download

Critical CVE Reference Card 2025–2026

25 actively exploited vulnerabilities with CVSS scores, exploit status, and patch availability. Print it, pin it, share it with your SOC team.

No spam. Unsubscribe anytime.

Free download

Ransomware Incident Response Playbook

Step-by-step 24-hour IR checklist covering detection, containment, eradication, and recovery. Built for SOC teams, IR leads, and CISOs.

No spam. Unsubscribe anytime.

Free newsletter

Get threat intel before your inbox does.

50,000+ security professionals read Decryption Digest for early warnings on zero-days, ransomware, and nation-state campaigns. Free, daily, no spam.

Unsubscribe anytime. We never sell your data.

Eric Bang
Author

Founder & Cybersecurity Evangelist, Decryption Digest

Cybersecurity professional with expertise in threat intelligence, vulnerability research, and enterprise security. Covers zero-days, ransomware, and nation-state operations for 50,000+ security professionals every morning.

Black Hat Giveaway

Win a $2,495 Black Hat pass.

Full-access to Black Hat USA 2026 in Las Vegas. Subscribe free to enter.

Joins Decryption Digest daily briefing. Unsubscribe anytime.

Giveaway: Black Hat USA 2026 Full-Access Pass ($2,495 value)

Details →
Daily Briefing

Subscribe to enter the giveaway

Every subscriber is automatically entered. You also get daily threat intel every morning: zero-days, ransomware, and nation-state campaigns. Free. No spam.

Already subscribed? You're already entered.

Giveaway

Win a $2,495 Black Hat USA 2026 pass.