0.2 Splunk Knowledge Objects & Search Pipeline Architecture
Key Takeaways
- The Splunk Power User role exercises elevated permissions within the Web UI and REST API to create, manage, and share knowledge objects (app and global scope) without requiring host-level filesystem access or administrative server controls.
- Search-time field discovery follows a sequential seven-stage pipeline (Stage 0 through Stage 6): Default/Indexed Fields -> Field Extractions -> Field Aliases -> Calculated Fields -> Lookups -> Event Types -> Tags.
- Knowledge object dependencies operate strictly in a forward-flowing hierarchy: downstream objects can consume fields generated by upstream objects, but upstream objects cannot reference downstream artifacts.
- Knowledge object sharing follows three access tiers: Private (creator only), App-Specific (shared with all users of that application), and Global (available to all apps across the search head).
- Search-time configuration conflicts resolve User context over App Local, App Default, System Local, and System Default; between apps, the currently running app wins and remaining apps are ranked in reverse-lexicographical order. SPL execution pushes distributable streaming commands down to Indexers before transforming aggregation on the Search Head.
0.2 Splunk Knowledge Objects & Search Pipeline Architecture
Power User Role Boundaries & Knowledge Object Ecosystem
In enterprise Splunk deployments, the Power User role occupies a pivotal tier within the role-based access control (RBAC) hierarchy. While standard Users can execute ad-hoc searches, build personal dashboards, and view shared reports, they lack permissions to share knowledge objects globally or build acceleration data models. Conversely, Administrators govern host-level infrastructure, manage index clustering topologies, configure forwarders, and modify underlying operating system files.
+-----------------------------------------------------------------------------------+
| SPLUNK RBAC PERMISSION HIERARCHY |
+-----------------------------------------------------------------------------------+
| ADMIN ROLE: |
| • Host-level config files (`/etc/system/local/`, CLI access, server restart) |
| • Index & bucket lifecycle management, cluster topology, licensing, forwarders |
| • User & role management, authentication (LDAP/SAML), system-wide capabilities |
+-----------------------------------------------------------------------------------+
▲
│ (Elevated Knowledge Permissions)
+-----------------------------------------------------------------------------------+
| POWER USER ROLE (Certification Target): |
| • Create, edit, and share Knowledge Objects (Field Extractions, Aliases, Eval) |
| • Manage Knowledge Object permissions: Private ➔ App-Specific ➔ Global Scope |
| • Build and structure Data Models & Datasets; configure Data Model Acceleration |
| • Create and maintain Event Types, Tags, Search Macros, and Workflow Actions |
| • Implement Common Information Model (CIM) field normalization |
+-----------------------------------------------------------------------------------+
▲
│ (Basic Search & Reporting)
+-----------------------------------------------------------------------------------+
| USER ROLE: |
| • Run ad-hoc SPL queries against authorized indexes |
| • Create private searches, reports, alerts, and dashboard panels |
| • Cannot share objects globally or manage data model definitions |
+-----------------------------------------------------------------------------------+
The Search-Time Field Discovery Execution Pipeline
When a user executes an SPL search, the Splunk Search Head processes events through a deterministic, multi-stage pipeline. Each stage generates fields or metadata that become available to subsequent downstream stages. Understanding this precise sequence is one of the most heavily tested concepts on the exam.
Detailed Pipeline Stages
- Stage 0: Default and Indexed Fields
- Splunk parses raw events and retrieves fields stored directly in index bucket TSIDX files during index time:
_time,_raw,host,source,sourcetype,index, andpunct.
- Splunk parses raw events and retrieves fields stored directly in index bucket TSIDX files during index time:
- Stage 1: Field Extractions (Inline & Transforms)
- Search-time extractions execute using regular expressions defined in
props.conf(EXTRACT-<class>) and referenced transforms (REPORT-<class>intransforms.conf). Delimiter-based extractions also execute at this stage.
- Search-time extractions execute using regular expressions defined in
- Stage 2: Field Aliases
- Splunk maps existing extracted or default field names to alternative alias names (
FIELDALIAS-<class>inprops.conf). Aliasing does not replace original field names; both original and aliased field names coexist simultaneously.
- Splunk maps existing extracted or default field names to alternative alias names (
- Stage 3: Calculated Fields
- Splunk executes
evalexpressions defined inprops.conf(EVAL-<fieldname> = <eval-expression>). Calculated fields can evaluate default fields, extracted fields, and field aliases.
- Splunk executes
- Stage 4: Lookups
- Splunk matches event fields against external CSV files, KV Store collections, or external scripts (
LOOKUP-<class>inprops.confmatching definitions intransforms.conf). Lookups can use input fields produced by Stages 0 through 3 (including calculated fields) and output new enrichment fields.
- Splunk matches event fields against external CSV files, KV Store collections, or external scripts (
- Stage 5: Event Types
- Splunk evaluates search strings defined in
eventtypes.confagainst enriched events. Event type search criteria can match default fields, extracted fields, field aliases, calculated fields, and lookup output fields.
- Splunk evaluates search strings defined in
- Stage 6: Tags
- Splunk attaches labels defined in
tags.confto specific field-value pairs or event types. Because tags depend on both event types and all accumulated field values, they are assigned at the very end of the search-time discovery pipeline.
- Splunk attaches labels defined in
Knowledge Object Dependency Matrix
The strict sequential nature of the pipeline dictates which knowledge objects can reference or depend on other knowledge objects:
| Knowledge Object Type | Stage | Can Reference / Depend On (Upstream) | Cannot Reference (Downstream) |
|---|---|---|---|
| Field Extractions | Stage 1 | Default/Indexed Fields (host, source, sourcetype, _raw) | Field Aliases, Calculated Fields, Lookups, Event Types, Tags |
| Field Aliases | Stage 2 | Extracted Fields, Default Fields | Calculated Fields, Lookups, Event Types, Tags |
| Calculated Fields | Stage 3 | Extracted Fields, Field Aliases, Default Fields | Lookups, Event Types, Tags |
| Lookups | Stage 4 | Extracted Fields, Field Aliases, Calculated Fields, Default Fields | Event Types, Tags |
| Event Types | Stage 5 | Extracted Fields, Field Aliases, Calculated Fields, Lookup Output Fields | Tags |
| Tags | Stage 6 | Event Types, Extracted Fields, Field Aliases, Calculated Fields, Lookup Outputs | None (Tags sit at the end of the pipeline) |
Key Exam Architectural Takeaways
- Can a Calculated Field reference a Field Alias? YES. Field Aliases (Stage 2) execute before Calculated Fields (Stage 3).
- Can a Lookup match on a Calculated Field? YES. Calculated Fields (Stage 3) execute before Lookups (Stage 4).
- Can an Event Type search query use a Lookup output field? YES. Lookups (Stage 4) populate fields before Event Types (Stage 5) evaluate.
- Can a Field Alias rename a Calculated Field? NO. Field Aliases (Stage 2) run before Calculated Fields (Stage 3). If you need an alias for a calculated result, perform the rename within the calculated
evalexpression itself or via SPL. - Can an Event Type search contain a subsearch, pipe (
|), or another event type? NO. Event type definitions in Splunk cannot include pipes or subsearches.
Knowledge Object Scoping & Permission Architecture
Every knowledge object created in Splunk exists within a defined sharing and permission boundary:
| Permission Scope Tier | Storage Location (Filesystem) | Visibility & Access | Modifiable By |
|---|---|---|---|
| Private | $SPLUNK_HOME/etc/users/<username>/<app_name>/ | Only visible and accessible to the creator user account. | Object Creator, Splunk Admin |
| This App Only (App) | $SPLUNK_HOME/etc/apps/<app_name>/local/ | Visible to all users who have access to <app_name>. | Users with Write permission in the App |
| Global (All Apps) | $SPLUNK_HOME/etc/apps/<app_name>/local/ + metadata/local.meta (export = system) | Available across all apps on the Search Head regardless of active context. | Users with Write permission on the originating App |
Permission Governance Principles
- Read vs. Write Permissions: Granting
Readpermission allows users to execute searches utilizing the knowledge object. GrantingWritepermission allows users to edit, clone, change sharing scopes, or delete the knowledge object. - Promoting Scopes: A Power User can promote an object from Private to This App Only, or from This App Only to Global via the Splunk Web UI under Settings > Knowledge Objects > Permissions.
- Sharing to Global: When an object is shared globally, its underlying configuration remains stored inside the originating application's
local/directory, while an entry is added tometadata/local.metamarkingexport = system.
Configuration File Precedence & Hierarchy
Splunk configures knowledge objects through .conf files. When an identical stanza or attribute exists across multiple directories, Splunk resolves conflicts using strict precedence rules.
Precedence Resolution Hierarchy (Search Time / User Context)
When a user runs a search, Splunk evaluates configuration files in the following top-down order (highest priority to lowest priority):
1. Current User Directory: $SPLUNK_HOME/etc/users/<username>/<app_name>/
2. App Local Directory: $SPLUNK_HOME/etc/apps/<app_name>/local/
3. App Default Directory: $SPLUNK_HOME/etc/apps/<app_name>/default/
4. System Local Directory: $SPLUNK_HOME/etc/system/local/
5. System Default Directory: $SPLUNK_HOME/etc/system/default/
Precedence Principles
localalways overridesdefault: Any configuration written in alocal/directory overrides identical stanzas and settings in the correspondingdefault/directory.- Never Edit
default/Directories: Default directories contain vendor-shipped configurations that are overwritten during Splunk upgrades. All customizations must be saved inlocal/or user directories. - App Tie-Breaking Depends on Context (a classic exam trap): Splunk uses two opposite orderings. In the app/user context — which is how
props.confis evaluated at search time — the currently running app always wins, regardless of name, and the remaining apps are ranked in reverse-lexicographical order (appBbeats appA); other apps are only consulted for settings exported globally. In the global context — howprops.confis evaluated at index time, and how files likeinputs.confare always evaluated — plain lexicographical order applies (appAbeats appB, and any app starting with an uppercase letter beats any app starting with a lowercase letter).
Search Pipeline Mechanics: Streaming vs. Transforming Commands
Understanding how Splunk executes SPL across distributed Search Heads and Indexers is essential for search optimization and Power User performance tuning.
+-----------------------------------------------------------------------------------+
| SPL COMMAND CLASSIFICATION MATRIX |
+-----------------------------------------------------------------------------------+
| DISTRIBUTABLE STREAMING COMMANDS (Runs on Indexers in parallel) |
| Commands: `search`, `where`, `eval`, `fields`, `rename`, `replace`, `rex` |
| Behavior: Operates record-by-record on raw event streams at the Indexer level. |
| Benefit: Filters out unwanted data before sending results across the network. |
+-----------------------------------------------------------------------------------+
│
▼ (Filtered intermediate data stream)
+-----------------------------------------------------------------------------------+
| CENTRALIZED STREAMING COMMANDS (Runs on Search Head record-by-record) |
| Commands: `head`, `streamstats`, `autoregress`, `transaction` (in most cases) |
| Behavior: Applies a transformation to each event but only on the Search Head. |
+-----------------------------------------------------------------------------------+
│
▼ (Ordered stream)
+-----------------------------------------------------------------------------------+
| TRANSFORMING COMMANDS (Map on Indexers ➔ Reduce on Search Head) |
| Commands: `stats`, `chart`, `timechart`, `top`, `rare`, `contingency` |
| Behavior: Converts event streams into aggregated statistical data tables. |
| Architecture: Pre-aggregates on Indexers (Map), finalizes on Search Head (Reduce).|
+-----------------------------------------------------------------------------------+
│
▼ (Statistical Table)
+-----------------------------------------------------------------------------------+
| DATASET PROCESSING COMMANDS (needs the entire dataset before it can run) |
| Commands: `sort`, `eventstats`, `tail`, `reverse`, `map`, `fillnull` (no fields) |
| Behavior: Requires the complete result set in memory before producing output. |
| NOTE: `dedup` is DISTRIBUTABLE STREAMING by default -- it only becomes a dataset |
| processing command with `sortby` or `keepevents=true`. `transaction` is a |
| CENTRALIZED STREAMING command in most cases, dataset processing with some args. |
+-----------------------------------------------------------------------------------+
Search Optimization Best Practices for Power Users
- Filter Early: Always place specific
index=,sourcetype=, and keyword filters at the beginning of the search string. - Pushdown to Indexers: Utilize distributable streaming commands (
eval,where,fields) before transforming commands so Indexers handle compute in parallel. - Prune Fields Early: Use
| fields + <needed_fields>immediately after initial filtering to minimize memory usage and network transfer between Indexers and Search Heads. - Prefer
statsovertransaction: Whenever possible, usestats(a transforming command that distributes map work to Indexers) rather thantransaction, which Splunk classifies as a centralized streaming command — all the work happens on the Search Head and consumes substantial RAM.
Splunk documents six command types: distributable streaming, centralized streaming, transforming, generating, orchestrating, and dataset processing. A single command can belong to more than one type depending on its arguments, which is exactly what exam distractors exploit.
In the Splunk search-time field discovery pipeline, which knowledge object is evaluated immediately AFTER Calculated Fields (EVAL-) but BEFORE Event Types?
A Power User creates a field alias named client_ip for the field src inside the Search app under /etc/users/jdoe/search/props.conf. Another administrator has defined an alias with the same name under /etc/apps/search/local/props.conf. When user jdoe runs a search within the Search app, which configuration takes precedence?
A search query contains the following pipeline: index=network sourcetype=firewall | eval mb=bytes/1048576 | where mb > 50 | stats sum(mb) by src_ip. Which part of this search pipeline is classified as a distributable streaming operation that executes in parallel across the Indexers?