Agent logs
Agent logs zeigt strukturierte Ereignisse, die SaaS-Pull-Connectors senden. Die Sicht dient zur Diagnose von Installation, Konfigurations-Pull, Heartbeat, SAP-Extraktion, Elastic-Schreiben und verwalteten Upgrades, ohne sich am Host anzumelden.
Remote-Logs sind best effort: Wenn ein Log-Schreibvorgang fehlschlägt, blockiert der Agent weder SAP-Extraktion noch Heartbeat. Die operative Aufbewahrung ist kurz und auf aktuelles Troubleshooting ausgelegt.

Filter
| Filter | Nutzung |
|---|---|
Time range | Standardmäßig letzte 15 Minuten; größere Fenster für Upgrades oder bereits geschlossene Incidents |
Connector | Isoliert eine Runtime, wenn der Tenant mehrere Agenten hat |
Level | info, warn oder error; starten Sie mit error, wenn ein Connector NOK ist |
Hostname | Filtert nach gemeldetem Host; in externen Berichten nur bereinigte Namen verwenden |
Event | Sucht Events wie config.pull.failed, sap.extraction.failed oder upgrade.verify_failed |
Search | Freitextsuche in Message und Hauptfeldern |
Page size | Anzahl Zeilen pro Seite |
Die Tabelle zeigt Time, Level, Connector, Host, Event und Message. Beim Aufklappen sehen Sie das vollständige JSON des Events. Kopieren Sie keine vollständigen Ausgaben in Tickets, wenn sie interne Pfade, Hostnamen oder IDs enthalten; teilen Sie nur den bereinigten relevanten Ausschnitt.
Wichtige Events
| Event-Familie | Bedeutung | Nächste Prüfung |
|---|---|---|
config.pull.started / config.pull.succeeded | Agent ruft SaaS-Konfiguration ab | Config in Connectors prüfen, falls Revision nicht steigt |
config.pull.not_modified | Lokale Revision stimmt mit SaaS überein | Normal, wenn SAP connections oder Upgrades unverändert sind |
config.pull.failed | Agent kann Konfiguration nicht abrufen | Ausgehendes HTTPS, lokale Identität, Re-enrollment |
heartbeat.sent / heartbeat.failed | Lebenszeichen des Connectors | Bei Fehler Netzwerk und Control Plane prüfen |
sap.extraction.started / sap.extraction.succeeded | SAP-Extraktion läuft oder war erfolgreich | Mit Metrics und Operations kreuzen |
sap.extraction.failed | RFC, SAP-Rechte oder Daten nicht verfügbar | Technischen Benutzer, ASHOST, SYSNR und aktivierte Familie prüfen |
sap.collection.schedule.completed | Tatsächliche Phase und Dauer je Source/Familie | scheduled_at, start_delay_ms, duration_ms und skipped_cycles vergleichen |
sap.programs.progress | Bestätigte Programs-Abdeckung je Quelle | coveredThrough, lagSeconds, pendingWindows und state über mehrere Beobachtungen vergleichen |
elastic.bulk.succeeded / elastic.bulk.failed | Schreiben in das Tenant-Target | Bei Fehler Ingestion-Konnektivität und Tenant-Target prüfen |
upgrade.* | Download, Prüfung, Installation und Neustart | Mit Request upgrade in Connectors kreuzen |
Diagnose nach Symptom
| Symptom | Empfohlener Filter | Interpretation |
|---|---|---|
Connector Pending | Connector + letzte 30 Minuten | Ohne Logs ist der Agent nicht gestartet oder nicht enrolled |
Connector Stale | Connector + heartbeat | Heartbeat gestoppt; User-Service oder ausgehendes HTTPS prüfen |
| Config nicht angewendet | Connector + config.pull | Bei Pull-Fehler Re-enrollment oder Konnektivität prüfen |
| Leere Dashboards | Connector + sap.extraction und elastic.bulk | Trennt SAP-Fehler, Schreibfehler und fehlende Daten im Fenster |
| Programs im Rückstand | Connector + sap.programs.progress | Bestätigte Abdeckung mit der aktuellen Zeit vergleichen; ein neues Dokument kann alte Historie abdecken |
| Upgrade fehlgeschlagen | Connector + upgrade | Checksumme/Signatur, Speicherplatz und Supervisor validieren |
Takt und Ressourcen
Observed/@timestamp ist SAP-Zeit, ingested_at die Empfangszeit und die
Diagrammachse zeigt Bucket-Anfänge. Verwenden Sie alle vier Signale zur
Latenzdiagnose. Verpasste Zyklen werden zusammengefasst und bilden keine Queue.
Der Heartbeat enthält allowlist-basierte aggregierte RSS/PSS-, Heap/GC/cgo-,
Goroutine-, Thread-, Dispatcher-, RFC-, Zeilen-, Dokument- und Byte-Zähler.
Berechnen Sie CPU zwischen zwei process_cpu_time_ns-Werten; ein kumulativer Einzelwert ist kein Prozentwert.
Bei Programs spiegeln coveredThrough und lagSeconds nur durch Bestätigung gesicherte Abdeckung wider; windowSeconds zeigt die Blattbreite und pendingWindows offene Blätter. current bedeutet, dass der Rückstand höchstens Sammelintervall plus 120 Sekunden beträgt; catching_up bedeutet Aufholen und backoff Warten nach einem Fehler. Vor dem ersten bestätigten Cursor ist die Aktualität unbekannt; Abdeckungs- und Statusfelder können fehlen. Vergleichen Sie mehrere Ereignisse: ein neuer Eingang allein belegt keine aktuelle Programs-Abdeckung.
Jobs ändern sich während des Lesens
SAP stellt für die Paginierung von TBTCO keinen stabilen Snapshot bereit. Der Connector prüft jeden vollständigen Durchlauf, bevor Daten veröffentlicht werden. Ändern sich Jobs zwischen Seiten, endet der Jobs-Zyklus mit einem bereinigten Fehler, veröffentlicht keine unvollständige Sicht und verschiebt den Cursor nicht; der nächste stabile Zyklus liest wieder von Anfang an. Ein Abbruch zwischen einer Seite und ihrem bestätigten Fortschritt kann ebenfalls keine alten und neuen Läufe vermischen. Ein einzelner Fall kann mit normaler Batch-Aktivität zusammenfallen. Bei wiederholtem Auftreten prüfen Sie Extraktionsdauer, SAP-Last und Leserechte, bevor Intervalle oder Limits erhöht werden.
Bei Tabellen mit mehr als 500 Zeilen vereinbart der Connector einen einzigen
SAP-Sortiermodus, bevor er die erste Seite veröffentlicht. Eine wiederholte
ROWSKIPS- oder Sortiermeldung bedeutet, dass diese Familie den Zyklus nicht
abgeschlossen hat: Prüfen Sie die Freshness von Job Runs oder RFC failures
getrennt, denn ein aktueller aggregierter Jobs-Snapshot beweist nicht, dass
diese paginierten Listen vollständig gelesen wurden.
Der Connector sammelt das vollständige Job Log jeder terminalen Ausführung über
die Standard-BAPI. Die Sammlung läuft asynchron und blockiert weder den
job_runs-Cursor noch den Long-running-Jobs-Snapshot. Da SAP diese Antwort nicht
paginiert, kann eine große Abfrage den Speicherverbrauch des Agents
vorübergehend erhöhen. Prüfen Sie im Detail das Manifest: complete oder
empty sind bestätigte Ergebnisse; retrying, too_large, unauthorized,
unavailable oder error erklärt, warum das Log noch nicht verfügbar ist.
SPOT interpretiert eine partielle Sammlung niemals als vollständiges oder
leeres Log.
SAP liefert eine unvollständige Struktur
Erforderliche Tabellen und Listen für RFC failures, qRFC und Certificates werden vor der Veröffentlichung geprüft. Fehlt eine Struktur, ist ihre Form inkompatibel oder endet eine Aufzählung vorzeitig, endet der Zyklus mit einem bereinigten Fehler und behält den zuletzt bestätigten Zustand. Dies gilt nicht als Null, leere Liste, Entfernung oder Recovery. Ein explizit leeres Ergebnis mit korrekter Struktur bleibt gültig.
Bei Certificates verhindert eine leere Discovery-Liste nicht die Prüfung der kanonischen PSE-Kontexte. Existiert einer davon, wird das Inventar veröffentlicht; fehlende Berechtigungen, fehlerhafte Strukturen und andere RFC-Fehler bleiben fail-closed.
CCMS-Alarme ohne SAP-Text
Ein CCMS-Alarm kann eine gültige Identität, einen Zeitstempel und einen Wert enthalten, obwohl SAP den erklärenden Text nicht liefert. Der Connector verwirft den Zyklus deshalb nicht: Er veröffentlicht eine stabile Betriebsmeldung und kennzeichnet ihre Herkunft als Fallback. Dies ist kein RFC-Fehler. Ein echter Berechtigungsfehler, eine beschädigte Antwort oder ein fehlender Pflichtwert setzt die Sammlung weiterhin auf Fehler und verschiebt den Watermark nicht.
Die Extraktionsdiagnose unterscheidet geeignete Knoten, Alarmkandidaten, ausgegebene Ereignisse, Text-Fallbacks und echte Fehler. Die Anzahl geeigneter Knoten ist daher nicht die Anzahl fehlender Meldungen.
Beziehung zu lokalen Logs
Der Host speichert lokale Logs unter:
$HOME/spot-agent-saas/log/spot-agent-sap.log
Nutzen Sie Remote-Logs für normale Diagnose in SPOT. Melden Sie sich am Host nur an, wenn Sie systemd --user, linger, Dateirechte oder lokale Konnektivität prüfen müssen.