Splunk Enterprise StandAlone im Sandkasten

Der Splunk Enterprise StandAlone im Sandkasten ist viel einfacher als jetzt z.B. der Indexing cluster ... ist ja auch irgendwie logisch.
Ein paar Sachen kann man aber sehr wohl (und sollte es auch) von dort übernehmen.
Was man natürlich braucht, ist ein lauffähiges Docker. Oder eine Virtualisierungssoftware wie vmWare, Parallels, VirtualBox oder QEMU. Vor Jahren hab ich mit Vagrant und VirtualBox dafür etwas gebaut um mir das erstellen von "Wegwerf" Splunk Standalone Servern zu bauen. Das ganze findet man immer noch auf gitlab.
Der Vorteil ist, das kann jeder machen. Ohne Verfügbarkeit eines DNS (auch wenn diese für bestimmte Fälle hilfreich ist), ohne Account bei Splunk, ohne Developer oder Enterprise Lizenz.

Für physische oder virtuelle Rechner

Die Prozedur ist im Grunde immer die gleiche:

Der aufgesetzte Rechner sollte den Befehl wget beherrschen. Ich geh hier auch nur auf Linux ein. Ansonsten werd ich nicht näher auf Rechner aufsetzen befassen.

User anlegen

üblicherweise wird der Benutzer splunk verwendet. Ist es ein anderer darf man sich mit vielen Änderungen rumschlagen. Wenn man Splunk aus Debian oder RedHat Paketen installiert, wird üblicherweise der Ordner /opt/splunk hergenommen. Der Einfachheit halber übernehme ich das, es sei denn der Anwendungsfall verlangt eine Änderung (z.B. um Kundensystemen ähnlicher zu werden).

useradd -m -d /opt/splunk splunk
useradd -m -d /opt/splunk splunk

Splunk Enterprise Source herunterladen

Ich wechsle zu dem Zeitpunkt meist schon den Benutzer zu splunk um später die Verzeichnisrechte nicht übergeben zu müssen.

download_path="$(curl -s https://www.splunk.com/en_us/download/splunk-enterprise.html | grep -o "data-link[^ ]* " | grep "Linux" | sed "s/data-link=\"//;s/\"//")"
file=${download_path##*/}
wget -4 ${download_path}
download_path="$(curl -s https://www.splunk.com/en_us/download/splunk-enterprise.html | grep -o "data-link[^ ]* " | grep "Linux" | sed "s/data-link=\"//;s/\"//")"
file=${download_path##*/}
wget -4 ${download_path}

Heruntergeladene Datei in einen Ordner entpacken

Die Ordnerstruktur im tarball ist splunk/{bin,etc,var... bedeutet, wenn man jetzt ganz einfach den Ordner in /opt entpackt, sind alle Dateien in dem Homeordner von splunk.
Das könnte jetzt schon reichen.
Bei mein ersten Kunden für den ich ca. 6 Jahre lange die Splunk administration gemacht habe, hatte es sich allerdings so eingebürgert, einen in /opt/splunk einen Unterordner anzulegen. Dort die neue Version einzuspielen, und wann alles gepasst hat, einen link neu zu setzen. Dieses system hab ich für mich selbst übernommen. Fällt aber wirklich erst bei einem Update ins Gewicht.

mkdir ${file%.tgz}
tar xvzf ${file} --strip-components 1 -C ${file%.tgz}
ln -s ${file%.tgz} current
mkdir ${file%.tgz}
tar xvzf ${file} --strip-components 1 -C ${file%.tgz}
ln -s ${file%.tgz} current

Benötigte Einstellungen vornehmen

Was seit ein paar Jahren zwingend benötigt wird, ist die user-seed.conf die liegt bei meiner installations Methode in /opt/splunk/current/etc/system/local/
Ich mache es mir da einfach und nehme für das initial das bis Splunk < 7.0.0 gebräuchliche admin:changeme. Und ändere es dann nach dem ersten login.
Die user-seed.conf sieht folgendermassen aus

[user_info]
USERNAME = admin
PASSWORD = changeme
[user_info]
USERNAME = admin
PASSWORD = changeme

Die 2te Datei die man anpassen sollte, ist die splunk-launch.conf zumindest wenn man beim Installationspfad abweicht. Auch da mache ich es mir, wie Splunk selbst, relativ leicht.
Wenn die splunk-launch.conf nicht vorhanden ist, erstellt Splunk diese aus der splunk-launch.conf.default beim ersten start.

cp current/etc/splunk-launch.conf{.default,}
echo "SPLUNK_WEB_NAME=splunkweb
SPLUNK_HOME=/opt/splunk/current
SPLUNK_SERVER_NAME=Splunkd
SPLUNK_OS_USER=splunk" >> current/etc/splunk-launch.conf
cp current/etc/splunk-launch.conf{.default,}
echo "SPLUNK_WEB_NAME=splunkweb
SPLUNK_HOME=/opt/splunk/current
SPLUNK_SERVER_NAME=Splunkd
SPLUNK_OS_USER=splunk" >> current/etc/splunk-launch.conf

Splunk starten

Es wird Zeit für den ersten Start:

current/bin/splunk start --accept-license --answer-yes --no-prompt
current/bin/splunk start --accept-license --answer-yes --no-prompt

Allgemeines zur Lizenz

Mit dem ersten Start fängt auch die Evaluierung Lizenz von 60 Tagen an zu laufen. Diese ist auf 500MB Index Volumen pro Tag beschränkt, man kann damit keine Cluster bauen, bietet aber an anderer Stelle mehr als die Freie Lizenz. Wie etwa das Alarmieren oder eine Benutzer Verwaltung.

Für Docker

Man kann sich auf git-hub und docker-hub das Zeug entsprechend zusammen suchen.
Ich rate dazu, die entsprechenden Verbindungen zur Aussen(docker)Welt herzustellen. Am häufigsten wird es wohl ein Volume sein damit man Daten von ausserhalb analysieren kann.

docker run -p 8081:8000 -v "<path>:/exchange" -e "SPLUNK_PASSWORD=<password>" -e "SPLUNK_START_ARGS=--accept-license" -d splunk/splunk:latest
docker run -p 8081:8000 -v "<path>:/exchange" -e "SPLUNK_PASSWORD=<password>" -e "SPLUNK_START_ARGS=--accept-license" -d splunk/splunk:latest

Aber auch das linken der entsprechenden Port's ist denkbar.