SA-Exoscale_fs is a Splunk add-on for collecting Exoscale audit-trail events and normalizing them into CIM-oriented sourcetypes for security and compliance use cases.
The add-on provides:
- A modular input that calls the Exoscale API and ingests audit events.
- Account configuration for Exoscale API credentials.
- Checkpointing via Splunk KV Store to avoid re-reading already fetched events.
- Sourcetype routing from raw
exoscale:eventdata into:exoscale:audittrail:authexoscale:audittrail:mutation
- Field extractions, aliases, tags, and event types for CIM-style searches.
- Prebuilt Splunk views shipped in the package.
The main ingestion logic lives in SA-Exoscale_fs/package/bin/exoscale_audit_helper.py. For each configured input, the add-on:
- Reads the configured Exoscale account credentials from Splunk's secure storage.
- Loads the last checkpoint from KV Store.
- Calls Exoscale
list_events()for the requested time window. - Writes each event into Splunk with sourcetype
exoscale:event. - Updates the checkpoint after the run completes.
If no checkpoint exists, the add-on starts from the configured Start From date. If that field is empty, it defaults to the last 30 days.
The add-on UI definition is stored in SA-Exoscale_fs/globalConfig.json.
The configuration page defines an account with at least:
namems_api_zonesapi_keyapi_secret
The shipped input is Exoscale Audit and supports:
intervalindexaccountdate(Start From)reset_checkpoint
reset_checkpoint forces the add-on to fetch again from the configured start point or the default 30-day lookback. It should be turned off after the backfill run.
Raw events are initially written as exoscale:event. Splunk transforms in SA-Exoscale_fs/package/default/transforms.conf then route them into normalized sourcetypes:
- Authentication handlers such as
authenticate,create session, andrevoke sessionbecomeexoscale:audittrail:auth. - Other handlers are routed to
exoscale:audittrail:mutation.
Normalization is implemented in SA-Exoscale_fs/package/default/props.conf, including:
- Timestamp parsing
- JSON field extraction
- Field aliases such as
srcandsrc_ip - Derived values such as
action,result,object_category, andobject_id
Supporting Splunk knowledge objects are defined in:
This repository is Python-based and declares dependencies in pyproject.toml. The project currently depends on:
exoscalesolnlibsplunk-sdksplunktaucclib
Development tooling includes:
pytestruffpre-commityamllintsplunk-add-on-ucc-framework
Typical local setup with uv:
uv syncRun tests:
uv run pytestRun linting:
uv run ruff check .The packaged Splunk app content is under SA-Exoscale_fs/package. To use the add-on in Splunk:
- Build or package the app according to your internal Splunk app release process.
- Install the resulting app into Splunk.
- Create an Exoscale account in the add-on configuration UI.
- Create an
Exoscale Auditinput and assign an index. - Verify that events are arriving under
exoscale:audittrail:authandexoscale:audittrail:mutation.
This repository does not currently document a complete release command sequence in the root project files, so packaging steps should follow the process your team already uses for Splunk UCC-based add-ons.
The app ships Splunk UI views under SA-Exoscale_fs/package/default/data/ui/views, including dashboards for inputs, configuration, and Exoscale data overview.
This repository is licensed under Apache 2.0. See LICENSE.