Zum Hauptinhalt springen

Troubleshooting on-premise

Lizenz erforderlich oder Connector-Neustartschleife​

Zuerst Validator und bereinigten Status prüfen:

systemctl status spot-license.service --no-pager
sudo -u spot /opt/spot/bin/spot-agent-sap license-status --json
sudo -u spot /opt/spot/bin/spot-agent-sap license-check
journalctl -u spot-license.service -u spot-agent-sap.service -n 120 --no-pager

Bei fehlender Lizenz den Online-Schlüssel aktivieren oder die Offline-Datei nach Lizenzen und Verlängerung installieren. expired, revoked und invalid blockieren das Produkt; eine Überschreitung von Benutzer- oder Instanzgrenzen erzeugt nur eine Warnung und darf keine Neustarts auslösen. Schlüssel oder Raw-Antworten niemals in Tickets oder Logs einfügen.

War eine Online-Lizenz gültig und ist der entfernte Dienst vorübergehend nicht erreichbar, kann SPOT bis zu sieben Tage Grace seit der letzten erfolgreichen Validierung anzeigen, niemals über das Ablaufdatum hinaus. Ein Fehler des lokalen Validators aktiviert diese Grace-Phase nicht; zuerst spot-license.service korrigieren.

UI öffnet nicht​

Prüfen Sie:

systemctl status spot-server --no-pager
ss -ltnp | grep 8080
journalctl -u spot-server -n 120 --no-pager

Wenn der Port belegt ist, ändern Sie den Port über Setup oder Runtime-Konfiguration.

Setup speichert HTTPS nicht​

Prüfen Sie, dass Zertifikat und Schlüssel existieren, zusammengehören und vom Prozessbenutzer gelesen werden können. HTTP bleibt gültig, wenn TLS noch nicht aktiviert werden soll.

Eingebettetes Elastic startet nicht​

Prüfen Sie Speicher, Berechtigungen und Logs:

systemctl status spot-elasticsearch --no-pager
journalctl -u spot-elasticsearch -n 120 --no-pager
curl -sS http://127.0.0.1:9200

Der Service darf nur auf 127.0.0.1:9200 lauschen. Im eingebetteten Modus gehören Benutzer, API-Key, CA und insecure_skip_verify nicht in die Konfiguration; speichern Sie embedded erneut, falls Werte eines früheren externen Ziels verblieben sind.

Externes Elastic-HTTP wird blockiert​

Externe Profile erfordern HTTPS. Ein Legacy-HTTPS-Profil ohne transport_profile wird sicher als external klassifiziert; ein Legacy-HTTP-Profil blockiert den neuen Runtime mit elastic_transport_migration_required, bis es migriert wurde. Wählen Sie System-CAs, eine importierte CA oder Zertifikatsvalidierung deaktivieren. Die letzte Option erlaubt kein HTTP. Nur http://127.0.0.1:9200 ohne Zugangsdaten kann als embedded klassifiziert werden, und nur innerhalb von spot-suite.

Elasticsearch ausstehend​

Dieser Zustand ist nach Aufschub in spot-suite-external gültig. Health, Benutzer und Konfiguration bleiben verfügbar. HTTPS-Ziel konfigurieren, Test ausführen und speichern. Keinen Embedded-Dienst starten: er ist nicht enthalten.

Permission denied bei Code oder SDK​

/opt/spot darf nicht spot oder spot-elastic gehören. System-Payload bleibt root-owned; nur Daten und Logs sind veränderlich. Ein unsicherer alter Baum wird durch Neuinstallation repariert. Portable $SPOT_HOME nur dem dedizierten Runtime-Benutzer zugänglich machen.

Ein privates Zertifikat schlägt fehl​

  1. Prüfen Sie Hostname, Ablauf und Kette.
  2. Importieren Sie die Unternehmens-CA unter Configuration > Trust store und ordnen Sie sie zu.
  3. Wenn Sie das Risiko vorübergehend akzeptieren müssen, aktivieren Sie ausdrücklich Zertifikatsvalidierung deaktivieren und speichern Sie.

