Splunk is a highly configurable platform. Almost every feature in Splunk—inputs, indexing, search behavior, limits, and user roles—is controlled through configuration files. These settings define how Splunk behaves across different components and use cases.
All configuration files in Splunk are located under the $SPLUNK_HOME/etc/ directory. These files are written in key-value pair format, similar to:
[stanza]
setting1 = value1
setting2 = value2
Each .conf file controls a specific area of Splunk functionality. These are not JSON or XML—they follow Splunk’s own format.
Example:
[monitor:///var/log/apache/access.log]
sourcetype = access_combined
index = web
Splunk organizes configuration files into a layered directory structure, which helps manage global, app-specific, and user-specific settings separately.
Location: $SPLUNK_HOME/etc/system/
default/: Contains factory settings provided by Splunk. Do not edit this folder.
local/: Contains your overrides to system-level configurations. This folder has the highest priority among system-level files.
Location: $SPLUNK_HOME/etc/apps/<app_name>/
Each app installed in Splunk has:
default/: App-supplied settings
local/: Custom settings or overrides created by users or administrators
Apps may define inputs, field extractions, dashboards, and more, and are self-contained.
Location: $SPLUNK_HOME/etc/users/<username>/<app_name>/
These are user-specific overrides.
Useful for custom dashboards, saved searches, or UI preferences.
Splunk must decide which configuration value to use when the same setting is defined in multiple locations. This is controlled by a well-defined precedence hierarchy.
local/ always overrides default/.User’s app local/
User’s app default/
App local/
App default/
System local/
System default/
This hierarchy ensures that user-level settings override everything else, and that defaults are only used when no override is defined.
btoolThe btool command is used to inspect the merged configuration and identify the source of a setting.
Example:
splunk btool inputs list --debug
This shows which files contribute to the final input configuration and their file paths.
Below are some of the most frequently used .conf files in Splunk:
inputs.confDefines how and where Splunk ingests data.
Includes file monitoring, network ports, scripted inputs, etc.
Example:
[monitor:///var/log/messages]
disabled = false
index = os
props.confControls data parsing, including:
Field extractions
Timestamp rules
Line breaking behavior
Example:
[source::.../apache/access.log]
sourcetype = access_combined
transforms.confWorks with props.conf for event transformation.
Used for:
Routing events
Masking sensitive fields
Extracting custom fields
outputs.confDefines how data is forwarded to other Splunk instances (usually Indexers).
Key in Universal Forwarder or Heavy Forwarder configuration.
indexes.confDefines index settings, such as:
Index names
Retention policies
Storage paths
limits.confSets system-wide limits:
Maximum search time
Number of concurrent searches
Memory thresholds
In large environments, managing hundreds or thousands of Universal Forwarders manually is inefficient. The Deployment Server allows centralized configuration management for forwarders.
Server Classes: Logical groups of forwarders based on criteria like hostnames or IP ranges.
Deployment Apps: Configuration packages (e.g., inputs.conf) that get pushed to clients.
Clients: Forwarders that are registered to receive updates.
deploymentclient.conf: Placed on the forwarder to define its connection to the deployment server.
serverclass.conf: Placed on the Deployment Server to define client groups and app assignments.
Following best practices for configuration management ensures stability, flexibility, and ease of scaling.
default/These files may be overwritten during upgrades.
Always place custom settings in the local/ directory.
Store configuration files in Git or another version control system.
Track changes and enable rollbacks when needed.
Build custom apps for each type of function:
One for inputs
One for parsing rules
One for dashboards
Modular apps make migration and upgrades easier.
Create a test environment that mirrors production.
Validate all configurations before pushing them live.
| Topic | Key Takeaway |
|---|---|
| File Structure | Uses .conf files in $SPLUNK_HOME/etc/ |
| Directory Hierarchy | Organized into system, app, and user levels |
| Precedence Rules | local/ overrides default/; user settings take highest priority |
| Key Config Files | Include inputs.conf, props.conf, transforms.conf, and more |
| Deployment Server | Central management for Universal Forwarders via server classes |
| Best Practices | Never edit defaults; use Git; test before production |
outputs.confThe outputs.conf file is essential for configuring how data is forwarded from a Universal or Heavy Forwarder to Indexers. It’s a commonly tested area, especially in questions about data routing and load balancing.
indexer:
Specifies the address (hostname or IP) of a target indexer.
Example:indexer = 10.1.1.5:9997
server:
Specifies one or more target indexers (deprecated in favor of group and indexer in newer versions).
group:
Used to define logical sets of indexers to load balance across.
Example:group = defaultGroup
autoLBFrequency:
Controls how often (in seconds) the forwarder switches between indexers in a group.
Default is 30.
Example:autoLBFrequency = 60
useACK (for reliable delivery with Indexer Acknowledgment):
Ensures that events are acknowledged by the indexer before being removed from the forwarder's queue.useACK = true
You might be asked:
"Which setting controls how often a forwarder rotates between indexers?"
Correct Answer: autoLBFrequency
In larger environments, Splunk encourages a modular and layered design for apps. This structure supports reusability, upgradeability, and configuration clarity.
TA_app_input:
Responsible for input definitions only, such as inputs.conf.
Example: Collect logs from a specific source.
TA_app_parse:
Contains parsing logic, such as props.conf and transforms.conf.
Used for field extractions, sourcetypes, masking.
SA_common (Shared App):
Common definitions like macros, lookups, and calculated fields that can be used by other apps.
These names follow Splunk’s Technology Add-on (TA) and Supporting Add-on (SA) conventions.
Questions may ask:
"Which layer of an app should include props.conf transformations?"
Answer: TA_app_parse
conf.spec Files and Configuration PrecedenceEvery .conf file in Splunk is governed by an associated .spec file located in $SPLUNK_HOME/etc/system/README/.
Defines all legal stanzas and fields for that .conf file.
Serves as the blueprint for what the config engine expects.
Helps validate syntax and detect unsupported configurations.
Example: inputs.conf.spec, props.conf.spec
Although .spec files are not loaded at runtime, they define the expected field types, default values, and precedence rules.
This is important for administrators who build custom apps or need deep visibility into config resolution.
This may appear as a "select the most accurate statement" type question, such as:
"What is the purpose of a .spec file in Splunk?"
Answer: To define the legal structure and precedence of configuration fields.
deploymentclient.confThe deploymentclient.conf file is placed on Universal Forwarders (UFs) to connect them to a Deployment Server (DS) for centralized configuration management.
targetUri:
The address (host:port) of the Deployment Server.
Example: targetUri = ds01.company.com:8089
clientName:
A human-readable name for the forwarder (optional).
Useful for filtering or targeting in serverclass.conf.
phoneHomeIntervalInSecs:
Controls how frequently the forwarder contacts the Deployment Server.
Example: phoneHomeIntervalInSecs = 300
[deployment-client]
targetUri = ds01.company.com:8089
clientName = web01_forwarder
phoneHomeIntervalInSecs = 600
Questions may test your understanding with:
"Which field in deploymentclient.conf specifies how often the forwarder contacts the Deployment Server?"
Answer: phoneHomeIntervalInSecs
outputs.conf: Know how group, indexer, and autoLBFrequency define data routing and load balancing behavior.
App modularization: Recognize and apply naming conventions like TA_app_input, TA_app_parse, SA_common.
.spec files: Understand they define config structure and legal fields — helpful in identifying misconfigurations.
deploymentclient.conf: Key to linking forwarders with the DS, especially through fields like targetUri and clientName.
What is the primary purpose of the Splunk deployment server?
The deployment server centrally manages configuration and app distribution for Splunk forwarders.
Administrators use the deployment server to distribute configuration files and apps to large numbers of Universal Forwarders. Forwarders periodically check in with the deployment server to determine whether new configuration bundles are available. If updates exist, the forwarder downloads and applies them automatically. This centralized management simplifies large-scale configuration changes across distributed infrastructure.
Demand Score: 75
Exam Relevance Score: 80
Why might a forwarder fail to receive configuration updates from the deployment server?
A forwarder may fail to receive updates if it cannot successfully check in with the deployment server.
Forwarders must periodically connect to the deployment server to retrieve configuration updates. If network connectivity fails or the deployment server address is incorrectly configured in deploymentclient.conf, the forwarder cannot retrieve updates. Another common cause is mismatched server classes or app targeting rules, which prevent the deployment server from assigning the configuration bundle to that forwarder. Troubleshooting usually involves verifying connectivity, reviewing deployment server logs, and confirming correct server class configuration.
Demand Score: 72
Exam Relevance Score: 78
What is a server class in Splunk deployment server configuration?
A server class defines a group of forwarders that receive a specific configuration or app.
Server classes allow administrators to target configuration updates to specific groups of forwarders based on attributes such as hostname, machine type, or deployment role. Each server class can contain one or more apps that will be distributed to all forwarders matching its criteria. This grouping mechanism enables efficient configuration management across large environments with different system roles.
Demand Score: 71
Exam Relevance Score: 79
Why is the deployment server typically not used for indexers or search heads?
Indexer and search head configurations require different distribution mechanisms designed for clustered environments.
Deployment server is optimized for managing forwarder configurations. Indexer clusters and search head clusters use specialized mechanisms such as cluster manager bundles or deployer distribution to maintain configuration consistency across cluster members. Using deployment server for these components could lead to configuration conflicts and inconsistent cluster states.
Demand Score: 73
Exam Relevance Score: 82