Logs und Metriken in Echtzeit streamen (SSE)
Öffne mit GET /v2/apps//realtime einen Server-Sent-Events-Stream für Live-Logs, Metriken, Status und Deploy-Fortschritt, bis zu 10 Minuten lang.
Logs und Metriken in Echtzeit streamen (SSE)
Der API-Playground ist für diesen Endpoint deaktiviert, da SSE-Verbindungen ihrer Natur nach nicht von allen Browsern unterstützt werden.
string
erforderlich
Der API-Schlüssel für dein Konto. Du findest ihn in deinen Kontoeinstellungen.
apps:read.
Verwende diesen Endpoint immer dann, wenn du eine Live-Ansicht einer Anwendung statt Polling brauchst: um den Fortschritt eines Deploys zu beobachten, Logs beim Schreiben live mitzuverfolgen oder das CPU/RAM-Diagramm eines Dashboards zu speisen, ohne Anwendungsstatus abrufen oder Anwendungslogs abrufen im Sekundentakt abzufragen. Er ersetzt beide für die Dauer der Verbindung.
Intern wählt eine hier geöffnete Verbindung einen einzelnen Upstream-Stream auf dem Cluster der Anwendung an und leitet ihn über SSE weiter, mit einem transparenten internen Reconnect, falls dieser Upstream abbricht. Da jede offene Verbindung bis zu 10 Minuten lang einen Socket belegt, sind Verbindungsaufbauten separat von den unten beschriebenen Limits für gleichzeitige Verbindungen rate-limitiert: 1 Verbindungsaufbau alle 5 Sekunden pro (Benutzer, Anwendung) sowie 20 Verbindungsaufbauten alle 10 Sekunden pro Benutzer über alle Anwendungen hinweg, gefolgt von einer kurzen Abkühlphase.
Parameter
string
erforderlich
Die ID der Anwendung, deren Logs du überwachen möchtest. Diese ID findest du in der URL des Verwaltungspanels deiner Anwendung.
Antwort
string
Gibt an, ob der Aufruf erfolgreich war:
success, wenn ja, error, wenn nicht.code zusätzlich zum Fehlerstatus, das die Ursache erläutert.
Ist die Anfrage erfolgreich, ist die Antwort ein text/event-stream-Stream, der den Echtzeit-Feed der Anwendung enthält.
Jede Verbindung dauert bis zu 10 Minuten. Jedes Konto kann 5 gleichzeitige Echtzeit-Verbindungen halten (REALTIME_MAX_CONNECTIONS) und jede Anwendung 30 über alle Nutzer hinweg (REALTIME_MAX_CONNECTIONS_APP); wird eines der beiden Limits überschritten, wird 429 zurückgegeben.
Struktur der Server-Sent Events (SSE)
Die Antwort ist ein kontinuierlicher Stream im Formattext/event-stream. Jede Nachricht besteht aus einem Feld event und einem Feld data. Die Formen variieren je nach Event, parse die Payloads daher defensiv.
Event-Typen
system: Signale auf Protokollebene. Diedata-Zeile ist ein einzelner Code in Großbuchstaben:REALTIME_CONNECTING | <sseId>beim Verbindungsaufbau, danach einer vonREALTIME_TIMEOUT,REALTIME_DISCONNECTED,REALTIME_RECONNECToderREALTIME_ERROR.logs: Eine einzelne Log-Zeile, deren erstes Zeichen ein Stream-ID-Byte ist:\x01(stdout) oder\x02(stderr). Liesdata.charCodeAt(0)(1 = stdout, 2 = stderr), danndata.slice(1)für den Text. Eine Zeile ohne dieses Präfix-Byte ist stdout.status: Live-Container-Metriken als JSON-String, etwa ein Frame pro Sekunde. Der erste Frame jeder (Wieder-)Verbindung ist vollständig:{ cpu, cpuLimit, ram: [usedMB, limitMB], status, netIO: { i, o, new: { i, o } }, bIO: { i, o }, uptime }(cpuLimitist die Anzahl der zugewiesenen CPU-Kerne;uptimeist die Startzeit als Epoch-ms;netIO.newsind Bytes pro Sekunde). Jeder spätere Frame ist schlank und trägt nur{ cpu, ram, netIO, bIO }: führe jeden mit dem letzten vollständigen Frame zusammen und behalte dabei die vorherigen Werte voncpuLimit,statusunduptime. Solange dieser Stream offen ist, bevorzuge ihn gegenüber dem Polling vonGET /v2/apps/{app_id}/status, das bei einer Anwendung mit offenem Echtzeit-Stream bis zu etwa einer Minute veraltet sein kann.error: Trägt einen Fehlercode wieCONTAINER_NOT_FOUND.
\x01 / \x02 für die rohen stdout-/stderr-Präfix-Bytes.
Häufige Fehler
Siehe auch
- CLI:
squarecloud app realtime - SDKs:
api.apps.realtime()(JavaScript),client.apps.realtime()(Python),c.Apps.Realtime()(Go)

