Anwendung
Echtzeit-Logs
Baut eine Server-Sent-Events-Verbindung (SSE) auf, um den Echtzeit-Feed deiner Anwendung zu empfangen (Logs, Live-Metriken, Status, Deploy-Fortschritt). Beim Verbindungsaufbau werden die 200 aktuellsten Log-Zeilen gesendet, gefolgt von neuen Aktualisierungen. Die Verbindung kann bis zu 10 Minuten aufrechterhalten werden.
Echtzeit-Logs
Der API-Playground ist für diesen Endpoint deaktiviert, da SSE-Verbindungen ihrer Natur nach nicht von allen Browsern unterstützt werden.
Der API-Schlüssel für Ihr Konto. Sie finden ihn in Ihren Kontoeinstellungen.
Parameter
Die ID der Anwendung, deren Logs du überwachen möchtest. Diese ID findest du in der URL des Verwaltungspanels deiner Anwendung.
Antwort
Gibt an, ob der Aufruf erfolgreich war.
success bei Erfolg, error andernfalls.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 }(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.
Echtzeit-Logs