Es gibt keinen automatischen Fallback. Die Ausnahme erhält Verschlüsselung, authentifiziert den Server aber nicht; die Warnung bleibt nach Reload und Neustart sichtbar. Eine geänderte TLS-Richtlinie verlangt Passwort oder API-Key erneut.

Eine CA kann nicht gelöscht werden​

SPOT blockiert das Löschen, solange Elastic, LDAP oder KI die CA nutzt. Stellen Sie alle betroffenen Ziele auf eine andere CA oder System-Trust um und speichern Sie zuerst. Bearbeiten Sie keine Fingerprints manuell und tragen Sie keinen Dateipfad in die Konfiguration ein.

LDAPS oder StartTLS verbindet nicht​

Prüfen Sie Schema/Modus, Host, Port, Bind-DN, SNI und CA. Geben Sie das Bind-Passwort nach jeder Identitätsänderung neu ein; eine Maske wird nicht wiederverwendet. Link-local-, Metadata-, Multicast- und unspecified Adressen bleiben auch bei deaktivierter Zertifikatsprüfung gesperrt.

Keine SAP-Daten​

Prüfen Sie:

  • RFC SDK im Service verfügbar.
  • SAP-Benutzer und Secret.
  • RFC-Ports.
  • SAP-Verbindung ist aktiviert.
  • Logs von spot-agent-sap.

Wenn nur CCMS events fehlschlägt, muss zwischen einem RFC-Fehler und einem Alarm ohne Text unterschieden werden. Ein Alarm mit gültiger Identität, Zeitstempel und Wert bleibt erhalten, auch wenn SAP die Meldung auslässt; SPOT zeigt einen stabilen Fallback-Text. Berechtigungsfehler, beschädigte Antworten oder ein fehlender VALUE stoppen den Zyklus weiterhin und behalten den alten Watermark. Die Diagnose trennt geeignete Knoten, Kandidaten, ausgegebene Ereignisse, Fallbacks und echte Fehler.

Ein ABAP-Dump zeigt keine Beschreibung​

Öffnen Sie den Dump unter 03 Work Process und prüfen Sie Description status. SPOT zeigt die allgemeine Laufzeitfehlerbeschreibung, die SAP in SNAPT speichert. Der Langtext oder das instanzbezogene Detail aus ST22 wird nicht erfasst.

  • complete: SAP hat eine gültige Beschreibung geliefert.
  • empty: Der Lesevorgang war gültig, lieferte aber keinen Text.
  • unauthorized: Der RFC-Benutzer durfte die Beschreibung nicht lesen.
  • unavailable: SAP oder der Lesevorgang war vorübergehend nicht verfügbar.
  • unsupported: SPOT konnte die Antwortgrenzen nicht nachweisen und hat die Antwort abgewiesen.
  • legacy_missing: Das Dokument stammt von einem älteren Connector, der keine nutzbare Beschreibung erfasst hat.

Lassen Sie nach dem Upgrade einen ABAP-Dump-Zyklus und die historische Reparatur abschließen. Prüfen Sie im Connector-Status, dass die aktuelle Sammlung fortschreitet und die Subcapability abap_dump_description_repair den Status supported erreicht. Die Reparatur prüft einmalig ein 30-Tage-Fenster pro Source/Mandant, hängt neue Beobachtungen an, ohne ältere zu überschreiben, und wiederholt sich nach einer Unterbrechung idempotent. Ein älterer, durch die SAP-Retention gelöschter Dump oder ein Fehler ohne SNAPT-Text kann nicht als ST22-Detail rekonstruiert werden.

