3.2 Configuration Layering, Precedence & Resolution Rules

Key Takeaways

  • Global-context files (inputs, outputs, indexes, server, and similar) resolve as system local > app local > app default > system default.
  • In the global context, ties between apps at the same tier go to the app whose directory name sorts first lexicographically; uppercase sorts before lowercase and digits before letters.
  • App/user-context settings (searches, knowledge objects) resolve as current user > current app (local, then default) > other apps with exported settings (reverse-lexicographic) > system local > system default.
  • Splunk merges settings attribute by attribute: each key comes from the highest-priority file that sets it, and settings in a [default] stanza fill in anything left unset.
  • Indexer cluster peers add peer-apps directories: peer-apps local outranks even system local, and peer-apps default sits above app default.
Last updated: September 2026

Configuration Layering, Precedence & Resolution Rules

One of the most powerful architectural features of Splunk Enterprise is its layered configuration model. Multiple applications, add-ons, and system files can define settings for the exact same stanza simultaneously. When the splunkd daemon initializes or executes a task, it dynamically merges these disparate files into a single, cohesive, effective runtime configuration.

To manage this layering reliably, Splunk enforces deterministic precedence hierarchies. The exact sequence of precedence depends entirely on whether a configuration setting is evaluated within the Global context or the App and User context.


The Two Configuration Contexts

Splunk configuration files are partitioned into two distinct evaluation contexts based on the operational subsystem requiring the configuration:

Configuration Context Boundary
├── Global Context (System, Indexing, Inputs, Forwarding)
│   └── Evaluated independent of UI sessions, user identities, or active apps.
│       Governs background daemons, network ports, index storage, and ingestion.
│
└── App and User Context (Search Time & Knowledge Objects)
    └── Evaluated within a user session and active application framework.
        Governs dashboards, saved searches, event types, field extractions, and tags.

1. Global Context

Global context applies to background daemon processes, data ingestion pipelines, indexing operations, forwarder egress, and system administration. These activities affect the Splunk instance as an entire operating unit, independent of who is logged into Splunk Web or which application view is active.

Key files operating in the Global context include:

  • server.conf (clustering, licensing, daemon identity)
  • inputs.conf (file monitors, network listening ports, modular inputs)
  • outputs.conf (forwarder destination groups, load balancing)
  • indexes.conf (index definitions, bucket paths, retention)
  • authentication.conf (LDAP, SAML, user accounts)
  • authorize.conf (role definitions and capabilities)
  • distsearch.conf (search peer communication)
  • web.conf (Splunk Web server configuration)

2. App and User Context

App and User context applies to search activities, user interfaces, and knowledge objects. When a user runs a search or loads a dashboard, Splunk evaluates configurations based on who is running the search and where (in which app) the search is executing.

Key files operating in the App/User context include:

  • savedsearches.conf (reports, alerts, scheduled searches)
  • eventtypes.conf (event classifications)
  • tags.conf (field tags)
  • macros.conf (search macros)
  • collections.conf (KV Store collections)
  • Search-time aspects of props.conf and transforms.conf (search-time field extractions, lookups, calculated fields)

Global Context Precedence Hierarchy

When splunkd evaluates configurations in the Global context, it follows a strict four-tier precedence hierarchy. Higher-numbered tiers override lower-numbered tiers:

Precedence RankDirectory TierPath on DiskArchitectural Description
1 (Highest)System local$SPLUNK_HOME/etc/system/local/Host-specific system administrative overrides.
2App local$SPLUNK_HOME/etc/apps/<app_name>/local/App-specific customizations and local administrator edits.
3App default$SPLUNK_HOME/etc/apps/<app_name>/default/Packaged app defaults and Technology Add-on baselines.
4 (Lowest)System default$SPLUNK_HOME/etc/system/default/Factory baseline configuration shipped with Splunk.
Global Precedence Order:
System local  -->  App local  -->  App default  -->  System default
[HIGHEST]                                            [LOWEST]

Conflict Resolution Between Competing Apps (Lexical Ordering)

In an enterprise environment, many apps and add-ons live in $SPLUNK_HOME/etc/apps/. What happens when two apps set the same attribute in the same stanza of a global-context file such as inputs.conf or indexes.conf?

First, all app local directories outrank all app default directories. Within the app local tier (or within the app default tier), Splunk breaks ties by the lexicographical (ASCII/UTF-8) order of the app directory names, and the name that sorts first wins:

  • Numbers sort before letters and are compared character by character: myapp1 > myapp10 > myapp2 > myapp20.
  • Uppercase letters sort before lowercase letters. Z outranks a, so any app named with an uppercase first letter outranks apps named in lowercase.

[!IMPORTANT] In the global context, when two apps set the same attribute at the same tier (for example, both in local/), the app whose directory name comes first in lexicographical order wins. In the app/user context the order is reversed. There, other apps are evaluated in reverse-lexicographical order, and only for exported settings.

