Telemetrie und Logging
Diese Seite beschreibt den aktuell belegten Observability-Schnitt im Workspace. Sie trennt bewusst Telemetrie, Logging, Monitoring, Audit und SIEM, weil der derzeit verifizierte Android-plus-Cloud-Pfad noch keine vollstaendige produktisierte Telemetrie-Pipeline mit Run-Compare bereitstellt.
Was heute wirklich verifiziert ist
Abschnitt betitelt „Was heute wirklich verifiziert ist“- Android ist die einzige runtime-verifizierte Device-Plattform im aktuellen Workspace.
- Der aktuell belegte Android-MVP nutzt
POST /devices,POST /events,GET /status,GET /alerts,GET /incidents,GET /jobs,GET /jobs/{id},GET /traces/{id}undGET /traces/{id}/stepsgegen lokalessuperheld-cloud. - Der verifizierte lokale Geraetepfad laeuft ueber USB-Tablet plus
adb reverse tcp:8080 tcp:8080gegenhttp://127.0.0.1:8080. - Der Backend-Prozess schreibt Basis-Startmeldungen, Store-Fallbacks und Persistenzfehler nach
stdoutoderstderr. - Fuer den Android-Gold-Flow
app_launchexistiert jetzt ein erster lokaler Telemetrie-Slice: die App persistiert und zeigt in der KonfigurationskarteLatest app launch run,Window,Result,Device,TenantundApp version; derselbe Start loggt lokal nachlogcatunterSuperheldTelemetryeine comparebare Zeiletelemetry flow=app_launch ... method=APP path=/main_activity ... backend_version=app_local. - Fuer den Android-Gold-Flow
status_refreshexistiert jetzt ein kleiner gemeinsamer Telemetrie-Slice: die App sendetX-Superheld-Flow,X-Superheld-Run-Id,X-Superheld-App-Version,X-Superheld-Tenant-IdundX-Superheld-Device-Id, der Backend-Read-Pfad echoetX-Superheld-Run-IdundX-Superheld-Backend-Version, emittiert bei strukturierten Fehlern zusaetzlichX-Superheld-Error-Code, und dieselberun_iderscheint im lokalen Backend-Log fuer/status, bei Fehlern inklusiveerror_code=.... - Fuer den Android-Read-Pfad
alert_readnutzt die App denselben Header-Satz jetzt als eigenen Slice fuerGET /alerts; die Alert-Karte zeigtLatest alert run,Window,Result,Backend versionund bei Fehlern ein dediziertesError code, und dieselberun_iderscheint im lokalen Backend-Log fuer/alerts. - Fuer den Android-Gold-Flow
device_registernutzt die App denselben Header-Satz jetzt auch aufPOST /devices; die Registrierungskarte zeigtLatest registration run,Window,Result,Backend versionund bei Fehlern ein dediziertesError code, und dieselberun_iderscheint im lokalen Backend-Log fuer/devices. - Fuer den Android-Gold-Flow
event_submitnutzt die App denselben Header-Satz jetzt auch aufPOST /events; die Event-Karte zeigtLatest event run,Window,Result,Backend versionund bei Fehlern ein dediziertesError code, und dieselberun_iderscheint im lokalen Backend-Log fuer/events. - Fuer den Android-Gold-Flow
incident_readnutzt die App denselben Header-Satz jetzt als eigenen Slice fuerGET /incidentsund den nachgeladenen letzten sichtbaren Incident ueberGET /incidents/{id}; die Incident-Karte zeigtLatest incident run,Window,Result,Backend versionund bei Fehlern ein dediziertesError code, und dieselberun_iderscheint im lokalen Backend-Log fuer beide Incident-Reads. - Fuer den Android-Job-/Trace-Pfad
job_readnutzt die App denselben Header-Satz jetzt als eigenen Slice fuerGET /jobs, den nachgeladenen letzten sichtbaren Job ueberGET /jobs/{id}sowie bei vorhandenertrace_idfuerGET /traces/{id}undGET /traces/{id}/steps; die Job-Karte zeigtLatest job run,Window,Result,Backend versionund bei Fehlern ein dediziertesError code, und dieselberun_iderscheint im lokalen Backend-Log fuer die Job- und Trace-Reads. - Erste kleine Run-Compare-Berichte existieren jetzt ueber
go run ./cmd/telemetrycompare: ein verifizierter lokaler Vergleich des app-lokalen Gold-Flowsapp_launchstellte aus exportiertenlogcat-Zeilenapp-launch-772767fb-f8dd-42b1-81d4-1558fac5b636gegenapp-launch-efcaa925-326b-47f7-af08-03d52bedbd09gegenueber und machte fuerAPP /main_activityden Delta-Wechsel von385msauf366mssichtbar; der verifizierte lokale Vergleich des Gold-Flowsstatus_refreshstelltestatus-refresh-d8a9ae69-972f-45de-818f-3541d79e92c4gegenstatus-refresh-5c829384-e399-4b81-aee8-9c931389e08baus derselbenserver.loggegenueber und machte den Wechsel vonGET /status200 successauf403 failuremiterror_code=insufficient_scopeund dem Delta von183µsauf83µssichtbar, waehrend im selben Fehlerrunalert_read,incident_readundjob_readunter eigenenrun_id-Werten weiter200 successblieben; ein weiterer verifizierter lokaler Vergleich des Read-Slicesalert_readstelltealert-read-942bc64f-6cac-4daa-909e-efa64112c556gegenalert-read-90df8959-d5b9-41de-9dd5-46bc9db48c86gegenueber und machte aufGET /alertsden Wechsel von200 successauf403 failuremiterror_code=insufficient_scopesichtbar; ein weiterer verifizierter lokaler Vergleich des Gold-Flowsdevice_registerstelltedevice-register-05aa2ac5-fc1c-432a-8735-64375aea2844gegendevice-register-83ba260e-6db7-4103-a401-2492a59e7518gegenueber und machte aufPOST /devicesden Wechsel von201 successauf403 failuremiterror_code=insufficient_scopesichtbar; ein weiterer verifizierter lokaler Vergleich des Gold-Flowsevent_submitstellteevent-submit-76e907bb-731e-43e6-ae96-d7dff8c8acbcgegenevent-submit-114e32c8-ac30-4325-95c5-71a7c364ec6dgegenueber und machte aufPOST /eventsden Wechsel von202 successauf403 failuremiterror_code=insufficient_scopesichtbar; ein weiterer verifizierter lokaler Vergleich des Gold-Flowsincident_readstellteincident-read-ea31daf4-67d0-4a4b-8511-373c4c78bb70gegenincident-read-89ec180d-b38c-4416-bafc-a3efc04ecd1agegenueber und machte den Wechsel vonGET /incidents200 successplus nachgeladenemGET /incidents/{id}auf403 failuremiterror_code=insufficient_scopesichtbar; ein weiterer verifizierter lokaler Vergleich des Job-/Trace-Slicesjob_readstelltejob-read-750be845-48f0-4344-9e29-2702a0ffd2eegegenjob-read-e2d9a9ca-a82b-4bff-8ceb-ba22954039aegegenueber und machte den Wechsel von erfolgreichemGET /jobsplus nachgeladenemGET /jobs/{id},GET /traces/{id}undGET /traces/{id}/stepsaufGET /jobs403 failuremiterror_code=insufficient_scopesichtbar, waehrend die nachgelagerten Reads im Fehlerrun alsnot presenterschienen; derselbe CLI-Schnitt kann die automatische Run-Auswahl optional auf denselbentenant_id,device_id,app_version, dieselbebackend_version, denselbenresultoder denselbenerror_codeeingrenzen. Verifiziert ist dieser neue Filterpfad bereits fuerstatus_refresh-Laeufe mitresult=failurepluserror_code=unauthorizedsowie fuerdevice_register-Laeufe mitresult=failurepluserror_code=insufficient_scope. - Token- und Job-Review-Audits sind ueber
GET /tokens/audit,GET /tokens/{id}/audit,GET /jobs/auditundGET /jobs/{id}/audittenant-scoped lesbar. - Webhooks und
GET /eventssind die aktuell belegten Export- und Integrationspfade fuer event-zentrierte externe Systeme.
Begriffe sauber trennen
Abschnitt betitelt „Begriffe sauber trennen“| Bereich | Heutiger belegter Stand |
|---|---|
| Telemetrie | Teilweise vorhanden. Ein app-lokaler Slice fuer app_launch sowie app-plus-cloud-Slices fuer status_refresh, alert_read, device_register, event_submit, incident_read und job_read sind belegbar; dazu kommen jetzt kleine CLI-Compare-Berichte ueber exportierte App-logcat-Zeilen fuer app_launch sowie ueber korrelierte Backend-Logzeilen fuer status_refresh, alert_read, device_register, event_submit, incident_read und job_read, deren automatische Run-Auswahl optional auf denselben Tenant, dasselbe Geraet, dieselbe App-/Backend-Version, denselben result oder denselben error_code eingegrenzt werden kann. Offen bleiben breitere Delta-Sichten und eine produktisierte Telemetrie-Plane. |
| Logging | Backend-Meldungen laufen ueber den Prozess-Output. Die Android-App zeigt Fehler fuer Konfiguration, Auth, Scope, Tenant und Netzwerk sichtbar im UI. |
| Monitoring | GET /status ist der leichtgewichtige Runtime-Check fuer den app-relevanten Schutzstatus. Eine separate Metrics- oder Health-Plane ist heute nicht belegt. |
| Audit | Token-Lifecycle und Job-Review-Entscheidungen laufen ueber hash-verknuepfte interne Audit-Logs und sind ueber die Audit-Endpunkte lesbar. |
| SIEM | Der aktuelle verifizierte Exportpfad ist event-zentriert: GET /events oder signierte Webhook-Auslieferung. Jobs, Incidents und Traces sind heute Operator-Reads, kein eigener SIEM-Exportstrom. |
Operatoren-Schnellreferenz: Verifiziert vs. Zielarchitektur
Abschnitt betitelt „Operatoren-Schnellreferenz: Verifiziert vs. Zielarchitektur“| Bereich | Verifizierte Endpunkte / Pfade | Noch Zielarchitektur |
|---|---|---|
| Audit | GET /tokens/audit, GET /tokens/{id}/audit, GET /jobs/audit, GET /jobs/{id}/audit — hash-verknuepft, tenant-scoped | Externer Audit-Export, Audit-Retention-SLA, Admin-/Operator-spezifische Audit-Views |
| Logging | Backend stdout/stderr mit telemetry flow= und tenant_hint_mismatch-Zeilen; Android logcat unter SuperheldTelemetry | Strukturiertes JSON-Log-Format, Log-Aggregation, Log-Rotation-Konfiguration, Log-Shipping |
| Monitoring | GET /status als leichtgewichtiger Runtime-Check | Separater /healthz- oder /readiness-Endpoint, Prometheus-Metrics, Alerting-Regeln, Dashboard-Templates |
| SIEM | GET /events (Cursor-Pagination) und signierte Webhooks (HMAC-SHA256, 3 Retries, 7-Tage-DLQ) | CEF-, LEEF-, OCSF-Formate, Cloud-seitige Threat-Intelligence-Anreicherung, IOC-Korrelation |
| Telemetrie | 7 Gold-Flows mit run_id-Korrelation (App-Headers + Backend-Echo), CLI-Compare ueber cmd/telemetrycompare | Telemetrie-Storage-API, Compare-UI/Dashboard, Langzeit-Run-Historie, OpenTelemetry-Export |
Fuer Details zu den verifizierten Pfaden pro Bereich siehe die Abschnitte weiter unten. Fuer die vollstaendige Spezifikation der Observability-Trennung siehe die Observability Separation Spec in superheld-architecture.
Aktueller Android-plus-Cloud-Korrelationspfad
Abschnitt betitelt „Aktueller Android-plus-Cloud-Korrelationspfad“Heute korrelierbare IDs im verifizierten MVP:
| Feld | Wo es heute sichtbar ist | Zweck |
|---|---|---|
tenant_id | Device-, Event-, Alert-, Incident-, Job- und Trace-Antworten | Tenant-Isolation und Operator-Korrelation |
device_id | Device-Registrierung, Event-Payloads, Alerts, Incidents | Bezug zwischen Android-Geraet und Backend-Objekten |
event_id | POST /events, GET /events, Alerts, manche Incident- oder Job-Eingaben | Korrelation des Event-Submit-Pfads |
alert_id | GET /alerts | User-visible Alert-Referenz |
incident_id | GET /incidents, GET /incidents/{id} | Security-Incident-Referenz |
job_id | GET /jobs, GET /jobs/{id} | Asynchroner Workflow-Lauf |
trace_id | GET /jobs, GET /jobs/{id}, GET /traces/{id}, GET /traces/{id}/steps | Feinste heute belegte Korrelation fuer den Job- und Trace-Pfad |
run_id | Android-Konfigurationskarte fuer app_launch, Android-Statuskarte, Alert-, Registrierungs-, Event-, Incident- und Job-Karte, X-Superheld-Run-Id auf korrelierten Antworten, lokale App-logcat- und Cloud-Logzeilen | Korrelation einzelner app_launch-, status_refresh-, alert_read-, device_register-, event_submit-, incident_read- und job_read-Laeufe |
app_version | Android-Konfigurationskarte, lokale App-logcat-Zeilen, X-Superheld-App-Version auf korrelierten Requests, lokale Cloud-Logzeilen | Vergleich verschiedener Android-Builds |
backend_version | Android-Statuskarte, Alert-, Registrierungs-, Event-, Incident- und Job-Karte, X-Superheld-Backend-Version auf korrelierten Antworten, lokale Cloud-Logzeilen | Vergleich verschiedener Backend-Builds |
started_at, finished_at, result | Android-Konfigurationskarte fuer app_launch, Android-Statuskarte, Alert-, Registrierungs-, Event-, Incident- und Job-Karte, lokale App-logcat- und Cloud-Logzeilen der verifizierten Gold-Flows | kleines Laufzeit- und Ergebnisfenster fuer die ersten Gold-Flows |
error_code | Android-Statuskarte, Alert-, Registrierungs-, Event-, Incident- und Job-Karte bei Fehlerlaeufen, X-Superheld-Error-Code auf strukturierten API-Fehlerantworten, lokale Cloud-Logzeilen fehlgeschlagener korrelierter Requests | maschinenlesbarer Fehlergrund fuer Compare- und Troubleshooting-Sichten |
Wichtig:
- Ein erster app-lokaler Slice gilt heute fuer
app_launch; die ersten gemeinsamen App-plus-Cloud-Slices gelten derzeit fuerstatus_refresh,alert_read,device_register,event_submit,incident_readundjob_read. - Die App sendet
tenant_idunddevice_idauf diesem Slice heute als Telemetrie-Header fuer die Korrelation; Autorisierung bleibt weiter tenant-gebunden ueber das API-Token. - Erste CLI-Compare-Berichte sind jetzt ueber
go run ./cmd/telemetrycompare -log <logfile> -flow <flow>fuer den app-lokalen Flowapp_launchsowie fuer die backendgeloggten Flowsstatus_refresh,alert_read,device_register,event_submit,incident_readundjob_readbelegt; ohne-run-aund-run-bvergleicht das Tool die letzten beiden sichtbaren Runs desselben Flows, optional eingegrenzt ueber-tenant-id,-device-id,-app-version,-backend-version,-resultund-error-code. - Das dedizierte
error_codeist fuer diese verifizierten Gold-Flows jetzt als eigener Feldpfad belegbar; offene Arbeit bleibt die breitere Compare- oder Delta-Sicht ueber mehrere Laeufe, App-Versionen oder Releases hinweg.
Das heute wirklich kanonische Event-Objekt
Abschnitt betitelt „Das heute wirklich kanonische Event-Objekt“Fuer den verifizierten Android-Write-Pfad ist das Event-Objekt aus POST /events die aktuell belastbare kanonische Event-Form. Es ist nicht automatisch gleichbedeutend mit einer vollstaendigen Produkt-Telemetrie-Pipeline.
{ "event_id": "evt-android-demo-1", "type": "risk.event.created", "tenant_id": "tenant-local", "device_id": "android-device-1", "timestamp": "2026-03-17T01:10:00Z", "threat_category": "malicious_app", "confidence": 0.92, "action_taken": "warn", "policy_id": "pol_android_mvp_v1", "severity": "high", "description": "Suspicious Android app install observed", "indicators": ["package:com.example.sideload"]}| Feld | Heutiger Status |
|---|---|
event_id | Eindeutige Event-Referenz fuer Event-Submit, Event-Read und Folgeobjekte |
type | Aktueller Workspace-Discriminator fuer Detection Events |
tenant_id | Kanonisches Tenant-Feld fuer Autorisierung und Zustellung |
device_id | Android-Geraetereferenz aus dem verifizierten Registrierungs- und Event-Pfad |
timestamp | ISO-8601-Zeitstempel des Event-Objekts |
threat_category, confidence, action_taken, policy_id, severity | Aktueller Detection-/Policy-Schnitt des Event-Pfads |
description, indicators | Im aktuellen Android-Demo-Pfad mitgefuehrt und vom Backend akzeptiert |
Retention und Persistenz im Ist-Stand
Abschnitt betitelt „Retention und Persistenz im Ist-Stand“Die aktuellen Retention-Aussagen muessen sich an den belegten Runtime-Backends orientieren, nicht an frueheren Produktzielwerten.
| Datentyp | Aktueller Stand |
|---|---|
| Security Events | Runtime-Store-abhaengig: in-memory, lokale JSON-Datei oder SQLite |
| Security Incidents | Runtime-Store-abhaengig: in-memory, lokale JSON-Datei oder SQLite |
| Token- und Job-Audit | Interne Audit-Logs im konfigurierten Runtime-Backend, aber ohne extern festgezurrte Retention-Garantie |
| Webhook-DLQ | 7 Tage Retention im aktuellen Runtime-Vertrag |
| Telemetrie als eigener Produkttyp | Keine finalisierte externe Retention- oder Exportgarantie belegt |
Lokale Operator-Sicht fuer den verifizierten MVP
Abschnitt betitelt „Lokale Operator-Sicht fuer den verifizierten MVP“Fuer den heute belegten Android-plus-Cloud-Pfad sind diese Sichten praktisch:
GET /statusfuer den app-relevanten SchutzstatusGET /alertsfuer die sichtbare erste Alert-SeiteGET /incidentsundGET /incidents/{id}fuer tenant-scoped Security-Incidents aus akzeptierten High-Severity-Alerting-Events oder Security-Monitor-FaellenGET /jobsundGET /jobs/{id}fuer den asynchronen Workflow-ZustandGET /traces/{id}undGET /traces/{id}/stepsfuer die feinste heute verifizierte Job-KorrelationGET /eventsoder Webhooks fuer event-zentrierte ExportfaelleGET /tokens/auditundGET /jobs/auditfuer tenant-scoped Audit-Reads
Mehr Details fuer den lokalen Android-Cloud-Lauf: Lokales Android-Cloud-Ops-Runbook.
Was fuer eine breitere Run-Compare-Sicht noch fehlt
Abschnitt betitelt „Was fuer eine breitere Run-Compare-Sicht noch fehlt“Die ersten kleinen Slices ueber app_launch, status_refresh, alert_read, device_register, event_submit, incident_read und job_read decken heute mindestens run_id, app_version, started_at, finished_at und result ab; die app-plus-cloud-Slices fuer status_refresh, alert_read, device_register, event_submit, incident_read und job_read zeigen zusaetzlich backend_version und bei Fehlern error_code. Verifizierte Compare-Berichte existieren jetzt fuer app-lokale app_launch-Runs sowie fuer backendgeloggte status_refresh-, alert_read-, device_register-, event_submit-, incident_read- und job_read-Runs und koennen ihre automatische Run-Auswahl optional auf denselben Tenant, dasselbe Geraet, dieselbe App-/Backend-Version, denselben result oder denselben error_code eingrenzen. Weiter offen bleiben fuer eine breitere Compare-Sicht mindestens:
- Delta-Berichte ueber mehrere Releases, Geraete oder Build-Kombinationen hinweg
- eine explizit dokumentierte Retention- und Exportstrategie fuer Telemetrie als eigenen Produkttyp
Solange diese Punkte offen sind, sollte die aktuelle Runtime trotz der ersten CLI-Compare-Berichte und der kleinen app_launch-, status_refresh-, alert_read-, device_register-, event_submit-, incident_read- und job_read-Slices nicht als fertige Telemetrie- oder Compare-Loesung beschrieben werden.
Verwandte Seiten
Abschnitt betitelt „Verwandte Seiten“Architektur-Spezifikationen
Abschnitt betitelt „Architektur-Spezifikationen“Die folgenden Spezifikationen in superheld-architecture definieren die Zielarchitektur und den verifizierten Stand fuer Observability und Telemetrie:
specs/observability-separation.md— Klare Grenzen zwischen Audit, Logging, Monitoring, SIEM und Telemetrie mit verifiziertem Ist-Stand vs Zielarchitekturspecs/telemetry-run-compare.md— Instrumentierungsmodell, Mindestfelder fuer Compare-Slices, Run-Compare-Ausgabeformat und verifizierte Abdeckung fuer alle sieben Gold-Flows