Prüfen Sie bei unauthorized den RFC_READ_TABLE-Zugriff auf SNAPT. Bewahren Sie bei unsupported oder unavailable den bereinigten Code auf und prüfen Sie Verbindung sowie DDIC-Metadaten. Fügen Sie keine Zeilen, Laufzeitfehlerkennungen, Programme, Benutzer oder Zugangsdaten bei. Bestätigen Sie außerdem, dass Metrics, Work Processes, Jobs, RFC und Certificates weiter fortschreiten; ein Fehler der historischen Reparatur darf diese Familien nicht blockieren. Öffnen Sie für das vollständige instanzbezogene Detail den entsprechenden Dump direkt in ST22.

Jobs läuft nicht weiter oder zeigt unsupported_rfc_read_table_shape​

Der Connector ordnet angeforderte Felder anhand der DDIC-Metadaten, bevor er RFC_READ_TABLE liest. Damit werden sowohl SAP-Systeme unterstützt, die Spalten in der angeforderten Reihenfolge liefern, als auch Systeme mit physischer DDIC-Reihenfolge. Ein mehrdeutiges Format oder inkonsistente Metadaten wird mit unsupported_rfc_read_table_shape abgewiesen: SPOT exportiert diesen Lesevorgang nicht und verschiebt den Cursor nicht. Dieser Vertrag verspricht keine Kompatibilität mit beliebigen Formaten, deren Spaltengrenzen nicht eindeutig nachweisbar sind.

Prüfen Sie nach einem Update eine aktuelle Ausführung:

  1. Wählen Sie in Jobs und SM37 dieselbe SAP-Quelle und denselben Zeitraum. Prüfen Sie, ob Start, Ende und JOBCOUNT zur selben Ausführung gehören.
  2. Prüfen Sie in spot-agent-sap mindestens zwei vollständige Jobs-Zyklen: Der letzte erfolgreiche Zyklus und sein Cursor müssen ohne Datums- oder Zeitfehler weiterlaufen.
  3. Öffnen Sie eine beendete Ausführung und prüfen Sie, ob das Job Log vollständig oder leer ist beziehungsweise einen eindeutigen Status zeigt. Ein fehlgeschlagener Tabellenlesevorgang darf ein Teilprotokoll nicht als vollständig darstellen.
  4. Bestätigen Sie, dass die übrigen Sammlungen und der Heartbeat weiterlaufen.

Wenn der Fehler bestehen bleibt, prüfen Sie die Berechtigung für RFC_READ_TABLE und bewahren Sie nur die bereinigte Diagnose auf. Fügen Sie keine SAP-Zeilen, Job-Namen, Benutzer, Meldungen oder Zugangsdaten bei.

Programme ist leer oder seine Fähigkeit ist unvollständig​

