Diagnosing and fixing issues across the data ingest pipeline
When data gaps appear in dashboards or alerts stop firing, the root cause can sit anywhere across a pipeline that spans multiple components, platforms, and teams. The Splunk platform ingests data through a predictable journey from the source where it's generated, through forwarders and parsers, to the indexer where it becomes searchable, and understanding that journey gives you a systematic path from symptom to fix.
This article walks through that diagnostic workflow stage by stage, then dives deeper into queue saturation, which is where ingestion issues most often accumulate. It applies to both Splunk Enterprise and Splunk Cloud Platform deployments that use forwarder-based pipelines.
Understanding the data flow
Regardless of how many components are in your pipeline, data always travels the same path:
- Data source. The data is generated at the origin, such as an application, a system log, or an API feed. This is outside the Splunk platform's direct control, but it's still part of your pipeline.
- Ingestion. A forwarder picks up the data and begins the collection process.
- Parsing. The data is broken into events, timestamps are extracted, and source types are applied.
- Indexing. The parsed events are written to an index and become available for search.
The components that fulfill these roles can vary. You might have universal forwarders sending directly to indexers, or a heavy forwarder acting as an intermediate tier between universal forwarders and the indexing layer. But the four-stage flow above doesn't change. When something breaks, working through each stage in order, starting from the data source and not from the Splunk platform, is the fastest way to locate the problem.
Identifying issues at each stage
Data source issues
Start here before looking at anything inside the Splunk platform. Ingestion problems are frequently caused by changes at the source that aren't visible in Splunk platform logs until significant delay has accumulated.
Check the following at the data source:
- Endpoint and port. Confirm the application is still sending data to the correct endpoint and port that the Splunk platform listens on.
- Upstream transformations. If a function or process transforms, filters, or routes events before they reach the Splunk platform, for example, a Lambda function in an AWS pipeline, verify that it's still running and hasn't changed its output format.
- Timestamp format. The Splunk platform uses timestamps to place events in time. If the source has changed its timestamp format (for example, from
MM/DD/YYYYtoDD/MM/YYYY), events will be indexed at the wrong time and appear in unexpected time ranges during search. - File permissions. If the Splunk platform is monitoring a file or directory, confirm that the forwarder process has read access. Permission changes during OS updates or deployments are a common cause of silent collection failures.
- API rate limits. If the Splunk platform is pulling data from an API, rate limits on the source API might be throttling or rejecting requests.
Forwarding issues
After the data source, check the forwarding tier. Most forwarding issues involve connectivity between components.
- Firewall rules. Confirm that firewall rules allow TCP connections between each forwarder and the next component in the pipeline (whether an intermediate heavy forwarder or the indexer). Firewall changes are frequently the cause of sudden, unexplained ingestion stops.
- Certificate issues. The Splunk platform uses TLS for communication between components. An invalid or expired certificate, or a network device that intercepts the connection and presents an untrusted certificate, will cause the connection to fail silently. The Splunk platform logs the connection failure but doesn't identify the certificate as the cause, so you might need to work with your network team to diagnose and resolve certificate trust issues.
- Credential packages (Splunk Cloud Platform only). Universal forwarders that connect to Splunk Cloud Platform indexers require a credential package to authenticate. These packages expire periodically.
- UDP versus TCP. The Splunk platform can receive data over both UDP and TCP. Because of UDP's connectionless nature, events can be lost before the Splunk platform knows they exist. Where possible, use TCP for more reliable data transfer.
When a forwarding connection fails, you'll see one of these messages in splunkd.log on the forwarder:
WARN AutoLoadBalancedConnectionStrategy [TcpOutEloop] - Cooked connection to ip=10.0.0.1:9997 timed out— the forwarder can't reach the next component at the specified IP address.WARN TcpOutputFd [TcpOutEloop] - Connect to 10.0.0.1:9997 failed. Connection refused— the forwarder can reach the next component, but that component isn't accepting connections. This might mean it's overwhelmed processing existing data or its input queue is full.
Parsing issues
Understanding where parsing happens in your pipeline is important for diagnosing parsing failures. Parsing occurs at the first Splunk platform instance the data passes through:
- If you're using a universal forwarder sending directly to indexers, parsing happens at the indexer.
- If a heavy forwarder is anywhere in the pipeline before the indexer, parsing happens at that heavy forwarder.
Common parsing issues include:
- Timestamp extraction failure. If the Splunk platform can't identify a timestamp in an event, it assigns the time the data was processed, either at the indexer or at the heavy forwarder. Searches scoped to an earlier time range will miss these events entirely.
- Incorrect event boundaries. If the Splunk platform can't determine where one event ends and the next begins, it might merge multiple log lines into a single event or split one event across multiple. Both distort search results.
- Event truncation. If an event exceeds the truncation limit configured for its source type, you'll see only a portion of the event in search results.
- Data routing. The Splunk platform can route events to different indexes or source types using
props.confandtransforms.conf. Misconfigured routing rules can silently drop events or send them to an unexpected index, making them invisible in the index you're searching.
Indexing issues
If data has reached the indexer but isn't appearing in searches as expected, check the following:
- Resource constraints. An indexer processing an unexpected burst of data, or running expensive searches at the same time as heavy ingestion, might delay indexing. Events will eventually appear, but not in real time.
- Searchable retention. Each index has a searchable retention period. If you're searching a time range that falls outside that period, results will be empty even if the data was indexed. Confirm your search time range is within the index's retention window.
- Knowledge object permissions. Knowledge objects such as lookups, event types, and field extractions can filter or transform events at search time. If a user doesn't have access to a knowledge object that the search depends on, those events won't appear in their results, even though the underlying data is indexed.
Diagnosing queue saturation
Inside each Splunk Enterprise instance (including heavy forwarders), data moves through an internal pipeline managed by queues. Understanding the state of these queues tells you whether data is flowing normally or backing up.
Data passes through queues in this order:
- Input queue — receives incoming data
- Parsing queue — breaks data into events
- Aggregation queue — assembles multi-line events
- Index queue (on indexers) — writes events to disk
- TCP out queue (on forwarders) — sends data to the next component
Universal forwarders don't have the full set of parsing and aggregation queues. Queue monitoring via metrics logs is most useful on heavy forwarders and indexers.
Monitoring queue depth with metrics logs
The Splunk platform writes queue statistics to metrics.log at regular intervals. Each queue entry includes:
group=queue— identifies the record as a queue metricname— the queue name (parsingQueue,aggQueue,indexQueue,tcpout_genericqueue, and so on)current_size— how much data is currently in the queuemax_size— the queue's configured capacityblocked— whether the queue is currently blocked from sending to the next stage
You can run a search against metrics.log to chart queue behavior over time:
index=_internal source=*metrics.log sourcetype=splunkd host=<hostname> (name=aggqueue OR name=indexqueue OR name=parsingqueue OR name=splunktcpin OR name=typingqueue OR name=*tcpout*)
| eval ingest_pipe=if(isnotnull(ingest_pipe),ingest_pipe,"none")
| search ingest_pipe=*
| eval max=if(isnotnull(max_size_kb),max_size_kb,max_size), curr=if(isnotnull(current_size_kb),current_size_kb,current_size),
fill_perc=round(((curr / max) * 100),2)
| timechart minspan=30s p90(fill_perc) by name useother=false limit=15
The charts in the following sections below show the four queue saturation states you might see when running this search. Select each state to see what it looks like and what to do.
- ► Low saturation — healthy baseline
-

