Splunk
Configures a Cloud/On-premises Splunk input from which to read events to transform into typed TenXObjects.
Instances of this module define a connection to a hosted/on-premises Splunk cluster from which events to retrieve, as well as the querying logic used such as chronological direction, start values, time ranges, and page size of each API request sent.
Splunk inputs commonly run within scheduled jobs (e.g., k8s CronJob) to retrieve a recent sample amount of events (e.g., 200MB in the last 10min) to transform into TenXObjects as part of the Cloud Reporter app.
Architecture
The Splunk input module uses Apache Camel to poll the Splunk REST API:
graph LR
A["<div style='font-size: 16px;'>🔍 Splunk API</div><div style='font-size: 14px;'>REST Endpoint</div>"] --> B["<div style='font-size: 16px;'>🛤️ Camel Route</div><div style='font-size: 14px;'>netty-http</div>"]
B --> C["<div style='font-size: 16px;'>⚙️ 10x Pipeline</div><div style='font-size: 14px;'>Transform</div>"]
C --> D["<div style='font-size: 16px;'>📈 TenXSummary</div><div style='font-size: 14px;'>Time-Series</div>"]
classDef splunk fill:#9333ea88,stroke:#7c3aed,color:#ffffff,stroke-width:2px,rx:8,ry:8
classDef camel fill:#2563eb88,stroke:#1d4ed8,color:#ffffff,stroke-width:2px,rx:8,ry:8
classDef pipeline fill:#059669,stroke:#047857,color:#ffffff,stroke-width:2px,rx:8,ry:8
classDef objects fill:#ea580c88,stroke:#c2410c,color:#ffffff,stroke-width:2px,rx:8,ry:8
class A splunk
class B camel
class C pipeline
class D objects
🔍 Splunk API : Polls Splunk's REST API at regular intervals to fetch search results
🛤️ Camel Route : Submits search jobs and retrieves results in configurable page sizes
⚙️ 10x Pipeline : Transforms raw events into structured TenXObjects with symbol enrichment
📈 TenXSummary : Outputs aggregated metrics to time-series outputs
Splunk User Permissions
The Splunk user account needs the following capabilities:
search- Execute searchesrest_apps_management- Access REST APIlist_inputs_edit(optional) - For advanced input management
Network Requirements
- Outbound HTTPS access to Splunk management port (default: 8089)
- For Splunk Cloud: Ensure your IP is allowlisted
SSL Certificate Errors
Error: PKIX path building failed or unable to find valid certification path
Solution: For self-signed certificates in dev/test environments:
For production, import the Splunk CA certificate into your Java truststore.
Authentication Failures
Error: 401 Unauthorized or Authentication failed
Checklist:
- Verify username/password are correct
- Check user has required Splunk capabilities
- Ensure credentials are properly passed via environment variables
- Test credentials with curl:
No Results Returned
Symptoms: Pipeline starts but no events are processed
Checklist:
- Verify the search query returns results in Splunk UI
- Check
totalEventsLimitisn't set too low - Ensure
enabled: trueis set (or not explicitly set to false) - Review query time range matches available data
Connection Timeouts
Error: Connection timed out or Read timed out
Solutions:
- Check network connectivity to Splunk host
- Verify firewall rules allow port 8089
- For Splunk Cloud, ensure IP allowlisting
- Increase
totalDurationfor slow networks
Credential Management
Never hardcode credentials in configuration files:
SSL/TLS
- Always use
protocol: https(default) - Only disable
verifySSLin development environments - For production with custom CAs, import certificates to Java truststore
Network Security
- Use VPN or private networking when possible
- Restrict Splunk API access to known IP ranges
- Consider using Splunk tokens instead of username/password where supported
Configuration
To configure the Splunk input module, Edit these settings.
Below is the default configuration from: splunk/config.yaml (* Required Fields).
ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJpbmNsdWRlIiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAidGVueCIgOiB7CiAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICB9LAogICAgInNwbHVuayIgOiB7CiAgICAgICJ0eXBlIiA6ICJhcnJheSIsCiAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgInR5cGUiIDogIm9iamVjdCIsCiAgICAgICAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IGZhbHNlLAogICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKICAgICAgICAgICJuYW1lIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTG9naWNhbCBuYW1lIG9mIHRoaXMgU3BsdW5rIGlucHV0XG5cblNldHMgYSBsb2dpY2FsIG5hbWUgKGUuZy4sICdteVNwbHVuaycpIGZvciB0aGlzIGlucHV0LiBUaGUgW2lucHV0TmFtZV0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvanMvI1RlblhCYXNlT2JqZWN0K2lucHV0TmFtZSkgZmllbGQgIHJldHVybnMgdGhpcyB2YWx1ZSBhdCBydW4gdGltZSB0byBhbGxvdyBmb3IgaWRlbnRpZnlpbmcgYW5kIG9wZXJhdGluZyBvbiBpbnN0YW5jZXMgb3JpZ2luYXRpbmcgZnJvbSB0aGlzIGlucHV0LiIKICAgICAgICAgIH0sCiAgICAgICAgICAiZW5hYmxlZCIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAiYm9vbGVhbiIsCiAgICAgICAgICAgICAgInN0cmluZyIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlNldHMgd2hldGhlciB0aGlzIGlucHV0IGlzIGVuYWJsZWQgKGRlZmF1bHQgdHJ1ZSlcblxuU2V0cyB3aGV0aGVyIHRvIG9wZW4gdGhlIGlucHV0IHN0cmVhbS4gVG8gZW5hYmxlIHRoaXMgaW5wdXQgb25seSB3aGVuIGEgW3NwbHVua0hvc3RdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vcnVuL2lucHV0L2FuYWx5emVyL3NwbHVuay8jc3BsdW5raG9zdCkgc3RhcnR1cCBhcmd1bWVudCB2YWx1ZSBpcyB0cnV0aHksIHVzZTogYGBgIHlhbWwgc3BsdW5rRW5hYmxlZDogJD1UZW5YRW52LmdldChcInNwbHVua0hvc3RcIikgYGBgIFRvIGxlYXJuIG1vcmUgc2VlIFtUZW5YRW52LmdldF0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvanMvI1RlblhFbnYuZ2V0KS4gKEFjY2VwdHMgYm9vbGVhbiBvciBzdHJpbmcgd2l0aCAkPSBwcmVmaXggZm9yIHJ1bnRpbWUgZXZhbHVhdGlvbikgKERlZmF1bHQ6IHRydWUpIiwKICAgICAgICAgICAgImRlZmF1bHQiIDogdHJ1ZQogICAgICAgICAgfSwKICAgICAgICAgICJwcmludFByb2dyZXNzIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJib29sZWFuIiwKICAgICAgICAgICAgICAic3RyaW5nIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiU2V0cyB3aGV0aGVyIHRoaXMgaW5wdXQgcHJpbnRzIHRocm91Z2hwdXQgc3RhdHMgdG8gdGhlIGNvbnNvbGVcblxuU2V0cyB3aGV0aGVyIHRoaXMgaW5wdXQgcHJpbnRzIHRocm91Z2hwdXQgc3RhdHMgdG8gdGhlIGNvbnNvbGUgZm9yIHRlc3RpbmcgYW4gaW50ZWdyYXRpb24gdG8gYSByZW1vdGUgZW5kcG9pbnQuIChBY2NlcHRzIGJvb2xlYW4gb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIChEZWZhdWx0OiBmYWxzZSkiLAogICAgICAgICAgICAiZGVmYXVsdCIgOiBmYWxzZQogICAgICAgICAgfSwKICAgICAgICAgICJob3N0IiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiU3BsdW5rIGhvc3QgYWRkcmVzc1xuXG5TZXRzIHRoZSBTcGx1bmsgaG9zdCBhZGRyZXNzIHRvIGNvbm5lY3QgdG8gKGUuZy4sIGA8ZGVwbG95bWVudC1uYW1lPi5zcGx1bmtjbG91ZC5jb21gKSIKICAgICAgICAgIH0sCiAgICAgICAgICAicG9ydCIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAibnVtYmVyIiwKICAgICAgICAgICAgICAic3RyaW5nIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiU3BsdW5rIHNlcnZlciBwb3J0XG5cblNldHMgdGhlIFNwbHVuayBzZXJ2ZXIgcG9ydCB0byBjb25uZWN0IHRvIChlLmcuLCA4MDg5KSBUaGUgcG9ydCBpcyBub3QgbmVlZGVkIGlmIHRoZSBwcm92aWRlZCBbc3BsdW5rSG9zdF0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9ydW4vaW5wdXQvYW5hbHl6ZXIvc3BsdW5rLyNzcGx1bmtob3N0KSBhbHJlYWR5IGVuY2Fwc3VsYXRlcyB0aGUgcG9ydCAoQWNjZXB0cyBudW1iZXIgb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIgogICAgICAgICAgfSwKICAgICAgICAgICJwcm90b2NvbCIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkRlZmluZXMgdGhlIHByb3RvY29sIHRvIGNvbm5lY3QgdG8gU3BsdW5rXG5cblNldHMgdGhlIHByb3RvY29sIHRvIGNvbm5lY3QgdG8gU3BsdW5rIHdpdGggKGUuZy4sIGh0dHBzKS4gKERlZmF1bHQ6IGh0dHBzKSIsCiAgICAgICAgICAgICJkZWZhdWx0IiA6ICJodHRwcyIKICAgICAgICAgIH0sCiAgICAgICAgICAidXNlcm5hbWUiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJTcGx1bmsgdXNlciBuYW1lXG5cblNldHMgdGhlIFNwbHVuayB1c2VyIG5hbWUgdG8gYXV0aGVudGljYXRlIHdpdGggVGhpcyB2YWx1ZSBpcyBzZXQgaW50byB0aGUgJ3VzZXJuYW1lJyBoZWFkZXIgb2YgdGhlIGAvc2VydmljZXMvc2VhcmNoL3YyL2pvYnMvYCBlbmRwb2ludCIKICAgICAgICAgIH0sCiAgICAgICAgICAicGFzc3dvcmQiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJTcGx1bmsgdXNlciBwYXNzd29yZFxuXG5TZXRzIHRoZSBTcGx1bmsgdXNlciBwYXNzd29yZCB0byBhdXRoZW50aWNhdGUgd2l0aCBUaGlzIHZhbHVlIGlzIHNldCBpbnRvIHRoZSBwYXNzd29yZCBoZWFkZXIgb2YgdGhlIGAvc2VydmljZXMvc2VhcmNoL3YyL2pvYnMvYCBlbmRwb2ludCIKICAgICAgICAgIH0sCiAgICAgICAgICAidmVyaWZ5U1NMIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJib29sZWFuIiwKICAgICAgICAgICAgICAic3RyaW5nIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiV2hldGhlciB0byB2ZXJpZnkgU1NMIGNlcnRpZmljYXRlcyAoZGVmYXVsdCB0cnVlKVxuXG5TZXRzIHdoZXRoZXIgdG8gdmVyaWZ5IFNTTCBjZXJ0aWZpY2F0ZXMgd2hlbiBjb25uZWN0aW5nIHRvIFNwbHVuay4gU2V0IHRvIGBmYWxzZWAgdG8gYWxsb3cgY29ubmVjdGlvbnMgdG8gU3BsdW5rIGluc3RhbmNlcyB3aXRoIHNlbGYtc2lnbmVkIGNlcnRpZmljYXRlcy4gICoqV2FybmluZzoqKiBEaXNhYmxpbmcgU1NMIHZlcmlmaWNhdGlvbiBpcyBub3QgcmVjb21tZW5kZWQgZm9yIHByb2R1Y3Rpb24gZW52aXJvbm1lbnRzLiAgRm9yIGV4YW1wbGU6IGBgYCB5YW1sIHNwbHVua1ZlcmlmeVNTTDogZmFsc2UgYGBgIChBY2NlcHRzIGJvb2xlYW4gb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIChEZWZhdWx0OiB0cnVlKSIsCiAgICAgICAgICAgICJkZWZhdWx0IiA6IHRydWUKICAgICAgICAgIH0sCiAgICAgICAgICAicXVlcnkiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJTZWFyY2ggcXVlcnkgdG8gZXhlY3V0ZVxuXG5TZXRzIHRoZSBTcGx1bmsgc2VhcmNoIHF1ZXJ5IHRvIGV4ZWN1dGUgZm9yIHRoaXMgam9iIChEZWZhdWx0OiBzZWFyY2ggKikiLAogICAgICAgICAgICAiZGVmYXVsdCIgOiAic2VhcmNoICoiCiAgICAgICAgICB9LAogICAgICAgICAgInBhZ2VTaXplIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJudW1iZXIiLAogICAgICAgICAgICAgICJzdHJpbmciCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJOdW1iZXIgb2YgZXZlbnRzIHRvIHJldHJpZXZlIHdpdGggZWFjaCByZXN1bHQgcGFnZVxuXG5TZXRzIHRoZSBudW1iZXIgb2YgZXZlbnRzIHRvIHJldHJpZXZlIHdpdGggZWFjaCByZXN1bHQgcGFnZS4gKipQZXJmb3JtYW5jZToqKiBJbmNyZWFzZSB0byAxMDAwLTIwMDAgZm9yIGhpZ2gtdm9sdW1lIGVudmlyb25tZW50cyB0byByZWR1Y2UgQVBJIHJvdW5kLXRyaXBzLiAoQWNjZXB0cyBudW1iZXIgb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIChEZWZhdWx0OiA1MDApIiwKICAgICAgICAgICAgImRlZmF1bHQiIDogNTAwCiAgICAgICAgICB9LAogICAgICAgICAgInRvdGFsQnl0ZXNMaW1pdCIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAibnVtYmVyIiwKICAgICAgICAgICAgICAic3RyaW5nIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTWF4aW11bSB0b3RhbCBieXRlcyB0byByZWFkIGZyb20gaW5wdXQgYmVmb3JlIGNsb3NpbmdcblxuU2V0cyB0aGUgbWF4aW11bSBudW1iZXIgb2YgYnl0ZXMgYSB0YXJnZXQgcGlwZWxpbmUgaW5wdXQgd2lsbCByZWFkIGludG8gdGhlIHBpcGVsaW5lLiBUaGlzIHZhbHVlIGxpbWl0cyB0aGUgdm9sdW1lIG9mIGV2ZW50cyB0byByZWFkIGZyb20gYSBsb2NhbC9yZW1vdGUgc291cmNlIChlLmcuLCBsb2cgYW5hbHl6ZXIpLiAgKipQZXJmb3JtYW5jZToqKiBJbmNyZWFzZSBmb3IgbG9uZ2VyIGFuYWx5c2lzIHdpbmRvd3MgKGUuZy4sIDIwME1CIGZvciAxMG1pbiB3aW5kb3dzKS4gIEZvciBleGFtcGxlOiBgYGAgeWFtbCBzcGx1bmtUb3RhbEJ5dGVzTGltaXQ6ICQ9cGFyc2VCeXRlcyhcIjFHQlwiKSBgYGAgKEFjY2VwdHMgbnVtYmVyIG9yIHN0cmluZyB3aXRoICQ9IHByZWZpeCBmb3IgcnVudGltZSBldmFsdWF0aW9uKSIKICAgICAgICAgIH0sCiAgICAgICAgICAidG90YWxFdmVudHNMaW1pdCIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAibnVtYmVyIiwKICAgICAgICAgICAgICAic3RyaW5nIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTWF4aW11bSB0b3RhbCBldmVudHMgdG8gcmVhZCBmcm9tIGlucHV0IGJlZm9yZSBjbG9zaW5nXG5cblNldHMgdGhlIG1heGltdW0gbnVtYmVyIG9mIGV2ZW50cyBhIHRhcmdldCBwaXBlbGluZSBpbnB1dCB3aWxsIHJlYWQgaW50byB0aGUgcGlwZWxpbmUuIFRoaXMgdmFsdWUgbGltaXRzIHRoZSB2b2x1bWUgb2YgZXZlbnRzIHRvIHJlYWQgZnJvbSBhIGxvY2FsL3JlbW90ZSBzb3VyY2UgKGUuZy4sIGxvZyBhbmFseXplcikuICAqKlBlcmZvcm1hbmNlOioqIEFkanVzdCBiYXNlZCBvbiBtZW1vcnkgYW5kIHByb2Nlc3NpbmcgY2FwYWNpdHkuIEVhY2ggZXZlbnQgY29uc3VtZXMgbWVtb3J5IGR1cmluZyBwcm9jZXNzaW5nLiAoQWNjZXB0cyBudW1iZXIgb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIChEZWZhdWx0OiAxMDAwMCkiLAogICAgICAgICAgICAiZGVmYXVsdCIgOiAxMDAwMAogICAgICAgICAgfSwKICAgICAgICAgICJ0b3RhbER1cmF0aW9uIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiTWF4aW11bSBkdXJhdGlvbiB0byBrZWVwIGlucHV0IG9wZW4gYmVmb3JlIGNsb3NpbmdcblxuU2V0cyB0aGUgbWF4aW11bSBkdXJhdGlvbiBhIHRhcmdldCBwaXBlbGluZSBpbnB1dCB3aWxsIHJlbWFpbiBvcGVuLiBXaGVuIHJlYWNoZWQsIHRoZSBpbnB1dCB3aWxsIGNsb3NlIGFuZCBubyBtb3JlIGRhdGEgd2lsbCBiZSByZWFkLiAgKipQZXJmb3JtYW5jZToqKiBNYXRjaCB0byB5b3VyIGpvYiBzY2hlZHVsaW5nIGludGVydmFsIChlLmcuLCBpZiBydW5uaW5nIGV2ZXJ5IDEwbWluLCBzZXQgdG8gMTBtaW4pLiAgRm9yIGV4YW1wbGU6IGBgYCB5YW1sIHNwbHVua1RvdGFsRHVyYXRpb246ICQ9cGFyc2VEdXJhdGlvbihcIjEwbWluXCIpIGBgYCAoRGVmYXVsdDogNW1pbikiLAogICAgICAgICAgICAiZGVmYXVsdCIgOiAiNW1pbiIKICAgICAgICAgIH0sCiAgICAgICAgICAicXVlcnlJbnRlcnZhbCIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAibnVtYmVyIiwKICAgICAgICAgICAgICAic3RyaW5nIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiUXVlcnkgaW50ZXJ2YWwgKGluIG1pbGxpc2Vjb25kcykgZm9yIGNoZWNraW5nIG5ldyBkYXRhIGZyb20gcmVtb3RlIHNvdXJjZVxuXG5TZXRzIHRoZSBpbnRlcnZhbCBiZXR3ZWVuIHF1ZXJpZXMgdG8gdGhlIHJlbW90ZSBTcGx1bmsgQVBJLiBUaGlzIGNvbnRyb2xzIGhvdyBmcmVxdWVudGx5IHRoZSBpbnB1dCBwb2xscyBmb3IgbmV3IGxvZyBkYXRhLiAgKipQZXJmb3JtYW5jZToqKiBJbmNyZWFzZSBmb3IgcmF0ZS1saW1pdGVkIEFQSXM7IGRlY3JlYXNlIGZvciByZWFsLXRpbWUgbmVlZHMuICBGb3IgZXhhbXBsZTogYGBgIHlhbWwgc3BsdW5rUXVlcnlJbnRlcnZhbDogJD1wYXJzZUR1cmF0aW9uKFwiNXNcIikgYGBgIChBY2NlcHRzIG51bWJlciBvciBzdHJpbmcgd2l0aCAkPSBwcmVmaXggZm9yIHJ1bnRpbWUgZXZhbHVhdGlvbikgKERlZmF1bHQ6IDIwMDApIiwKICAgICAgICAgICAgImRlZmF1bHQiIDogMjAwMAogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgInJlcXVpcmVkIiA6IFsKICAgICAgICAgICJob3N0IiwKICAgICAgICAgICJxdWVyeSIKICAgICAgICBdCiAgICAgIH0KICAgIH0KICB9LAogICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiBmYWxzZQp9
# 🔟❎ 'run' Splunk input configuration
# Configure a Splunk event input
# To learn more see https://doc.log10x.com/run/input/analyzer/splunk/
# Set the 10x pipeline to 'run'
tenx: run
# =============================== Dependencies ================================
include: run/modules/input/analyzer/splunk
# =============================== Splunk Options ==============================
# Multiple Splunk inputs can be defined below
splunk:
# ---------------------------- General Options ----------------------------
# 'name' sets a unique logical name across all pipeline inputs
- name: Splunk
# Disabled by default - configure host/port to enable
enabled: false
# --------------------------- Connection Options --------------------------
# 'host' and 'port' set the Splunk host address to connect to (e.g., '<deployment-name>.splunkcloud.com')
host: null # (❗ REQUIRED)
port: null # (Not mandatory if the host already encapsulates it)
protocol: "https"
# 'username' and 'password' used to authenticate against the Splunk deployment
# To learn more see https://docs.splunk.com/Documentation/Splunk/latest/RESTUM/RESTusing#Authentication_and_authorization
username: $=TenXEnv.get("SPLUNK_USERNAME") # (❗ EnvVar REQUIRED)
password: $=TenXEnv.get("SPLUNK_PASSWORD") # (❗ EnvVar REQUIRED)
# ----------------------------- Query Options -----------------------------
# 'pageSize' sets the number of events to retrieve with each result page
# Performance: Increase to 1000-2000 for high-volume environments
pageSize: 500
# 'query' sets the Splunk search query to execute for this job
query: search *
# --------------------------- Backpressure Options -----------------------
# 'queryInterval' sets the interval between queries to the remote API
# Performance: Increase for rate-limited APIs; decrease for real-time needs
queryInterval: $=parseDuration("2s")
# 'totalDuration' sets the max duration to try reading from the the remote input
# Performance: Match to your job scheduling interval
totalDuration: $=parseDuration("5min")
# 'totalBytesLimit' sets the max total bytes to read from the remote input
# Performance: Increase for longer analysis windows (e.g., 200MB for 10min)
totalBytesLimit: $=parseBytes("50MB")
# 'totalEventsLimit' sets the max number of events to read the remote input
# Performance: Adjust based on memory capacity; each event consumes memory
totalEventsLimit: 10000
# --------------------------- Ancillary Options ---------------------------
# 'printProgress' controls whether to print progress gage to the console
# This option helps debug and test the input
printProgress: $=!TenXEnv.get("quiet")
Options
Specify the options below to configure multiple Splunk input:
| Name | Description | Category |
|---|---|---|
| splunkName | Logical name of this Splunk input | General |
| splunkEnabled | Sets whether this input is enabled (default true) | General |
| splunkPrintProgress | Sets whether this input prints throughput stats to the console | General |
| splunkHost | Splunk host address | Authentication |
| splunkPort | Splunk server port | Authentication |
| splunkProtocol | Defines the protocol to connect to Splunk | Authentication |
| splunkUsername | Splunk user name | Authentication |
| splunkPassword | Splunk user password | Authentication |
| splunkVerifySSL | Whether to verify SSL certificates (default true) | Authentication |
| splunkQuery | Search query to execute | Query |
| splunkPageSize | Number of events to retrieve with each result page | Query |
| splunkTotalBytesLimit | Maximum total bytes to read from input before closing | Backpressure |
| splunkTotalEventsLimit | Maximum total events to read from input before closing | Backpressure |
| splunkTotalDuration | Maximum duration to keep input open before closing | Backpressure |
| splunkQueryInterval | Query interval (in milliseconds) for checking new data from remote source | Backpressure |
General
splunkName
Logical name of this Splunk input.
| Type | Default | Category |
|---|---|---|
| String | "" | General |
Sets a logical name (e.g., 'mySplunk') for this input. The inputName field returns this value at run time to allow for identifying and operating on instances originating from this input.
splunkEnabled
Sets whether this input is enabled (default true).
| Type | Default | Category |
|---|---|---|
| Boolean | true | General |
Sets whether to open the input stream. To enable this input only when a splunkHost startup argument value is truthy, use:
To learn more see TenXEnv.get.
splunkPrintProgress
Sets whether this input prints throughput stats to the console.
| Type | Default | Category |
|---|---|---|
| Boolean | false | General |
Sets whether this input prints throughput stats to the console for testing an integration to a remote endpoint.
Authentication
splunkHost
Splunk host address.
| Type | Default | Category |
|---|---|---|
| String | "" | Authentication |
Sets the Splunk host address to connect to (e.g., <deployment-name>.splunkcloud.com).
splunkPort
Splunk server port.
| Type | Default | Category |
|---|---|---|
| Number | 0 | Authentication |
Sets the Splunk server port to connect to (e.g., 8089) The port is not needed if the provided splunkHost already encapsulates the port.
splunkProtocol
Defines the protocol to connect to Splunk.
| Type | Default | Category |
|---|---|---|
| String | https | Authentication |
Sets the protocol to connect to Splunk with (e.g., https).
splunkUsername
Splunk user name.
| Type | Default | Category |
|---|---|---|
| String | "" | Authentication |
Sets the Splunk user name to authenticate with
This value is set into the 'username' header of the /services/search/v2/jobs/ endpoint.
splunkPassword
Splunk user password.
| Type | Default | Category |
|---|---|---|
| String | "" | Authentication |
Sets the Splunk user password to authenticate with
This value is set into the password header of the /services/search/v2/jobs/ endpoint.
splunkVerifySSL
Whether to verify SSL certificates (default true).
| Type | Default | Category |
|---|---|---|
| Boolean | true | Authentication |
sets whether to verify SSL certificates when connecting to Splunk.
Set to false to allow connections to Splunk instances with self-signed certificates.
Warning: Disabling SSL verification is not recommended for production environments.
For example:
Query
splunkQuery
Search query to execute.
| Type | Required | Category |
|---|---|---|
| String | ✔ | Query |
Sets the Splunk search query to execute for this job.
splunkPageSize
Number of events to retrieve with each result page.
| Type | Default | Category |
|---|---|---|
| Number | 500 | Query |
Sets the number of events to retrieve with each result page.
Performance: Increase to 1000-2000 for high-volume environments to reduce API round-trips.
Backpressure
splunkTotalBytesLimit
Maximum total bytes to read from input before closing.
| Type | Default | Category |
|---|---|---|
| Number | 50000000 | Backpressure |
sets the maximum number of bytes a target pipeline input will read into the pipeline. This value limits the volume of events to read from a local/remote source (e.g., log analyzer).
Performance: Increase for longer analysis windows (e.g., 200MB for 10min windows).
For example:
splunkTotalEventsLimit
Maximum total events to read from input before closing.
| Type | Default | Category |
|---|---|---|
| Number | 10000 | Backpressure |
Sets the maximum number of events a target pipeline input will read into the pipeline. This value limits the volume of events to read from a local/remote source (e.g., log analyzer).
Performance: Adjust based on memory and processing capacity. Each event consumes memory during processing.
splunkTotalDuration
Maximum duration to keep input open before closing.
| Type | Default | Category |
|---|---|---|
| String | 5min | Backpressure |
sets the maximum duration a target pipeline input will remain open. When reached, the input will close and no more data will be read.
Performance: Match to your job scheduling interval (e.g., if running every 10min, set to 10min).
For example:
splunkQueryInterval
Query interval (in milliseconds) for checking new data from remote source.
| Type | Default | Category |
|---|---|---|
| Number | 2000 | Backpressure |
sets the interval between queries to the remote Splunk API. This controls how frequently the input polls for new log data.
Performance: Increase for rate-limited APIs; decrease for real-time needs.
For example:
This module is defined in splunk/module.yaml.