Prüfen Sie Configuration > SAP connections > Program statistics und den letzten Check. unauthorized erfordert minimalen S_RFC-Zugriff auf SWNC_GET_STATRECS_FRAME; unsupported bedeutet, dass die Release das Remote-Fenster READ_START_DATE/TIME, READ_END_DATE/TIME, READ_TIME_ZONE, MAX_RECORDS und READ_ONLY_MAINRECORDS nicht bereitstellt; partial bewahrt alle Hauptzeiten des bestätigten Intervalls, während batchstep, rfc, http und epp nicht verfügbar bleiben. Installieren Sie keinen eigenen Z-Code und deuten Sie einen fehlenden Subrecord nicht als „keine Aufrufe“. SPOT verlangt optionales IMPORT INT MAX_RECORDS mit nativem Default -1 und READ_ONLY_MAINRECORDS als IMPORT CHAR im Descriptor derselben Invokation, sendet READ_ONLY_MAINRECORDS="X", lässt MAX_RECORDS weg und sendet nicht 500. Frames sind höchstens 60 Sekunden breit. Ein Blatt mit mehr als 400 Hauptdatensätzen behält alle Ausführungen bei und verkleinert nur das künftige Maximum dieser Quelle; genau 400 reduzieren es nicht. Die Anzahl zeigt keine Kürzung an. Das Protokoll darf leer sein oder nur Standard-Abschlusszeilen mit einem dezimalen RC von null enthalten. Ein fehlendes, mehrdeutiges, anders strukturiertes oder von null abweichendes Protokoll lässt das Blatt offen; sein Fehlertext wird nicht protokolliert. Explizite Kürzung lässt das Blatt ebenfalls offen und kann bis auf eine Sekunde geteilt werden, mit höchstens 32 Programs-RFC-Lesevorgängen in gleitenden 60 Sekunden über alle Quellen. Das Budget übersteht Neustarts; bei Erschöpfung wartet die Fortsetzung ohne SAP-Verbindung und ohne weiteren Worker. Jedes Blatt bestätigt nur seine gelesene Grenze nach dem ACK. Jeder Horizont schreitet höchstens 30 Minuten voran; liegt der Rückstand über dem Sammelintervall plus 120 Sekunden, beginnt der nächste sofort. Prüfen Sie die letzte bestätigte SAP-Zeit statt nur den Eingang. Erscheint weiterhin error, unterscheidet die bereinigte Diagnose ein erschöpftes Aufrufbudget, Sättigung im kleinsten Frame, ein ungültiges Fenster, das Gesamtbudget (50.000 Dokumente/32 MiB normalisierter Inhalt einschließlich Manifest) oder einen Identitäts-/Systemkonflikt. Jede RFC-Antwort behält ihre Grenze von 20.000 Zeilen/64 MiB. Lese- oder Validierungsfehler lassen keine exportierbaren Dokumente zu und bewahren den Checkpoint. Ein gültiges Blatt enthält alle Hauptdatensätze und ein Manifest mit exakter Anzahl und exaktem Fenster; erst seine Bestätigung verschiebt den Checkpoint. Bei Abbruch oder fehlender Bestätigung während des Exports bleibt der Cursor ebenfalls unbestätigt, auch wenn das Ziel bereits empfangene, deduplizierbare Dokumente behalten kann. Ein ungelesener Rest wird nie als abgedeckt veröffentlicht. Erweitern Sie bei kurzer SAP-Aufbewahrung den Zeitraum und bestätigen Sie Heartbeat und Fortschritt aller anderen Sammlungen.

Die Klasse ist nur aussagekräftig, wenn die installierte Version sie meldet; ein früherer generischer Fehler beweist nicht, welche Klasse vorlag. Bevor der Kindprozess startet, gilt für die Zulassung der Quelle ein separates Limit von 30 Sekunden. Erst nach erfolgreicher Zulassung verarbeitet er ein Teilfenster mit einem neuen Budget von 240 Sekunden und endlichen Reserven für Beendigung und Reap. Er verwendet niemals Restzeit eines vorherigen Lesevorgangs. Läuft die Zulassung ab oder wird sie abgebrochen, startet der Worker nicht; es gibt weder Teilung eines Teilfensters, Export, ACK noch Cursor-Fortschritt. Die nächste Quelle in der Warteschlange kann fortfahren. Beim Ablauf des Worker-Budgets können bereinigte Grenzen für Descriptor-Suche, Parameter-Vorbereitung, Output-Auswahl, Invoke und Decode auch ohne Terminal-Record erhalten bleiben. Dauer null markiert den Eintritt, eine positive Dauer den Abschluss. Verwenden Sie sie nur für die letzte beobachtete Stufe: Sie enthalten keine RFC-Werte, beweisen keinen Abschluss durch SAP und erlauben weder Export noch ACK oder Checkpoint-Fortschritt. Wenn der Kindprozess sein exaktes 240-Sekunden-Limit erreicht und das aktive Teilfenster noch teilbar ist, exportiert der Koordinator nichts und lässt Cursor sowie frühere ACKs unverändert. Er ersetzt dauerhaft nur dieses Teilfenster durch zwei zusammenhängende Hälften, bewahrt die übrige Queue und den Backoff und reiht die Fortsetzung sofort mit fairer Verteilung wieder ein. Ein Abbruch durch Rollout oder Reload hat Vorrang, erlaubt diese Teilung niemals und wird als Abbruch der Sammlung statt als Handoff-Fehler gemeldet; ein tatsächlich fehlender Bericht bleibt ein Fehler.

