应用
实时日志
建立一个 Server-Sent Events (SSE) 连接以接收应用的实时数据流(日志、实时指标、状态、部署进度)。连接建立后,会先发送最近的 200 行日志,随后推送新的更新。连接最长可维持 10 分钟。
实时日志
由于 SSE 连接的特性(并非所有浏览器都普遍支持),此端点的 API Playground 已禁用。
参数
string
必填
你想要监控其日志的应用的 ID。此 ID 可以在应用管理面板的 URL 中找到。
响应
string
指示调用是否成功。成功时为
success,否则为 error。code 字段,说明具体原因。
如果请求成功,响应将是一个 text/event-stream 流,包含应用的实时数据流。
每个连接最长持续 10 分钟。每个账户最多可保持 5 个并发实时连接(REALTIME_MAX_CONNECTIONS),每个应用最多 跨所有用户 30 个(REALTIME_MAX_CONNECTIONS_APP);超出任一限制将返回 429。
Server-Sent Events (SSE) 结构
响应是一个text/event-stream 格式的持续流。每条消息由一个 event 字段和一个 data 字段组成。不同事件的结构各异,因此请以防御性方式解析负载。
事件类型
system:协议级信号。data行是单个大写代码:连接时为REALTIME_CONNECTING | <sseId>,随后可能是REALTIME_TIMEOUT、REALTIME_DISCONNECTED、REALTIME_RECONNECT或REALTIME_ERROR中的任意一个。logs:单行日志,其第一个字符是流 ID 字节:\x01(stdout)或\x02(stderr)。读取data.charCodeAt(0)(1 = stdout,2 = stderr),然后用data.slice(1)获取文本。没有该前缀字节的行为 stdout。status:以 JSON 字符串形式呈现的实时容器指标,大约每秒一帧。每次(重新)连接的第一帧是完整的:{ cpu, cpuLimit, ram: [usedMB, limitMB], status, netIO: { i, o, new: { i, o } }, bIO: { i, o }, uptime }(uptime是以毫秒计的 epoch 起始时间;netIO.new是每秒字节数)。之后的每一帧都是精简的,仅携带{ cpu, ram, netIO, bIO }—— 将每一帧合并到上一个完整帧上,保留之前的cpuLimit、status和uptime。在此流保持打开期间,请优先使用它,而非轮询GET /v2/apps/{app_id}/status;对于已打开实时流的应用,后者可能有最多约一分钟的延迟。error:携带一个错误代码,例如CONTAINER_NOT_FOUND。
\x01 / \x02 代表原始的 stdout / stderr 前缀字节。
常见错误
实时日志

