Forwarders are essential in a distributed Splunk deployment, responsible for collecting and sending data to indexers. This guide explains forwarder types, configuration tasks, and best practices for setting them up effectively.
Splunk provides two main types of forwarders, each designed for specific use cases.
Overview:
Features:
Use Cases:
Overview:
Features:
Use Cases:
Properly configuring forwarders is critical for efficient data collection and forwarding.
outputs.confThe outputs.conf file specifies the destination indexers where the forwarder sends data.
Edit outputs.conf:
Specify the indexer’s IP address and port:
[tcpout]
defaultGroup = default-autolb-group
[tcpout:default-autolb-group]
server = 192.168.1.10:9997, 192.168.1.11:9997
autoLB = true
Key Settings:
server: Defines the indexer IPs and ports.autoLB: Enables load balancing across multiple indexers.Validate Configuration:
Restart the forwarder to apply changes:
./splunk restart
Check the connection status:
./splunk list forward-server
inputs.confThe inputs.conf file defines the data sources that the forwarder will monitor.
Monitor a File or Directory:
Example configuration:
[monitor:///var/log/app_logs/]
disabled = false
sourcetype = app_log
index = main
recursive = true
Enable Network Inputs:
Configure TCP or UDP inputs:
[tcp://514]
disabled = false
sourcetype = syslog
index = syslog_index
Test Inputs:
Restart the forwarder to start data collection:
./splunk restart
The Deployment Server is used to manage configurations for multiple forwarders.
Enable Deployment Client on Forwarders:
Edit deploymentclient.conf on the forwarder:
[deployment-client]
disabled = false
[target-broker:deploymentServer]
targetUri = deployment_server_ip:8089
Create Server Classes on Deployment Server:
Linux_Servers.Deploy Configurations:
inputs.conf) to the server class.Verify Deployment:
Check deployment status:
./splunk show deploy-clients
Enable SSL/TLS to encrypt data between forwarders and indexers:
Example configuration in outputs.conf:
[tcpout:default-autolb-group]
server = 192.168.1.10:9997
sslCertPath = $SPLUNK_HOME/etc/auth/server.pem
sslPassword = <password>
sslRootCAPath = $SPLUNK_HOME/etc/auth/ca.pem
useClientSSLCompression = true
Use the Monitoring Console to track forwarder status and throughput:
SPL Query:
index=_internal source=*metrics.log group=per_host_thruput
| stats sum(kbps) as throughput by host
Goal: Set up Universal Forwarders on multiple servers to collect system logs and forward them to a central Splunk indexer cluster.
Install Universal Forwarders:
Download and install the Universal Forwarder on each server:
wget -O splunkforwarder.tgz https://www.splunk.com/universalforwarder/download
tar -xvzf splunkforwarder.tgz
cd splunkforwarder/bin
./splunk start --accept-license
Configure outputs.conf:
Point the forwarders to the indexer cluster:
[tcpout]
defaultGroup = indexer_group
[tcpout:indexer_group]
server = 192.168.1.10:9997, 192.168.1.11:9997
autoLB = true
Add Input Sources:
Monitor system logs using inputs.conf:
[monitor:///var/log/]
disabled = false
sourcetype = syslog
index = system_logs
Restart the Forwarder:
./splunk restart
Verify Connectivity:
On the forwarder:
./splunk list forward-server
On the indexer, search for incoming data:
index=system_logs | stats count by host
Goal: Use a Heavy Forwarder to filter and mask sensitive data before forwarding it to indexers.
Set Up the Heavy Forwarder:
Install the full Splunk Enterprise instance on the designated server.
Configure it as a Heavy Forwarder by limiting its capabilities:
./splunk disable webserver
./splunk restart
Filter Data Using transforms.conf:
Add a rule to mask sensitive data:
[mask_sensitive_data]
REGEX = (\d{3}-\d{2}-\d{4})
FORMAT = XXX-XX-XXXX
DEST_KEY = _raw
Apply the Transformation in props.conf:
Link the transformation to the data source:
[sensitive_logs]
TRANSFORMS-mask = mask_sensitive_data
Forward Data to Indexers:
Configure outputs.conf:
[tcpout]
defaultGroup = indexer_group
[tcpout:indexer_group]
server = 192.168.1.10:9997, 192.168.1.11:9997
Test the Configuration:
Goal: Configure a Universal Forwarder to monitor application logs and send them to a specific index.
Edit inputs.conf:
[monitor:///opt/app/logs/]
disabled = false
sourcetype = app_log
index = app_logs
Restart the Forwarder:
./splunk restart
Verify Data in Splunk:
Run a search to ensure data is indexed:
index=app_logs sourcetype=app_log | stats count by host
Goal: Centrally manage configurations for multiple Universal Forwarders using a Deployment Server.
Enable Deployment Server:
On the Deployment Server:
./splunk enable deploy-server
Define a Server Class:
Create a class for Linux servers:
$SPLUNK_HOME/etc/system/local/serverclass.conf.[serverClass:Linux_Servers]
whitelist.0 = *.example.com
apps = linux_inputs
Create an App for Configuration:
Create an app named linux_inputs and include inputs.conf:
[monitor:///var/log/]
disabled = false
sourcetype = syslog
index = linux_logs
Deploy the Configuration:
Reload the Deployment Server:
./splunk reload deploy-server
Verify Deployment on Forwarders:
Check deployment status on the forwarders:
./splunk show deploy-clients
Cause:
outputs.conf or network connectivity issues.Solution:
Verify outputs.conf using btool:
splunk cmd btool outputs list --debug
Test connectivity to the indexer:
telnet <indexer_ip> 9997
Cause:
inputs.conf configuration or data not matching the sourcetype.Solution:
Verify inputs.conf using btool:
splunk cmd btool inputs list --debug
Check if the data is being indexed:
index=_internal source=*metrics.log group=per_host_thruput
Cause:
deploymentclient.conf configuration.Solution:
Verify deploymentclient.conf settings:
splunk cmd btool deploymentclient list --debug
Check the connection to the Deployment Server:
./splunk list deploy-clients
Forwarders are critical for collecting and transmitting data to Splunk indexers. This section expands on essential configurations and advanced management capabilities, particularly for large-scale, production-ready environments.
While configuration via CLI and configuration files is common, Splunk also offers a graphical interface to manage forwarders through the Forwarder Management feature.
Settings > Forwarder ManagementView connected forwarders with:
Hostname
IP Address
Last "phone home" timestamp
Group forwarders into server classes
Push apps (e.g., inputs.conf, outputs.conf) to multiple forwarders simultaneously
Monitor deployment health (missing clients, failed updates)
Deploying configurations via apps requires a clear directory structure, especially when using Deployment Server.
$SPLUNK_HOME/etc/deployment-apps/linux_inputs/
├── default/
│ └── inputs.conf
├── metadata/
│ └── default.meta
inputs.conf: Located in the default/ directory, contains input definitions
default.meta: Located in metadata/, defines file-level permissions and visibility
Do not place config files in the local/ directory when building deployment apps.
Include default.meta to ensure forwarders load the app securely and correctly.
Beyond basic encryption, Splunk supports mutual SSL to enhance security between forwarders and indexers.
One-way SSL: The client (forwarder) verifies the server’s certificate.
Mutual SSL: The server also verifies the client's certificate — a more secure handshake.
outputs.conf:[tcpout:secure_indexer_group]
server = indexer01.example.com:9997
sslCertPath = $SPLUNK_HOME/etc/auth/mycert.pem
sslRootCAPath = $SPLUNK_HOME/etc/auth/ca.pem
sslVerifyServerCert = true
sslCommonNameToCheck = indexer01.example.com
Forwarder must have a valid client certificate.
Indexer’s inputs.conf must be configured to accept and validate the client’s cert.
Monitoring forwarder performance is essential for proactive operations.
index=_internal source=*metrics.log group=thruput
| stats sum(kbps) as bandwidth by series
index=_internal source=*splunkd.log component=TcpOutputProc
| stats count by destIp status
| deploymentserver
| search latestTime < relative_time(now(), "-1h@h")
Expect scenario-based questions like:
“Which SPL identifies forwarders with connection failures?”
Memorizing key file paths is helpful for both troubleshooting and certification exams.
| File | Common Location | Purpose |
|---|---|---|
inputs.conf |
$SPLUNK_HOME/etc/system/local/ or $SPLUNK_HOME/etc/apps/<your_app>/default/ |
Configure data inputs |
outputs.conf |
Same as above | Configure forwarding destinations |
deploymentclient.conf |
$SPLUNK_HOME/etc/system/local/ or $SPLUNK_HOME/etc/apps/ |
Configures forwarder to connect to a Deployment Server |
Use Forwarder Management UI for large-scale forwarder deployment and monitoring.
Package deployment apps properly, placing inputs.conf in default/ and adding default.meta.
Enable mutual SSL for secure, two-way communication between forwarders and indexers.
Regularly monitor throughput, connection health, and deployment status using internal logs.
Familiarize yourself with config file locations — these often appear in multiple-choice and troubleshooting questions.
Which configuration file controls how a forwarder sends data to indexers or other forwarders?
outputs.conf
outputs.conf determines how the forwarder sends data to receiving Splunk instances, including indexers and, in some cases, other forwarders. Splunk’s documentation explicitly identifies it as the core forwarding configuration file. It belongs in a custom configuration location such as $SPLUNK_HOME/etc/system/local, and changes require a restart to take effect. Administrators often confuse inputs.conf and outputs.conf; the first controls collection, while the second controls forwarding destinations.
Demand Score: 83
Exam Relevance Score: 94
Which configuration file controls how the forwarder collects local data?
inputs.conf
Splunk documentation for Universal Forwarder configuration lists inputs.conf as the file that controls how the forwarder collects data. This file defines what the forwarder monitors or receives, while outputs.conf defines where that data is sent. The blueprint domain expects candidates to distinguish these roles clearly, because collecting data and forwarding data are separate configuration concerns.
Demand Score: 80
Exam Relevance Score: 92
Which configuration file is used to connect a forwarder to a deployment server?
deploymentclient.conf
deploymentclient.conf is the file used when configuring a Splunk instance, including a Universal Forwarder, as a deployment client. Splunk documentation lists it among the key configuration files for forwarders and uses it in deployment examples that point the forwarder at the deployment server. This file is about management connectivity, not data forwarding itself. That distinction matters on the exam because outputs.conf and deploymentclient.conf serve different purposes.
Demand Score: 76
Exam Relevance Score: 93
What CLI command enables an indexer to receive forwarded data on port 9997 in Splunk’s deployment example?
splunk enable listen 9997 -auth <username>:<password>
In Splunk’s documented deployment example for several forwarders, each receiving indexer is configured with the splunk enable listen 9997 -auth <username>:<password> command. This enables the receiving port so forwarders can send data to the indexer. A common mistake is configuring the forwarder’s outputs.conf correctly but forgetting to enable the receiving side on the indexer. Without both sides configured, data forwarding will fail.
Demand Score: 72
Exam Relevance Score: 90