Ein vollständiger Lesevorgang ab 60 Sekunden oder mit mehr als 400 Hauptdatensätzen halbiert das dauerhafte Maximum für die nächsten Teilfenster dieser Quelle von 60 Sekunden bis auf eine Sekunde. Acht vollständige, bestätigte Blätter der gelernten Größe nacheinander mit je weniger als zehn Sekunden, höchstens 100 Hauptdatensätzen und 8 MiB normalisiert können das Maximum nur für den nächsten Horizont bis auf 60 Sekunden verdoppeln. Fehler setzen die Folge zurück; Timeout oder Sättigung verhindern Wachstum für 15 Minuten. Kleinere Blätter können die 32 Zulassungen pro Minute früher verbrauchen; die dauerhafte Fortsetzung wartet auf Kapazität, ohne bestätigte Abdeckung zu ändern. Dies senkt den erwarteten Working Set, garantiert aber kein universelles Speicherlimit. Wenn ein kleines Fenster weiterhin 240 Sekunden ausschöpft, bleibt der Stillstand ungelöst.

Prüfen Sie bei Speicherdruck RSS/PSS des gesamten Prozesses, memory.current, memory.high-Ereignisse, PSI, die Dauer von Program statistics und den Fortschritt der übrigen Familien. Reclaim ohne OOM beweist allein weder ein Go-Heap-Leck noch einen nativen Spin; ein einzelner Heartbeat beweist keine Kontinuität. Deaktivieren Sie bei Bedarf vorübergehend nur program_statistics, um die übrigen Sammlungen wiederherzustellen. Halten Sie die vorherige Konfiguration fest und installieren Sie eine korrigierte, unterstützte Connector-Version. Messen Sie den gesamten Prozess unter realer SAP-Last gegen den Host-Headroom und bestätigen Sie den Fortschritt aller Familien, bevor Sie die Sammlung wieder aktivieren. Erhöhen Sie Ressourcenlimits nicht als ersten Schritt. Programs zu deaktivieren ist keine dauerhafte Lösung. Prüfen Sie außerdem, dass ABAP dumps auch ohne neue Dumps einen aktuellen letzten Check behält, und vergleichen Sie Dokumentzeiten mit Programs-Deadlines. Prüfen Sie Metrics, Work Processes, Jobs, Job Logs, RFC und Certificates; ein Heartbeat allein beweist keine Kontinuität.

Führen Sie bei nicht verwaltetem Elasticsearch Bootstrap aus und prüfen Sie program_template_update_required. Fügen Sie bei diesem Ergebnis die Programs-Mappings dem externen Template hinzu. Verwechseln Sie die Aktion nicht mit template_update_required der Job Logs: Die Programs-Prüfung ist unabhängig und darf keinen gültigen Job-Log-Reader deaktivieren. Die Semantik von Zeiten und Abhängigkeiten steht unter Programme.

Dashboards ohne Daten​

Prüfen Sie, dass der Selektor die erwartete SAP-source_id und nicht die ID eines Read Scope enthält. Unter Configuration > Elasticsearch Read URL+ Namespace und Test prüfen; danach Dokumente mit schema_version=2, tenant_id=onprem und nicht leerer source_id in den exakten metrics- und logs-Streams bestätigen. Ein ausgefallener Scope betrifft nur seine Targets.

