Splunk SPL2 Pipeline Kit
This skill is the shared SPL2 authoring and validation surface for
splunk-ingest-processor-setup and splunk-edge-processor-setup. It is
offline-only: it renders starter SPL2, lints pipeline files, and reports
profile compatibility issues without calling Splunk APIs.
For newer Cisco Data Fabric wording, this is the reusable SPL2 authoring route.
Native Observability Metrics Pipeline Management remains a separate UI workflow
covered by splunk-observability-deep-native-workflows.
Agent Behavior
- Use
ingestProcessorfor Splunk-hosted Ingest Processor pipelines. - Use
edgeProcessorfor Edge Processor pipelines. - Keep real samples, private keys, HEC tokens, Observability tokens, and lookup contents out of chat and rendered files. Render placeholders and file-path handoffs only.
- Treat SPL-to-SPL2 conversion as review assistance. Splunk's in-product conversion tool remains the authoritative conversion workflow.
- Read
reference.mdbefore changing supported commands, templates, or lint rules.
Quick Start
Render every template and lint the rendered output:
bash skills/splunk-spl2-pipeline-kit/scripts/setup.sh --phase all --profile both
Lint a user-provided pipeline:
bash skills/splunk-spl2-pipeline-kit/scripts/setup.sh \
--phase lint \
--profile ingestProcessor \
--pipeline-file pipelines/my_pipeline.spl2
Run the offline smoke test:
bash skills/splunk-spl2-pipeline-kit/scripts/smoke_offline.sh
Outputs
The default output directory is splunk-spl2-pipeline-kit-rendered/:
templates/<profile>/*.spl2- route, branch, redact, sample, lookup, extract, timestamp, JSON/XML, OCSF, decrypt, metrics, stats, S3, and compatibility starters where supported.custom-template-app/default/data/spl2/*.spl2- SPL2 custom template module examples using@templateand runtime profile metadata.lint-report.jsonandlint-report.md.coverage-report.json.
Guardrails
logs_to_metricsrequires animport logs_to_metrics from /splunk.ingest.commandsstyle import and is Ingest Processor-only.decryptis Ingest Processor-only and must be treated as a private-key lookup handoff. Do not render private-key material.statslinting rejectsavg()because Ingest Processor documentssum()/count()as the supported average pattern. Edge Processorstatsis supported and includes newer state-window behavior on current EP versions.object_to_array()is deprecated in SPL2 release notes; usejson_entries().- Regex guidance is PCRE2-oriented. Prefer named captures like
(?P<fieldName>...). - Edge Processor-only and Ingest Processor-only differences are reported in the lint output rather than hidden in comments.