Connector-only
Connector-only installiert nur spot-agent-sap, den lokalen Lizenzvalidator
und das benötigte SAP NetWeaver RFC SDK. Backend, Weboberfläche und
Elasticsearch sind nicht enthalten. Verwende diese Variante, wenn SPOT und
Elasticsearch auf einem anderen Host laufen oder der Agent nahe bei SAP bleiben
muss.
Installationsmethode wählen
| Methode | Artefakt | Rechte | Empfohlener Betrieb |
|---|---|---|---|
| RPM/DEB | spot-agent-sap | root für die Installation | System-systemd |
| Portable | spot-agent-sap-portable | Benutzer ohne root | systemd --user oder Supervisor |
Beide Methoden führen denselben Agent aus und erzeugen denselben Datenvertrag. Connector-only nicht über einer SPOT-Suite installieren und deren Verzeichnisse nicht mischen. Siehe auch Installationsmatrix.
Vor der Installation
Benötigt werden:
- ein Linux-Host
x86_64mit synchronisierter Uhr; - RFC-Konnektivität vom Host zu jedem SAP-System;
- HTTPS-Konnektivität zum Elasticsearch-Cluster, in den der Agent schreibt;
- ein schreibgeschützter SAP-Benutzer mit Berechtigungen für die gewünschten Sammlungsfamilien;
- ein gültiger Online-Schlüssel oder eine Offline-Lizenzdatei;
- Artefakt und
SHA256SUMSaus derselben SPOT Release.
Das offizielle Artefakt enthält bereits das entpackte SDK und die validierten Kompatibilitätsbibliotheken. Kein weiteres SDK in das Paket extrahieren und die Binärdateien nicht ersetzen.
Mit RPM oder DEB installieren
Prüfen und installieren
Im Verzeichnis mit Paket und SHA256SUMS:
sha256sum -c --ignore-missing SHA256SUMS
sudo rpm -Uvh spot-agent-sap-X.Y.Z-1.el10.x86_64.rpm
# oder
sudo dpkg -i spot-agent-sap_X.Y.Z_amd64.deb
Das Paket erstellt den Service-Benutzer. Das Elasticsearch-Ziel bleibt zunächst leer und deaktiviert. Konfiguriere es, bevor der Agent gestartet wird.
| Inhalt | Systempfad |
|---|---|
| Binärdateien und SDK | /opt/spot |
| Bearbeitbare Konfiguration | /etc/spot/.spot-agent-sap.yaml |
| Inkrementeller Zustand | /var/lib/spot-agent-sap |
| Lizenz und Verlauf | /var/lib/spot/license |
| Agent-Log | /var/log/spot/spot-agent-sap.log |
Portable ohne root installieren
Herunterladen, prüfen und extrahieren
Der offizielle Name lautet
spot-agent-sap-portable_X.Y.Z_linux_amd64.tar.gz. Damit die enthaltenen
systemd --user-Units unverändert funktionieren, in den empfohlenen Pfad
extrahieren:
umask 077
SPOT_ARTIFACT=spot-agent-sap-portable_X.Y.Z_linux_amd64.tar.gz
grep -F " ${SPOT_ARTIFACT}" SHA256SUMS | sha256sum -c -
export SPOT_HOME="$HOME/spot-agent-sap-portable"
mkdir -p "$SPOT_HOME"
tar -xzf "$SPOT_ARTIFACT" -C "$SPOT_HOME" --strip-components=1
chmod -R go-rwx "$SPOT_HOME"
Vor der Konfiguration die Paketvariante prüfen:
test -x "$SPOT_HOME/bin/spot-agent-sap"
test -x "$SPOT_HOME/bin/spot-license-blackbox"
test -x "$SPOT_HOME/scripts/run-agent.sh"
test -x "$SPOT_HOME/scripts/run-license.sh"
test ! -e "$SPOT_HOME/bin/spot-server"
test ! -e "$SPOT_HOME/scripts/run-elasticsearch.sh"
Portable erstellt weder Benutzer noch Systemdienste oder Dateien unter /opt,
/etc oder /var. Alles gehört dem Runtime-Benutzer:
| Inhalt | Portable-Pfad |
|---|---|
| Bearbeitbare Konfiguration | $SPOT_HOME/config/spot-agent-sap.yaml |
| Generierte Runtime-Konfiguration | $SPOT_HOME/run/spot-agent-sap.yaml |
| Inkrementeller Zustand | $SPOT_HOME/data/spot-agent-sap |
| Lizenz und Verlauf | $SPOT_HOME/data/license |
| Logs | $SPOT_HOME/log |
| Enthaltenes SDK | $SPOT_HOME/nwrfcsdk |
Bei einem anderen $SPOT_HOME funktionieren die manuellen Skripte weiterhin.
Die enthaltenen Units müssen vor dem Kopieren an diesen Pfad angepasst werden.
Agent konfigurieren
Bearbeite die Konfigurationsdatei der gewählten Installationsmethode. Die
Portable-Vorlage wird mit elasticsearch.enabled: false ausgeliefert. Ziel erst
nach Prüfung von TLS und Authentifizierung vollständig eintragen und aktivieren.
elasticsearch:
url: https://elastic.example.local:9200
transport_profile: external
namespace: production
apikey: "<elastic-zugangsdaten>"
manage_data_streams_ilm: false
enabled: true
sapconnection:
- id: sap-production
alias: SAP Production
system_id: PRD
ashost: sap.example.local
sysnr: "00"
client: "100"
user: SPOT_READER
passwd: "enc:v1:<verschluesseltes-geheimnis>"
lang: EN
time_zone: Europe/Madrid
enabled: true
collections:
metrics: {enabled: true, intervalSeconds: 300}
ccms_events: {enabled: true, intervalSeconds: 300}
jobs: {enabled: true, intervalSeconds: 300}
work_processes: {enabled: true, intervalSeconds: 300}
abap_dumps: {enabled: true, intervalSeconds: 300}
rfc_failures: {enabled: true, intervalSeconds: 300}
certificates: {enabled: true, intervalSeconds: 86400}
sapconnection[].id ist verpflichtend, nicht leer und innerhalb des Prozesses
eindeutig. Sie wird als source_id in jedes Dokument geschrieben und ist das
Benutzer-targetId; SPOT erzeugt kein sap-N, löst keine Aliase auf und
migriert die alte Topologie nicht. Nach dem Trimmen muss die ID
^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$ erfüllen; der Vergleich ist
case-sensitive. N SAP-Blöcke dürfen denselben
Elasticsearch+Namespace verwenden. Für mehrere Cluster läuft eine weitere
Connector-Instanz mit eigener Konfiguration und eigenem Dienst. Ein SAP darf
nicht zwei Connectoren gehören.
Genau eine Elasticsearch-Authentifizierung verwenden: apikey oder
username/password. Bei einer privaten CA nur das öffentliche Zertifikat in
den Konfigurationsbereich kopieren und ca_file mit einem absoluten Pfad
angeben. insecure_skip_verify behält die Verschlüsselung bei, prüft aber nicht
die Serveridentität; nur als temporäre, dokumentierte Ausnahme verwenden.
SAP passwd muss einen für dieselbe Installation verschlüsselten enc:v1:-
Wert enthalten. Das Passwort weder im Klartext speichern noch als
Prozessargument übergeben. Bei Portable
$SPOT_HOME/config/spot-sap-secret.key zusammen mit der Konfiguration
aufbewahren. Bei Verlust oder Austausch dieses Schlüssels können vorhandene
Zugangsdaten nicht mehr entschlüsselt werden.
enc:v1: sicher erzeugen
Bei RPM/DEB den Befehl als Service-Benutzer ausführen. Er fragt das SAP-Passwort ohne Echo ab und schreibt ausschließlich den verschlüsselten Wert:
sudo -u spot /opt/spot/bin/spot-agent-sap encrypt
Die einzige Zeile enc:v1:... nach sapconnection[].passwd kopieren. Wenn
eine Automatisierung das Geheimnis bereits über einen geschützten Stream
liefert, --stdin verwenden; den Klartext nie in die Befehlszeile schreiben:
IFS= read -r -s -p 'SAP-Passwort: ' SPOT_SAP_PASSWORD; printf '\n' >&2
printf '%s' "$SPOT_SAP_PASSWORD" |
sudo -u spot /opt/spot/bin/spot-agent-sap encrypt --stdin
unset SPOT_SAP_PASSWORD
Alternativ eine temporäre reguläre, symlink-freie und private Datei verwenden:
sudo install -o spot -g spot -m 0600 /geschuetzter/pfad/passwort /run/spot-sap-password
sudo -u spot /opt/spot/bin/spot-agent-sap encrypt \
--password-file /run/spot-sap-password
sudo rm -f /run/spot-sap-password
Bei Portable den Wrapper des Artefakts aufrufen; er ermittelt seine eigene
Wurzel und verwendet den Schlüssel unter config/:
"$HOME/spot-agent-sap-portable/bin/spot-agent-sap" encrypt
Privates Docker-Image mit temporärem Passwort bauen
Beim Erstellen eines privaten Connector-only-Images kann das Dockerfile das
Passwort über das BuildKit-Secret sap_password einlesen und während des
Builds spot-agent-sap encrypt --password-file /run/secrets/sap-password
ausführen. In diesem Fall musst du weder file-passwd-sap erstellen noch in
.dockerignore aufnehmen. Übergib den Wert direkt aus einer temporären
Umgebungsvariable:
SAP_PASSWORD='SAP_PASSWORT' \
DOCKER_BUILDKIT=1 docker build \
--no-cache \
--secret id=sap_password,env=SAP_PASSWORD \
--tag spot-agent-sap:2.0.4 .
Das Dockerfile muss dieses Secret mit
RUN --mount=type=secret,id=sap_password,target=/run/secrets/sap-password,required=true
einbinden. BuildKit übernimmt es nicht in die Image-Layer. Der Klartext kann
jedoch im lokalen Shell-Verlauf verbleiben; verwende diese Methode daher nur
auf einem kontrollierten Build-Host. Das Passwort im Dockerfile nicht über
ARG oder ENV deklarieren. Enthält das Image zusätzlich die Offline-Lizenz
und den Verschlüsselungsschlüssel der Installation, muss es in einer privaten
Registry bleiben.
Der Systemschlüssel liegt unter /etc/spot/spot-sap-secret.key, der portable
Schlüssel unter $SPOT_HOME/config/spot-sap-secret.key. Der Ciphertext ist an
diesen Schlüssel gebunden. Ihn in das geschützte Konfigurationsbackup aufnehmen
und zusammen mit den enc:v1:-Werten wiederherstellen. Nie löschen, neu
erzeugen oder aus einer anderen Installation kopieren: Ein anderer Schlüssel
kann vorhandene Passwörter nicht entschlüsseln. Hat ein vorhandener portabler
Schlüssel nicht den Modus 0600, schlägt der Befehl fehl, ohne ihn zu ändern.
Mit manage_data_streams_ilm: false prüft Bootstrap nur die Verbindung und
erstellt keine Ressourcen. Mit true benötigt der Agent
Administrationsberechtigungen und verwaltet ausschließlich die Data Streams
metrics und logs. namespace muss einem Read Scope des SPOT-Backends
entsprechen. Das Backend entdeckt jedes SAP über
tenant_id=onprem + source_id; falscher Scope oder doppelte IDs ergeben eine
Binding-Diagnose und niemals stillen Fallback.
SPOT 2.0 unterstützt keine getrennten Indizes für Jobs, Events oder WPInfo. Aus
namespace werden drei Namen abgeleitet: metrics-Telemetrie,
logs-Telemetrie und der getrennte operative Agent-Stream.
Lizenz aktivieren oder installieren
Ohne gültige Lizenz führt der Agent weder elastic-bootstrap noch run aus.
Nutzungswarnungen stoppen den Connector nicht. Eine fehlende, ungültige,
abgelaufene oder widerrufene Lizenz stoppt ihn.
RPM/DEB
sudo systemctl enable --now spot-license.service
sudo systemctl status spot-license.service --no-pager
# Online-Aktivierung über die verdeckte Eingabe
sudo -u spot /opt/spot/bin/spot-agent-sap license-activate
Für eine Offline-Lizenz:
sudo install -o spot -g spot -m 0600 /empfangener/pfad/lizenz /run/spot-license.offline
sudo -u spot /opt/spot/bin/spot-agent-sap license-install /run/spot-license.offline
sudo rm -f /run/spot-license.offline
Portable mit systemd --user
Die enthaltenen Units zeigen auf $HOME/spot-agent-sap-portable. Units
installieren und zuerst den Validator starten:
mkdir -p "$HOME/.config/systemd/user"
install -m 0644 "$SPOT_HOME/systemd-user/spot-license.service" \
"$HOME/.config/systemd/user/spot-license.service"
install -m 0644 "$SPOT_HOME/systemd-user/spot-agent-sap.service" \
"$HOME/.config/systemd/user/spot-agent-sap.service"
systemctl --user daemon-reload
systemctl --user enable --now spot-license.service
"$SPOT_HOME/bin/spot-agent-sap" license-activate
# oder: "$SPOT_HOME/bin/spot-agent-sap" license-install /geschuetzter/pfad/lizenz
"$SPOT_HOME/bin/spot-agent-sap" license-check
systemctl --user enable --now spot-agent-sap.service
Der Host-Administrator muss linger für den Runtime-Benutzer aktivieren, wenn der Dienst nach der Abmeldung weiterlaufen soll. User-Units und manuelle Skripte nicht gleichzeitig starten.
Portable mit manuellem Start
Für eine kontrollierte Prüfung oder einen anderen Supervisor:
umask 077
"$SPOT_HOME/scripts/run-license.sh" \
>"$SPOT_HOME/log/license.out" 2>"$SPOT_HOME/log/license.err" &
printf '%s\n' "$!" >"$SPOT_HOME/run/license.pid"
"$SPOT_HOME/bin/spot-agent-sap" license-activate
# oder: "$SPOT_HOME/bin/spot-agent-sap" license-install /geschuetzter/pfad/lizenz
"$SPOT_HOME/bin/spot-agent-sap" license-check
"$SPOT_HOME/scripts/run-agent.sh"
run-agent.sh hält den Agent im Vordergrund, damit der Elternprozess ihn
überwachen kann. Ist der lokale Validator nicht erreichbar, startet das Skript
ihn und schreibt die Ausgaben nach $SPOT_HOME/log/license.out und
license.err.
Den Online-Schlüssel nie als Positionsargument übergeben. Für Automatisierung
--stdin oder --key-file mit einer regulären 0600-Datei verwenden. Unter
Lizenzen und Verlängerung stehen Status, Verlauf
und verschlüsselter Verlängerungsexport ohne Weboberfläche.
Konfigurationsänderungen anwenden
Bei RPM/DEB /etc/spot/.spot-agent-sap.yaml bearbeiten und den Dienst neu
starten. Bei Portable leitet jeder Aufruf von run-agent.sh eine neue
$SPOT_HOME/run/spot-agent-sap.yaml aus der bearbeitbaren Datei ab, veröffentlicht
sie atomar mit Modus 0600 und verwendet dieselbe Kopie für Bootstrap und Daemon.
Beim Speichern in der Oberfläche einer lokalen Portable-Suite serialisiert SPOT
Speichern und Neustart. Ein identisches Speichern startet einen gesunden Agent
nicht neu. Kann der Agent nicht gestoppt oder gestartet werden, meldet die
Oberfläche den Fehler und dasselbe Speichern kann wiederholt werden. Solange eine
PID nicht verifiziert werden kann, darf kein zweiter Agent gestartet werden. Mit
systemd --user oder manuellem Start den überwachten Prozess nach der Änderung
neu starten. config/spot-sap-secret.key, data/license und
data/spot-agent-sap nicht löschen; die generierte Runtime-Datei muss nicht
entfernt werden.
Beim Neuladen einer RPM/DEB-Konfiguration bereitet der Agent zuerst die Data Streams des neuen Namespace vor. Erst danach starten Lizenznachweise und SAP-Extraktion. Schlägt der Bootstrap fehl, bleibt der Dienst fehlerhaft, ohne einen inkompatiblen normalen Index anzulegen; Target korrigieren und neu starten.
Installation prüfen
RPM/DEB
sudo -u spot /opt/spot/bin/spot-agent-sap license-status --json
sudo -u spot /opt/spot/bin/spot-agent-sap license-check
sudo -u spot /opt/spot/bin/spot-agent-sap elastic-bootstrap \
--config /etc/spot/.spot-agent-sap.yaml
sudo systemctl enable --now spot-agent-sap.service
sudo systemctl status spot-agent-sap.service --no-pager
sudo journalctl -u spot-agent-sap -n 120 --no-pager
Der erste Start kann bis zu 3 Minuten dauern, während der Bootstrap auf Elasticsearch wartet und seine Prüfungen abschließt. In diesem Zeitraum hält systemd den Dienst im Status „activating“.
Portable
"$SPOT_HOME/bin/spot-agent-sap" license-status --json
"$SPOT_HOME/bin/spot-agent-sap" license-check
test -f "$SPOT_HOME/run/spot-agent-sap.yaml"
tail -n 120 "$SPOT_HOME/log/spot-agent-sap.log"
systemctl --user status spot-license.service spot-agent-sap.service --no-pager
journalctl --user -u spot-agent-sap.service -n 120 --no-pager
Der Portable-Launcher führt vor dem Daemon elastic-bootstrap aus. Bei
ungültiger Verbindung, Authentifizierung, TLS-Konfiguration oder Mappings endet
er mit Fehler und startet die Extraktion nicht.
Anschließend in der entfernten SPOT-Instanz Landing/Metrics, Events, Job
Monitoring, Certificates sowie RFC & Integrations prüfen. Das Backend
interpretiert ausschließlich Dokumente mit schema_version=2; Legacy-Dokumente
werden ignoriert. Fehlt für das gewählte Target ein echtes v2-Signal, zeigt die
Ansicht je nach Vertrag Keine Daten oder UNKNOWN. Im Remote-Modus kann das
Journal eines lokalen Connectors Standalone-Lesezugriffe weder freigeben noch
blockieren.
Fähigkeiten und Sicherheit
Der Probe jeder Verbindung markiert jede Familie als supported,
unauthorized, unavailable oder error. Eine nicht verfügbare Familie
blockiert die anderen nicht. Der RFC-Benutzer muss schreibgeschützt sein:
- Dumps enthalten Fehler, Programm, Benutzer, Mandant, Host und die allgemeine
Laufzeitfehlerbeschreibung aus
SNAPT; sie enthalten weder den Langtext einer ST22-Instanz noch Speicher- oder Geschäftsdaten; - RFC-Datensätze enthalten Status, Ziel, Queue, Funktion und Fehler, nie Payloads;
- Zertifikatsdatensätze enthalten Subject, Issuer, Seriennummer, Fingerprint, PSE/Anwendung und Gültigkeit, nie private Schlüssel.
Der Agent bewahrt Watermarks, Überlappung und Deduplizierung. Der erste Jobs-/Dump-/RFC-Backfill umfasst 24 Stunden.
Nach dem Upgrade eines betroffenen Connectors führt SPOT einmalig eine
begrenzte Reparatur der in den vorherigen 30 Tagen aufbewahrten
Dump-Beschreibungen aus. Die Reparatur ist von der aktuellen Sammlung getrennt,
auf Source und Mandant begrenzt und hängt eine deterministische Beobachtung an;
historische Dokumente werden weder geändert noch gelöscht. Nach einem Neustart
verwendet der Wiederholungsversuch dieselben Identitäten, und create-only
Konflikte gelten als Deduplizierung. Der Fortschritt liegt unter
/var/lib/spot-agent-sap/dump-description-repair-v2.json, im Portable-Modus
unter $SPOT_HOME/data/spot-agent-sap/dump-description-repair-v2.json. Nehmen
Sie die Datei in das State-Backup auf und bearbeiten Sie sie nicht, um eine
erneute Ausführung zu erzwingen.
Sammlungen verwenden feste Frequenz, deterministische Phasen und einen auf zwei Ausführungen begrenzten Dispatcher. Metrics, Work Processes und der Long-running-jobs-Snapshot behalten Priorität; verspätete Zyklen werden ohne Backlog zusammengefasst. Jobs und CCMS werden seitenweise verarbeitet, Elasticsearch-Bulks sind auf 500 Dokumente oder 8 MiB begrenzt. Die Unit begrenzt den Agenten auf zwei Cores, setzt Memory Pressure bei 640 MiB und stoppt ihn vor 768 MiB.
Backup, Upgrade und Rollback
Bei RPM/DEB denselben Paketnamen mit rpm -Uvh oder dpkg -i neu installieren.
Konfiguration, Lizenz, Journal und inkrementeller Zustand bleiben erhalten.
Siehe Upgrade, Backup, Restore und Deinstallation.
Für Portable:
- Agent und Validator oder deren User-Units stoppen.
- Ein privates, verifiziertes Backup von
configunddataerstellen. - Das neue tar prüfen und in ein anderes Verzeichnis extrahieren, nie über den aktiven Baum.
- Nur
config/spot-agent-sap.yaml,config/spot-sap-secret.key,data/licenseunddata/spot-agent-sapderselben Installation migrieren. bin,nwrfcsdk,scripts,shareundrunnicht aus der alten Version kopieren.- Bei Verwendung der enthaltenen Units den stabilen Pfad
$HOME/spot-agent-sap-portablebeibehalten, systemd neu laden und zuerst Lizenz, dann Agent starten. - Lizenz, Bootstrap, Ingestion und Verlaufskontinuität prüfen, bevor die alte Version entfernt wird.
data/license nicht in eine andere Installation klonen: Dort liegt die lokal
prüfbare Identität. Für ein Rollback den vorherigen Binärstand und dessen
vollständiges kompatibles Backup wiederherstellen.
Portable deinstallieren
User-Units deaktivieren und stoppen, ihre Kopien aus
$HOME/.config/systemd/user entfernen und systemctl --user daemon-reload
ausführen. config und data vorher archivieren, falls Restore oder
Verlängerung benötigt werden. Den Portable-Baum erst nach Prüfung des Backups
entfernen. Eine korrekte Non-root-Installation hat keine weiteren SPOT-Pfade zu
bereinigen.
Schnelle Fehlerbehebung
| Symptom | Prüfung |
|---|---|
| Agent endet vor dem Start | license-check ausführen und license.err prüfen |
| Bootstrap schlägt fehl | URL, Authentifizierung, CA, Namespace und ILM-Rechte prüfen |
| Portable-Änderung wird ignoriert | Agent stoppen und nur run/spot-agent-sap.yaml neu erzeugen |
| Dienst stoppt nach Abmeldung | linger für den Runtime-Benutzer anfordern |
| SAP-Bibliothek fehlt | Checksum erneut prüfen; nwrfcsdk und Wrapper nicht ersetzen |
| Dokumente vorhanden, Dashboards leer | Read Scope+Namespace, schema_version=2, tenant_id=onprem, exakte source_id prüfen und dieses SAP-Target auswählen |
| Target meldet Konflikt | Dieselbe source_id liegt in zwei Scopes oder hat abweichende SID/Mandant-Werte; Connector statt Alias korrigieren |
| Benutzerqualität teilweise/unbekannt | Aktivierte Quellen und Aktualität prüfen; kein Prozessfehler |
Keine lokale UI und kein Port 8080 | Korrektes Verhalten von Connector-only |
Beim Sammeln von Nachweisen keine Konfiguration, Zugangsdaten oder vollständigen Lizenzantworten aufnehmen. Nur bereinigte Statusausgaben und die angegebenen Logs verwenden.