进阶 docs.cubesandbox.com 2026-10-08 23:44:25 · 1 阅读

第28章 沙箱日志

沙箱日志 ​功能迭代中日志能力目前仍在持续迭代,本文介绍的 cubecli logs 命令是临时使用版本——后续版本可能对接口及底层存储结构进行调整。CubeSandbox 提供两个互补的日志层:层级记录内容获取方式沙箱日志容器 init 进程(主入口)的 stdout/stderrcubecli logs(本文)envd 任务日志在沙箱内通过 exec 接口启动的子任务的 stdout/stderrE2B SDK(on_stdout / on_stderr 回调)本文仅介绍沙箱级别的日志。envd 子任务的日志获取方式请参阅 E2B SDK 文档。前置条件 ​cubecli 随 Cubelet 一同构建,并在一键部署时自动安装。logs 子命令访问的日志文件位于 Cubelet 挂载命名空间内,因此必须直接在计算节点上执行,无法通过 API 或非节点主机远程调用。读取沙箱日志 ​bash# 最后 100 行 stdout(默认) cubecli logs # 最后 100 行 stderr cubecli logs --stderr # 完整日志(全部行) cubecli logs --all # 最后 N 行 cubecli logs --tail 50 # 简写 cubecli logs -t 50 # 前 N 行 cubecli logs --head 20 # 简写 cubecli logs -H 20 参数说明 ​参数简写说明--stderr-e读取 stderr,默认读取 stdout--all-a输出全部行;不可与 --tail 或 --head 同时使用--tail N-t N输出最后 N 行(未指定其他标志时默认为 100)--head N-H N输出前 N 行读取模板构建日志 ​模板构建过程中,容器的 stdout/stderr 会写入宿主机文件系统 /data/log/template/_0/。这些文件无需进入 Cubelet 挂载命名空间,使用 --tpl 标志可跳过命名空间切换:bash# 最后 100 行模板构建 stdout cubecli logs --tpl # 完整模板构建 stderr cubecli logs --tpl --all --stderr 日志文件路径 ​场景路径沙箱 stdout/data/cubelet/state/io.containerd.runtime.v2.task/default//stdout(Cubelet 挂载命名空间内)沙箱 stderr/data/cubelet/state/io.containerd.runtime.v2.task/default//stderr(Cubelet 挂载命名空间内)模板 stdout/data/log/template/_0/stdout(宿主机文件系统)模板 stderr/data/log/template/_0/stderr(宿主机文件系统)为什么需要挂载命名空间?沙箱日志文件由 CubeShim 写入 bundle 目录,该目录仅在 Cubelet 的私有挂载命名空间内可见。cubecli logs 会在读取前自动重新进入该命名空间——你无需任何额外操作,只需在节点上直接运行该命令即可。范围与限制 ​这些日志仅记录 init 进程(容器内 PID 1)的输出。通过 exec 接口启动的进程输出需通过 E2B SDK 的 on_stdout / on_stderr 回调获取,详见 E2B SDK 文档。日志转发需要 v0.4.0 及以上版本的 CubeShim。在更旧的部署上,日志文件将不存在。日志目前不支持实时流式读取,暂无 --follow 标志。如需查看最新输出,请重新执行命令。沙箱删除后,对应的日志文件会一并清除。相关文档 ​服务管理与日志 — 宿主机服务日志、journalctl 及诊断包模板检查与请求预览

评论 (0)