Zum Hauptinhalt springen

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​

MethodeArtefaktRechteEmpfohlener Betrieb
RPM/DEBspot-agent-saproot für die InstallationSystem-systemd
Portablespot-agent-sap-portableBenutzer ohne rootsystemd --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_64 mit 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 SHA256SUMS aus 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.

InhaltSystempfad
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:

InhaltPortable-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:

  1. Agent und Validator oder deren User-Units stoppen.
  2. Ein privates, verifiziertes Backup von config und data erstellen.
  3. Das neue tar prüfen und in ein anderes Verzeichnis extrahieren, nie über den aktiven Baum.
  4. Nur config/spot-agent-sap.yaml, config/spot-sap-secret.key, data/license und data/spot-agent-sap derselben Installation migrieren.
  5. bin, nwrfcsdk, scripts, share und run nicht aus der alten Version kopieren.
  6. Bei Verwendung der enthaltenen Units den stabilen Pfad $HOME/spot-agent-sap-portable beibehalten, systemd neu laden und zuerst Lizenz, dann Agent starten.
  7. 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​

SymptomPrüfung
Agent endet vor dem Startlicense-check ausführen und license.err prüfen
Bootstrap schlägt fehlURL, Authentifizierung, CA, Namespace und ILM-Rechte prüfen
Portable-Änderung wird ignoriertAgent stoppen und nur run/spot-agent-sap.yaml neu erzeugen
Dienst stoppt nach Abmeldunglinger für den Runtime-Benutzer anfordern
SAP-Bibliothek fehltChecksum erneut prüfen; nwrfcsdk und Wrapper nicht ersetzen
Dokumente vorhanden, Dashboards leerRead Scope+Namespace, schema_version=2, tenant_id=onprem, exakte source_id prüfen und dieses SAP-Target auswählen
Target meldet KonfliktDieselbe source_id liegt in zwei Scopes oder hat abweichende SID/Mandant-Werte; Connector statt Alias korrigieren
Benutzerqualität teilweise/unbekanntAktivierte Quellen und Aktualität prüfen; kein Prozessfehler
Keine lokale UI und kein Port 8080Korrektes Verhalten von Connector-only

Beim Sammeln von Nachweisen keine Konfiguration, Zugangsdaten oder vollständigen Lizenzantworten aufnehmen. Nur bereinigte Statusausgaben und die angegebenen Logs verwenden.