Queue
current_sizestays well belowmax_size. You might seeblocked=trueoccasionally, but the queue recovers quickly. This is normal behavior under any load.There's no backlog and no ingestion delay. The instance has spare capacity to absorb spikes in data volume.
- ► Busy but healthy
-

Queue
current_sizeis closer tomax_size, and you might see more frequentblocked=trueentries. As long as data is still flowing through without delay, this is not a problem.Monitor this state if you're planning to increase data volume. If the forwarder is already running near capacity, an increase in volume might push it into saturation.
- ► Saturated with throughput
-

Queues are at or near 100% capacity.
blocked=trueis constant. You're seeing ingestion delay and data is not arriving in real time. However, data is still flowing out, and CPU and memory on the instance are not maxed out.This pattern often means the instance is being throttled. Universal forwarders have a default outbound throughput limit of 256 KBps (
maxKBps = 256). If the forwarder is consistently sending at or near this rate, you'll see this saturation pattern even though the instance has available capacity. Checkmetrics.logfor throughput records to confirm.The throughput limit is configured in
limits.confunder the[thruput]stanza, not inoutputs.conf. To increase the limit, create or updatelimits.confwith[thruput]/maxKBps = <value>. Heavy forwarders and indexers default to unlimited (maxKBps = 0). For more information, see the troubleshooting information in Event indexing delay.When the limit is hit, you'll see this in
splunkd.log:Current data throughput (### kb/s) has reached maxKBps. As a result, data forwarding may be throttled. Consider increasing the value of maxKBps in limits.conf
When the saturated queue is blocking data from reaching the parsing queue, you might also see:
WARN TailReader [tailreader0] - Could not send data to output queue (parsingQueue), retrying...
If increasing the throughput limit doesn't resolve the saturation, you can also increase the queue's
maxSize. Be aware that larger queues consume more memory, so confirm that the instance has the available memory before making this change.You can also increase the number of parallel ingestion pipelines to process more data concurrently. This increases CPU usage, so follow the guidelines for your deployment before raising this value.
For more guidance on these settings, see Performance tuning the forwarding tier.
- ► Saturated without throughput
-

Queues are at or near 100% capacity, throughput has collapsed to zero, and CPU and memory on the instance are maxed out. Data has stopped flowing entirely.
This state indicates the instance doesn't have enough capacity to handle the current data volume. Consider scaling the instance vertically (more CPU and memory) or adding additional forwarders to distribute the load.
Example: TCP out queue blocked by firewall
The following example shows how queue metrics and connection logs work together in a real incident.
A forwarder was configured to send data to three output groups. Data was flowing successfully to one output group, events were visible in the corresponding index, but visible not to the other two groups. After a few minutes, data stopped flowing to all three output groups, including the one that had been working.
A diagnostic file collected from the forwarder showed the following in metrics.log:
- The TCP out queue was at 100% capacity and
blocked=true. - The parsing queue, unable to drain into the blocked TCP out queue, also began filling and became blocked.

In splunkd.log, two indicators were present:
WARN AutoLoadBalancedConnectionStrategy [TcpOutEloop] - Cooked connection to ip=<output_server>:9997 timed out— confirming a connectivity failure, not a queue configuration problem.WARN The TCP output processor has paused the data flow. Forwarding to host_dest=<output_server> inside output group <output_group_name> from host_src=<source_host> has been blocked for blocked_seconds=1300.— the pause duration had grown to over 20 minutes.
Connectivity testing confirmed that the servers in the two failing output groups were unreachable. A firewall rule change had blocked the connections. After working with the network team to allow the connections, data flow restored and all three output groups began receiving events.
When one output group in a forwarder is unreachable, the TCP out queue can eventually back up enough to block all output groups, including ones that were working. If data flow stops suddenly across multiple destinations, check for a connectivity failure even if some destinations appeared healthy at first.
Next steps
Now that you are ready to disgnose and fix issues across the data ingest pipeline, watch the full talk from Cisco Live Las Vegas 2026, Diagnosing data flow anomalies in Splunk ingestion pipelines - TACOBS-2001. In the talk, you'll learn more on how to interpret the data flow behavior, identify common ingestion issues, and apply practical steps to investigate delays, gaps and unexpected data in ingestion pipelines.
You might also find the following resources useful for implementing the guidance in this article:
- Splunk Lantern Article: Troubleshooting data not coming in from a Universal Forwarder
- Splunk Lantern Article: Performance tuning the forwarding tier
- Splunk Lantern Article: Improving data pipeline processing in Splunk Enterprise
- Splunk Help: Troubleshoot events indexing delay
- Splunk Help: Identify and triage indexing performance problems