In den Modi remote und hybrid hängen diese Lesezugriffe nicht vom Fähigkeiten-Journal des lokalen Connectors ab. Sind nur Legacy-Dokumente vorhanden, ignoriert SPOT sie und die Ansicht bleibt bei Keine Daten oder UNKNOWN; korrigieren oder aktualisieren Sie den Producer. Es gibt weder eine automatische Migration noch einen Fallback auf eine andere Identität oder einen anderen Read Scope.

target_binding_conflict bedeutet dieselbe source_id in zwei Scopes; target_identity_conflict bedeutet abweichende SID/Mandant-Werte. Korrigieren Sie den produzierenden Connector—Alias oder anderes Elasticsearch lösen den Konflikt nicht. Wenn Events Daten haben, Operations aber leer bleibt, dieselbe Metrik mit demselben Target und Zeitfenster prüfen.

stale bedeutet, dass das SAP keine aktuelle Beobachtung gesendet hat. Das Target bleibt erhalten und an denselben Scope gebunden; prüfen Sie Connector und Zeitplan. unreachable bedeutet, dass der zugeordnete Read Scope nicht antwortet: Testen Sie die Karte unter Configuration und korrigieren Sie Netzwerk, TLS oder Lese-Credentials. Die API liefert target_storage_unavailable nur für Targets dieses Scopes; erwarten oder konfigurieren Sie keinen Fallback zu einem anderen Elasticsearch.

DB wechselt zwischen No data und OK​

Oracle Health verwendet ausschließlich Oracle / CCMS_ORA_health_check_run_pfcl / Database health check / Last succ. database check. Diese exakte Identität muss für die gewählte source_id eintreffen. SPOT leitet Health nie aus Latenz, Backups oder Tablespaces ab. Ohne echte Health-Signal für 90 Minuten ist UNKNOWN das korrekte stabile Ergebnis; Refreshes oder ein anderes SAP im Namespace dürfen keinen Wechsel verursachen.

Takt oder Ressourcenverbrauch des Agenten​

Eine Beobachtung kann unter der vorherigen Bucket-Anfangsbeschriftung stehen; Observed bleibt die SAP-Zeit. Prüfen Sie in den Logs scheduled_at, start_delay_ms, duration_ms, skipped_cycles, @timestamp und ingested_at. Erhöhen Sie nicht die Freshness, um Scheduler-Lag zu verdecken.

Berechnen Sie CPU aus der Differenz zweier process_cpu_time_ns-Samples. Prüfen Sie außerdem RSS/PSS, Heap/GC/cgo, Threads, Queue, RFC, Zeilen und Bytes. Der Runtime muss Zyklen zusammenfassen, unter zwei Cores/768 MiB bleiben und nach zwei Zyklen nahe zum Baseline zurückkehren. Andernfalls stoppen Sie das Upgrade und bewahren nur bereinigte Evidenz auf.

Bootstrap meldet management_disabled oder der Preflight schlägt fehl​

management_disabled bedeutet, dass das Target Lesen und Schreiben erlaubt, SPOT aber nicht zur Storage-Verwaltung autorisiert. Aktivieren Sie SPOT manages Data Streams and ILM nur mit Freigabe des Elastic-Verantwortlichen. Schlägt der Preflight fehl, korrigieren Sie Version, Template-/ILM-/Index-Berechtigungen oder Speicherplatz. SPOT verändert den Cluster nicht, solange der Preflight fehlschlägt.

Bei deaktivierter Verwaltung ist management_status: unmanaged korrekt. detached bedeutet, dass SPOT das Target früher verwaltet hat und die Reconciliation nun ohne Löschen bestehender Ressourcen beendet wurde.

KI antwortet nicht​

Prüfen Sie Provider-Origin/Base Path, TLS-Richtlinie, CA, Key und ausgehende Konnektivität. Test verwendet dieselbe Richtlinie wie Runtime und protokolliert ein bereinigtes Ergebnis. Provider mit API-Key benötigen HTTPS; Loopback-HTTP funktioniert nur ohne Key, privates LAN-HTTP ohne Key benötigt seine separate Risikoakzeptanz.