Managing forwarders effectively is critical in large-scale Splunk deployments. Forwarders are responsible for collecting and sending data to indexers, and proper management ensures efficient and secure data ingestion. This guide covers centralized management, forwarder monitoring, and optimization techniques.
The Deployment Server is a centralized tool for managing configurations across multiple forwarders. It simplifies tasks such as deploying apps, updating inputs, and managing settings.
inputs.conf or outputs.conf in apps.Enable Deployment Server:
On the Splunk instance designated as the Deployment Server:
./splunk enable deploy-server
Define Server Classes:
File path: $SPLUNK_HOME/etc/system/local/serverclass.conf.
Example configuration:
[serverClass:Linux_Forwarders]
whitelist.0 = *.linux.example.com
apps = linux_app
[serverClass:Windows_Forwarders]
whitelist.0 = *.windows.example.com
apps = windows_app
Create Deployment Apps:
Store configurations for each server class in $SPLUNK_HOME/etc/deployment-apps/.
Example app structure for linux_app:
linux_app/
├── local/
│ └── inputs.conf
└── default/
└── app.conf
Deploy Configurations:
Reload the Deployment Server to push changes:
./splunk reload deploy-server
Verify Deployment:
Check the status of forwarders connected to the Deployment Server:
./splunk show deploy-clients
inputs.conf in the app and redeploy it to forwarders.outputs.conf to ensure all forwarders point to the correct indexers.The Monitoring Console in Splunk provides tools to track the status, performance, and health of forwarders.
Connection Status:
Ensure all forwarders are connected to the indexer.
Use the SPL query:
index=_internal source=*metrics.log group=forwarder
| stats count by hostname, status
Throughput:
Monitor the volume of data each forwarder sends.
SPL query:
index=_internal source=*metrics.log group=per_host_thruput
| stats sum(kbps) as throughput by host
Latency:
Access the Monitoring Console:
Check Forwarder Connections:
Track Resource Usage:
Efficient forwarder management reduces resource consumption, improves data flow, and ensures configurations are error-free.
Minimize Inputs:
Disable unnecessary inputs in inputs.conf:
[monitor:///var/log/unnecessary.log]
disabled = true
Batch Data Processing:
Use throttling for high-volume inputs:
[monitor:///var/log/large.log]
readFrequency = 300
Use Compression:
Enable compression for forwarded data in outputs.conf:
[tcpout]
compressed = true
Regular audits help identify misconfigurations or outdated settings.
List Forwarder Configurations:
Use btool to verify active configurations:
splunk cmd btool inputs list --debug
Check Forwarder Logs:
Review internal logs for errors:
grep -i "error" $SPLUNK_HOME/var/log/splunk/splunkd.log
Verify Indexer Connections:
Ensure all forwarders are correctly forwarding data:
./splunk list forward-server
Maintain backups of forwarder configurations to streamline recovery in case of failures.
Export Configurations:
Archive all deployment apps from the Deployment Server:
tar -cvzf deployment-apps-backup.tgz $SPLUNK_HOME/etc/deployment-apps/
Automate Backup Scheduling:
Cause:
outputs.conf configuration or network issues.Solution:
Check connectivity:
telnet <indexer_ip> 9997
Verify outputs.conf:
splunk cmd btool outputs list --debug
Cause:
inputs.conf or disabled inputs.Solution:
Check input status:
splunk cmd btool inputs list --debug
Review the splunkd.log for errors.
Server classes in the Deployment Server can be fine-tuned to meet specific requirements.
Whitelist and Blacklist Rules:
Configuration Per App:
Define Whitelist and Blacklist Rules:
Example serverclass.conf:
[serverClass:Web_Servers]
whitelist.0 = web*.example.com
blacklist.0 = web2.example.com
apps = web_server_inputs
[serverClass:Database_Servers]
whitelist.0 = db*.example.com
apps = database_inputs
Create Apps for Each Server Class:
Web Server App (web_server_inputs):
[monitor:///var/log/nginx/]
disabled = false
sourcetype = nginx_logs
index = web_logs
Database Server App (database_inputs):
[monitor:///var/log/db/]
disabled = false
sourcetype = db_logs
index = db_logs
Deploy Configurations:
Reload the Deployment Server:
./splunk reload deploy-server
Verify Forwarder Assignments:
Check which apps are applied to each forwarder:
./splunk show deploy-clients
Organizing forwarder configurations into modular apps improves scalability and maintainability.
Create Modular Apps:
Example directory structure:
deployment-apps/
├── linux_inputs/
│ ├── local/
│ │ └── inputs.conf
├── windows_inputs/
│ ├── local/
│ │ └── inputs.conf
└── outputs/
├── local/
│ └── outputs.conf
Deploy Apps:
serverclass.conf.Benefits:
Scaling involves managing hundreds or thousands of forwarders efficiently while ensuring consistent data ingestion and minimal resource usage.
Distribute data ingestion evenly across multiple indexers.
Configure Load Balancing in outputs.conf:
Example:
[tcpout]
defaultGroup = indexer_group
[tcpout:indexer_group]
server = indexer1.example.com:9997, indexer2.example.com:9997, indexer3.example.com:9997
autoLB = true
Monitor Balancing:
Use the Monitoring Console to check ingestion distribution:
index=_internal source=*metrics.log group=per_host_thruput
Intermediate forwarders act as a bridge between Universal Forwarders and indexers.
Configure Intermediate Forwarders:
Example outputs.conf:
[tcpout]
defaultGroup = intermediate_forwarder_group
[tcpout:intermediate_forwarder_group]
server = intermediate1.example.com:9997, intermediate2.example.com:9997
Configure Intermediate Forwarders to Point to Indexers:
Example outputs.conf on intermediate forwarder:
[tcpout]
defaultGroup = indexer_group
[tcpout:indexer_group]
server = indexer1.example.com:9997, indexer2.example.com:9997
Enable acknowledgment to ensure data is successfully indexed before being removed from forwarder queues.
Enable Acknowledgment in outputs.conf:
[tcpout]
useACK = true
Monitor Acknowledgment Performance:
Check for delays or failures using internal metrics:
index=_internal source=*metrics.log group=queue
A multinational company needs to collect logs from multiple regions and ensure data is ingested into geographically distributed Splunk indexers.
Regional Deployment Servers:
Intermediate Forwarders:
Monitor Globally:
A healthcare provider needs to mask sensitive data (e.g., patient information) before sending logs to indexers.
Deploy Heavy Forwarders:
Configure Masking Rules:
Example transforms.conf:
[mask_sensitive_data]
REGEX = (\d{3}-\d{2}-\d{4})
FORMAT = XXX-XX-XXXX
DEST_KEY = _raw
Apply Rules in props.conf:
[sensitive_logs]
TRANSFORMS-mask = mask_sensitive_data
Test Masking:
Cause: Server class misconfiguration or connection issues.
Solution:
Check serverclass.conf for errors:
splunk cmd btool serverclass list --debug
Verify forwarder connection to the Deployment Server:
./splunk show deploy-clients
Cause: Network bottlenecks or overloaded forwarders.
Solution:
Monitor queue usage on forwarders:
index=_internal source=*metrics.log group=queue
Enable compression in outputs.conf to reduce bandwidth usage:
[tcpout]
compressed = true
Cause: Firewall rules or incorrect outputs.conf settings.
Solution:
Test connectivity to indexers:
telnet <indexer_ip> 9997
Validate outputs.conf:
splunk cmd btool outputs list --debug
inputs.conf and outputs.conf.Effective forwarder management is critical for maintaining a scalable, secure, and observable Splunk environment—especially when managing hundreds or thousands of Universal Forwarders (UFs). This section expands on essential topics including license implications, visual monitoring, and advanced use cases with intermediate forwarders.
Forwarders themselves do not require a license to operate.
However, any data sent by a forwarder to an indexer is subject to license usage on the receiving end.
The license usage is tracked at the indexing tier, not at the forwarder tier.
Even though forwarders are "free," they contribute to the daily license volume.
Misconfigured or overly verbose forwarders can cause license violations if not properly filtered.
Monitor license usage using:
index=_internal source=*license_usage.log* type=Usage
| stats sum(b) as bytes by host, pool
| eval MB=round(bytes/1024/1024,2)
Regularly audit high-volume forwarders for unnecessary data.
"Which of the following requires a Splunk license?" Correct answer: "Indexers receiving data from forwarders."
While CLI commands such as splunk display deploy-clients offer insights, Splunk Web provides a more intuitive GUI for monitoring and managing forwarders.
Settings > Forwarder Management (only available if the instance is acting as a Deployment Server)View:
Number of connected forwarders
Forwarder hostname, IP, and "last phone home" timestamp
Group forwarders into server classes
View and troubleshoot deployment status per client
Push updates to apps and configurations
Search, filter, and export deployment data
Use tags, hostnames, or IP ranges to logically group forwarders.
Set up alerts for inactive or stale clients using scheduled searches.
splunk display deploy-clients
Useful for quick checks, but lacks visual grouping and filterability.
Intermediate forwarders act as relays between edge forwarders and indexers, providing scalability, preprocessing, and network isolation.
Besides load balancing and queueing, intermediate forwarders can also filter and route data using configuration files.
props.conf and transforms.conf can be applied on intermediate forwarders to:
Mask sensitive fields
Drop unwanted data (e.g., nullQueue)
Route data to different indexers or indexer groups
Goal: Route production logs to different indexers based on application name.
props.conf:
[app_logs]
TRANSFORMS-routing = route_app_logs
transforms.conf:
[route_app_logs]
REGEX = app_name=(web|api)
DEST_KEY = _TCP_ROUTING
FORMAT = group_app_cluster
outputs.conf:
[tcpout:group_app_cluster]
server = indexer1.prod:9997,indexer2.prod:9997
Enforces data sovereignty or compliance by directing logs to specific destinations.
Reduces load on indexers by dropping unnecessary logs early.
| Topic | Summary |
|---|---|
| Forwarders & Licensing | Forwarders are free; licensing applies at the indexer level. |
| Forwarder Monitoring (GUI) | Settings > Forwarder Management offers a centralized view of all connected forwarders and their status. |
| Intermediate Forwarders | Can apply props.conf and transforms.conf for data routing, masking, and filtering before indexing. |
Don’t assume forwarders are “zero-impact.” Monitor their data volume regularly to avoid license breaches.
Use the GUI for forwarder fleet visibility. It’s more scalable and human-readable than CLI.
Leverage intermediate forwarders for preprocessing, filtering, and routing—especially in large, segmented environments.
Validate your deployment with logs:
index=_internal source=*splunkd.log* component=DeploymentClient
What is the primary purpose of a Splunk Deployment Server?
To centrally manage and distribute configuration apps to Splunk forwarders.
A Deployment Server provides centralized management of large numbers of forwarders in a Splunk environment. Instead of manually configuring each forwarder, administrators create deployment apps that contain configuration files such as inputs.conf, outputs.conf, and props.conf. These apps are stored on the Deployment Server and distributed to forwarders that are configured as deployment clients. This mechanism ensures consistent configurations across thousands of systems. A common misunderstanding is assuming the Deployment Server manages indexers or search heads; however, it specifically targets forwarders and other deployment clients.
Demand Score: 88
Exam Relevance Score: 94
Which configuration file is used on a forwarder to define its connection to a Deployment Server?
deploymentclient.conf.
The deploymentclient.conf file is used to configure a Splunk instance as a deployment client. This configuration specifies the Deployment Server that the forwarder contacts to retrieve configuration updates. The key setting inside the [target-broker:deploymentServer] stanza defines the Deployment Server’s management URI, usually including the hostname and port 8089. After the forwarder is configured as a deployment client, it periodically checks in with the Deployment Server to determine whether new or updated apps should be downloaded and applied. Incorrect server URIs or firewall restrictions commonly prevent the forwarder from connecting successfully.
Demand Score: 85
Exam Relevance Score: 92
Which configuration file on the Deployment Server controls which apps are sent to specific groups of forwarders?
serverclass.conf.
The serverclass.conf file defines server classes that determine how deployment apps are distributed to clients. Each server class contains rules that match forwarders based on attributes such as hostname, machine type, or other criteria. Once a forwarder matches a server class, the apps associated with that class are automatically deployed to it. This allows administrators to apply different configurations to different groups of forwarders without manually managing each system. If the server class rules are incorrect or too restrictive, forwarders may fail to receive the expected deployment apps.
Demand Score: 84
Exam Relevance Score: 93
What directory on the Deployment Server stores deployment apps that are distributed to forwarders?
$SPLUNK_HOME/etc/deployment-apps.
Deployment apps are stored in the deployment-apps directory within the Splunk installation. Each app directory contains configuration files that define inputs, outputs, parsing rules, or other settings that should be applied to forwarders. When a deployment client checks in with the Deployment Server, it compares its current configuration with the available apps. If a new or updated app applies to the client’s server class, the forwarder downloads the app and installs it locally. Maintaining a clear directory structure within the deployment-apps directory helps administrators manage configuration updates more efficiently.
Demand Score: 81
Exam Relevance Score: 91
What command can be used on a forwarder to immediately check for updates from the Deployment Server?
splunk reload deploy-client.
Normally, deployment clients periodically check the Deployment Server for updates according to the configured polling interval. However, administrators may want a forwarder to check immediately after configuration changes are made on the Deployment Server. The splunk reload deploy-client command forces the forwarder to contact the Deployment Server and retrieve any applicable deployment apps. This command is useful when testing new deployment configurations or troubleshooting situations where forwarders appear to be delayed in receiving updates. It avoids waiting for the scheduled polling interval.
Demand Score: 77
Exam Relevance Score: 88
What is a common reason a forwarder connects to a Deployment Server but does not receive any apps?
The forwarder does not match any server class defined in serverclass.conf.
Even if a forwarder successfully connects to the Deployment Server, it will not receive any deployment apps unless it matches at least one server class rule. Server classes define targeting criteria such as hostnames, machine types, or custom attributes. If these matching rules are too restrictive or incorrectly configured, the forwarder will check in but no apps will be assigned to it. Administrators typically verify this by reviewing the Deployment Server logs and checking whether the forwarder appears in the expected server class. Adjusting the server class rules usually resolves the issue.
Demand Score: 76
Exam Relevance Score: 90