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
- Prüfen Sie Hostname, Ablauf und Kette.
- Importieren Sie die Unternehmens-CA unter Configuration > Trust store und ordnen Sie sie zu.
- 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:
- Wählen Sie in Jobs und SM37 dieselbe SAP-Quelle und denselben Zeitraum.
Prüfen Sie, ob Start, Ende und
JOBCOUNTzur selben Ausführung gehören. - Prüfen Sie in
spot-agent-sapmindestens zwei vollständige Jobs-Zyklen: Der letzte erfolgreiche Zyklus und sein Cursor müssen ohne Datums- oder Zeitfehler weiterlaufen. - Ö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.
- 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.