Splunk custom input with session
Splunk can be extended with custom inputs written in Python. In order to connect to Splunk services, code has to be configured and use a session token. Here is a basic setup emitting records with kvstore names
#!/usr/bin/env python
import splunklib.client as client
import sys
import datetime as dt
def generate(session_key):
service = client.connect(token = session_key)
for collection in service.kvstore:
ts = dt.datetime.now(tz=dt.timezone.utc).isoformat()
print(f'{ts}, collection="{collection.name}"')
if __name__ == "__main__":
session_key = sys.stdin.read()
generate(session_key)
and the corresponding default/inputs.conf
[script://./bin/listkvstores.py]
interval = 300
disabled = False
passAuth = nobody
kvstore access uses user nobody, other Splunk services might need a different user configured.