For example, suppose both etc/apps/Splunk_TA_nix/local/inputs.conf and etc/apps/custom_inputs/local/inputs.conf set a different index for [monitor:///var/log/messages]. Uppercase S (0x53) sorts before lowercase c (0x63), so Splunk_TA_nix comes first and its value wins in the global context.

Administrators use this to force an outcome deliberately. A site-wide override app named with a leading digit, such as 000_corp_overrides, sorts ahead of alphabetic app names, so its global-context settings win ties against them. A name like zzz_... would lose.

Expanded Order on Indexer Cluster Peers

Indexer cluster peers add a directory type for configuration that the cluster manager distributes. On a peer, the global-context order is: peer-apps local > system local > app local > peer-apps default > app default > system default. The cluster manager pushes common peer configuration from $SPLUNK_HOME/etc/manager-apps/ (formerly master-apps/) into $SPLUNK_HOME/etc/peer-apps/ (formerly slave-apps/).


App and User Context Precedence Hierarchy

When a search executes or a knowledge object is referenced, Splunk evaluates configurations through the App and User context. In this context, user customization takes precedence over app defaults, and current app settings take precedence over external apps:

Precedence RankDirectory TierPath on DiskScope
1 (Highest)User local$SPLUNK_HOME/etc/users/<username>/<app>/local/Private knowledge objects for the current user.
2App local$SPLUNK_HOME/etc/apps/<current_app>/local/Local customizations within the active app.
3App default$SPLUNK_HOME/etc/apps/<current_app>/default/Shipped defaults within the active app.
4Other apps (local)$SPLUNK_HOME/etc/apps/<other_apps>/local/Exported (globally shared) settings from other apps, in reverse-lexicographic order of app name.
5Other apps (default)$SPLUNK_HOME/etc/apps/<other_apps>/default/Exported shipped settings from other apps, in reverse-lexicographic order.
6System local$SPLUNK_HOME/etc/system/local/Global system overrides.
7 (Lowest)System default$SPLUNK_HOME/etc/system/default/Factory baseline defaults.
App/User Precedence Order:
User local --> Current App local --> Current App default --> Other Apps --> System local --> System default
[HIGHEST]                                                                                    [LOWEST]

Knowledge Object Export Scoping (metadata)

An object defined inside an app is only visible to "Other Apps" (tiers 4 and 5) if its sharing scope has been configured to global. Object sharing is governed by metadata/default.meta and metadata/local.meta:

  • export = none: Accessible only within the defining app.
  • export = system: Exported globally across all applications and search contexts.

Stanza-Level and Attribute-Level Merging Mechanics

A critical misconception among new administrators is the belief that higher-precedence files overwrite entire configuration files or entire stanzas. This is false.

Splunk uses a fine-grained, non-destructive merging model:

  1. Files are not replaced: An attribute defined in system/local does not replace the file in apps/*/local.
  2. Stanzas are not discarded: If a stanza exists in both a default file and a local file, Splunk merges the contents of both stanzas into a single composite stanza.
  3. Attribute-level resolution: Splunk inspects each key-value pair independently:
    • If an attribute exists in a higher-precedence tier, that attribute's value wins.
    • If an attribute is absent from the higher-precedence tier, the value is inherited from the next highest tier where the key is defined.
    • Any non-conflicting keys across all tiers are preserved in the final merged stanza.

Concrete Merging Walkthrough: Data Ingestion Scenario

Consider an administrator monitoring /var/log/secure on a Linux host. Four configuration files contribute settings to the input [monitor:///var/log/secure]:

Tier 4: System Default ($SPLUNK_HOME/etc/system/default/inputs.conf)

The shipped file does not contain this monitor stanza. It does contain a [default] stanza, and settings in [default] apply to every input stanza that does not set them itself:

[default]
index = default

Tier 3: App Default ($SPLUNK_HOME/etc/apps/Splunk_TA_nix/default/inputs.conf)

[monitor:///var/log/secure]
sourcetype = linux_secure
index = os

Tier 2: App Local ($SPLUNK_HOME/etc/apps/Splunk_TA_nix/local/inputs.conf)

[monitor:///var/log/secure]
index = linux_security
ignoreOlderThan = 7d

Tier 1: System Local ($SPLUNK_HOME/etc/system/local/inputs.conf)

[monitor:///var/log/secure]
disabled = 1

Step-by-Step Resolution Analysis

When splunkd evaluates this configuration in the Global context, it merges the stanza attribute-by-attribute across the four tiers:

AttributeDefined InWinning TierEffective Resolved ValueTechnical Rationale
disabledsystem/localSystem local (Tier 1)1The only definition, and the highest tier. The input is disabled.
indexsystem/default ([default]), apps/TA/default, apps/TA/localApp local (Tier 2)linux_securityApp local beats App default and System default; System local does not set it.
sourcetypeapps/TA/defaultApp default (Tier 3)linux_secureNo higher tier overrides it.
ignoreOlderThanapps/TA/localApp local (Tier 2)7dA non-conflicting attribute is simply carried into the merged stanza.

Final Effective Runtime Stanza Calculated by Splunk:

[monitor:///var/log/secure]
disabled = 1
index = linux_security
sourcetype = linux_secure
ignoreOlderThan = 7d

The result combines settings from three layers (system/local, apps/Splunk_TA_nix/local, and apps/Splunk_TA_nix/default), plus the [default] fallback from system/default. Splunk merges attributes; it does not discard whole files or stanzas.

Loading diagram...
Global vs App/User Context Precedence Flows
Test Your Knowledge

What is the exact configuration precedence hierarchy for configuration files evaluated within Splunk's Global context?

A
B
C
D
Test Your Knowledge

A monitor input stanza is configured in both $SPLUNK_HOME/etc/system/local/inputs.conf and $SPLUNK_HOME/etc/apps/Splunk_TA_nix/local/inputs.conf with conflicting 'index' attributes. Which value is applied at runtime and why?

A
B
C
D
Test Your Knowledge

A business user creates a private saved search in the Search & Reporting app via Splunk Web. Where is this configuration stored on disk, and what is its precedence rank when the user runs the search?

A
B
C
D