Read logs from a Splunk search REST API into OTLP-shaped tables
Installing and Loading
INSTALL splunk FROM community;
LOAD splunk;
Example
-- Store your Splunk credentials once (kept out of query text; redacted in duckdb_secrets()).
CREATE SECRET (
TYPE splunk,
URL 'https://splunk.example.com:8089',
USERNAME '<username>',
PASSWORD '<password>'
);
-- Or authenticate with a token instead of a username/password.
CREATE SECRET (
TYPE splunk,
URL 'https://splunk.example.com:8089',
TOKEN '<token>',
TOKEN_TYPE 'bearer' -- 'bearer' for JWT auth tokens, 'splunk' for session keys
);
-- Run SPL and get back OTLP log rows.
SELECT time_unix_nano, service_name, severity_text, body
FROM read_splunk_logs(
query => 'index=main error',
earliest => '-1h',
latest => 'now'
);
About splunk
This extension reads logs from a Splunk search REST API
endpoint directly into DuckDB. Rows conform to the OTLP logs schema (matching
duckdb-otlp read_otlp_logs), so Splunk events drop
straight into an OTLP-shaped lakehouse alongside data from other sources. Resource attribute keys
align with the OpenTelemetry Collector's Splunk receivers (host.name, com.splunk.*) for interop.
Features:
- Credentials via DuckDB secrets (
CREATE SECRET (TYPE splunk, ...)), supporting basic auth or token auth;PASSWORD/TOKENare redacted induckdb_secrets(). SetINSECURE_TLS truefor instances with self-signed certificates. - HEC/JSON event awareness: Splunk does not extract JSON event fields at search time, so the
extension parses
_rawand resolves fields such aslevel,trace_id, andservicefrom it - Automatic retries for rate limits (HTTP 429), HTTP 5xx, and transient network errors; retry waits honor query cancellation
- Projection pushdown: only selected columns are decoded, so aggregations skip the per-row
_rawparse and attribute JSON serialization - Loud failures on bad SPL: server-side search errors are raised rather than looking like zero matches
- Splunk fields not mapped to the OTLP schema are exposed as JSON in
log_attributesfor use with DuckDB's JSON functions
read_splunk_logs accepts query (SPL, default *), earliest (default -15m), latest
(default now), max_rows (0 = unlimited), timeout, retries, and secret (to select a
named secret). Logs are supported today. For full documentation, visit the
extension repository.
Added Functions
| function_name | function_type | description | comment | examples |
|---|---|---|---|---|
| read_splunk_logs | table | NULL | NULL |
Overloaded Functions
This extension does not add any function overloads.
Added Types
This extension does not add any types.
Added Settings
This extension does not add any settings.