已合并
feat(executor): log trace_id/instance_id at executor boundaries and suppress probe noise #16
feat(executor): log trace_id/instance_id at executor boundaries and suppress probe noise #16
已合并
huhaichuan创建于 9月4日
huhaichuan
huhaichuan成员
9月4日

这是什么类型的PR?

/kind feat


这个PR是做什么的/我们为什么需要它

打通 trace_id 链路的最后一跳:agentexecutor 是链路终点,也是此前 grep 断点——frontend 已把 X-Trace-ID 随 tunnel 请求透传进 loopback HTTP,yr 已把 YR_TRACE_ID/INSTANCE_ID/YR_RUNTIME_ID env 注入沙箱,但 executor 一处都没读,沙箱内日志无法与宿主侧全链路日志关联。

本 PR 在 executor 三个边界补齐打点(E1 请求级 / E2 启动级 / E3 进程级),并顺带解决探针稳态日志刷屏问题:

  • E1(请求级):文件四件套 + 5 个 sandbox 端点,每个请求 enter/exit 成对打点,frontend 与 executor 双侧同键可查。
  • E2(启动级):executor 进程启动即打三键齐全一行,是"create 链路到达 executor"的确认点。
  • E3(进程级):每条 bootstrap 用户进程拉起时打点,与 bootstrap_cmd_<i>.log 输出文件编号互相对应。
  • 探针降噪:liveness 探针挂 yr runtime 1s 心跳(DEFAULT_PING_CYCLE=1000),稳态每秒一条 INFO 全天 ~8.6 万行刷屏;改为状态跃迁才打(HEALTHY 稳态静默,跃迁/subhealth/失败才打),错误路径日志保留。

此PR修复了哪些问题

Fixes #6


PR对程序接口进行了哪些修改?

1. E1 请求级打点(executor/src/yr/agentexecutor/http_server.py)

新增 _agent_trace contextmanager 统一包裹:

[agent.<op>.enter] agentexecutor path=<route> trace_id=<..> instance_id=<..>
[agent.<op>.exit]  agentexecutor result=<HTTP:<status>|ERR> cost_ms=<..> trace_id=<..> instance_id=<..>
  • trace_id 取请求头 X-Trace-ID,instance_id 取 env INSTANCE_ID;空值字段整体省略,格式不变(沙箱内用户进程直连无头时兼容)。
  • <op> ∈ upload|download|filelist|mkdir + 5 个 sandbox 端点(op 取路径末段);/healthz 心跳不打,避免刷屏。
  • exit 行经 send_response override 记录状态码,try/finally 保证异常路径也成对。
  • 重复日志降级:access log、client 断连、download range 拒绝三处降为 DEBUG——结果已由 exit 行表达,避免双写。

2. E2 启动行(executor/src/yr/agentexecutor/runtime.py)

AgentExecutorRuntime.start() 打一行:

[agent.start.enter] agentexecutor trace_id=<YR_TRACE_ID env> instance_id=<INSTANCE_ID env> runtime_id=<YR_RUNTIME_ID env>

supervisor 与 docker 两种 sandbox_type 均打(只依赖注入的 env,与 executor 类型无关)。sandbox_id 不在沙箱内重复感知——由宿主侧既有日志关联(supervisor 路径 jiuwenbox 并列行;docker 路径 containerID 行)。

3. E3 bootstrap 行(executor/src/yr/agentexecutor/process_manager.py)

拉起每条 YR_RUNTIME_BOOTSTRAP_CMD 时,与既有 started user process 行合并增强(不新增两条):

started user process pid=<pid> bootstrap_index=<i> argv=<argv> trace_id=<..> instance_id=<..>

bootstrap_index 与统一后的 ${GLOG_log_dir}/${YR_RUNTIME_ID}/bootstrap_cmd_<i>.log 输出文件编号对应——grep 到日志行即可定位对应进程输出文件。

4. 探针日志降噪(executor/src/yr/agentexecutor/probe.py)

  • liveness 改为状态跃迁才打:新增 _log_liveness_state(state, detail),记录 _liveness_last_state,同状态重复 → DEBUG,跃迁 → INFO,转 FAILED → WARNING(含失败原因)。
  • DISABLED 分支(startup 门期间/未配置)→ DEBUG;startup 每次尝试失败 → DEBUG(最终失败已有既有日志)。
  • 保留关键流程 INFO:liveness probe configured、startup probe waiting initial_delay 等启动序列线保留,探针仍可从日志看清流程。

环境变量(只读,均为 yr 侧注入,executor 不新增)

环境变量 用途
YR_TRACE_ID E2/E3 traceid 来源(C2 注入)
INSTANCE_ID E1/E2/E3 实例身份来源
YR_RUNTIME_ID E2/E3 runtime 身份来源

与其他模块的相关性描述

  • frontend(配套 PR):E1 的 traceid 来自 frontend 随 tunnel 请求透传的 X-Trace-ID 头。
  • functionsystem(配套 PR):E2/E3 的三键来自 build.cpp GeneratePosixEnvs 注入的 env;E1 的请求来自 frontend 文件/sandbox API 经 tcp.tunnel 转发。
  • executor 是平台托管组件(预装 Agent 基础镜像),日志变更只影响 agent 沙箱,不波及通用 FaaS 链路;不依赖 yr 包。

测试

  • 单测:tests/executor/ 84 项全通过。新增覆盖:sandbox 端点 enter/exit 成对与 trace 字段、空值字段省略、/healthz 静默、E2 启动行三键、E3 行 bootstrap_index 与 trace 后缀、liveness 跃迁才打(HEALTHY 稳态静默 / SUBHEALTH→HEALTHY 跃迁两条回归用例)。
  • 端到端(hhc-compile 容器,自验脚本 self-verified/0016-traceid-selftest.sh,37/37 PASS):create 带 X-Trace-Id 后,runtime 日志命中 E2 启动行(三键齐全)、E3 bootstrap 行、E1 文件操作行(mkdir HTTP:200 / download 404 失败路径也成对打点)。
  • 刷屏消除:实例 RUNNING 稳态下 liveness 不再每秒打 INFO,仅状态变化时输出。

自验结果
image.png

image.png

likedislike
Pull Request已成功合入, 合并人@songlicheng
(感谢 huhaichuan 的贡献)
huhaichuanhuhaichuan成员
9月4日 关联了issue:[Feature]: 补充ID相关日志打印,支撑问题快速定位定界
atomgit-bot
atomgit-bot
9月4日 评论:

变更摘要

本 PR 打通 RFC-0016 trace_id 链路在 agentexecutor(链路终点)的最后一跳:此前 frontend 已通过 X-Trace-ID 请求头透传、yr 侧已注入 YR_TRACE_ID/INSTANCE_ID/YR_RUNTIME_ID 环境变量,但 executor 未读取。本次在 executor 三个边界补齐打点(E1 请求级、E2 启动级、E3 进程级),并顺带将 liveness 探针的稳态刷屏日志改为状态跃迁才输出。涉及文件包括 http_server.py、runtime.py、process_manager.py、probe.py 及对应测试,改动以新增打点和日志级别降级为主,不改接口与业务行为。

主要改动

  • E1 请求级打点(http_server.py): 新增 _agent_trace contextmanager,为 download/filelist/upload/mkdir 及 5 个 sandbox 端点(op 取路径末段)每请求成对输出 [agent.<op>.enter]/[agent.<op>.exit](含 result=HTTP:<status>|ERR、cost_ms),trace_id 取请求头 X-Trace-ID、instance_id 取 env INSTANCE_ID,空值字段整体省略;/healthz 不参与打点,send_response override 记录状态码供 exit 行使用,try/finally 保证异常路径成对输出,同时将 access log、客户端断连、download range 拒绝三处重复日志降为 DEBUG。
  • E2 启动级打点(runtime.py): AgentExecutorRuntime.start() 在启动时输出一行 [agent.start.enter] agentexecutor,按 env 拼接 trace_id=<YR_TRACE_ID>、instance_id=<INSTANCE_ID>、runtime_id=<YR_RUNTIME_ID>(空值省略),作为 create 链路到达 executor 的确认点。
  • E3 进程级打点(process_manager.py): 拉起每条 bootstrap 用户进程时,将原有 started user process 日志合并增强为含 pid、bootstrap_index(与 bootstrap_cmd_<i>.log 输出文件编号对应)及可选的 trace_id/instance_id 后缀,不额外新增日志行。
  • 探针日志降噪(probe.py): 新增 _log_liveness_state(state, detail) 并记录 _liveness_last_state:liveness 同状态重复打 DEBUG、状态跃迁打 INFO、转 FAILED 打 WARNING(含失败原因);DISABLED 分支与 startup 每次尝试失败均降为 DEBUG,保留 liveness probe configured 等关键流程 INFO 行。
  • 测试补充: test_http_server.py、test_probe.py、test_process_manager.py、test_runtime.py 新增用例,覆盖 sandbox 端点 enter/exit 成对与 trace 字段、/healthz 静默、空值字段省略、E2 启动行三键、E3 行 bootstrap_index 与 trace 后缀、liveness 稳态静默与跃迁回 HEALTHY 时输出等场景。
likedislike
不准确?
atomgit-bot
atomgit-bot
9月4日 评论:

代码审查

✅ 未发现问题

likedislike
不准确?
openJiuwen-bot成员
9月4日 评论:

欢迎来到 openJiuwen 社区

Hey @KaisennHu , 感谢你对社区的贡献.

机器人使用手册

有关指令的使用,可以点击 此处 查看详情。开发人员可以在每个PR或Issue下方评论特定指令来触发机器人任务。

likedislike
atomgit-bot
atomgit-bot
9月4日 评论:

AtomGit AI 助手使用指南

在 PR 评论中使用命令即可触发。支持在普通评论和代码行评论中使用。

功能 命令 说明
代码审查 /ai review 检查代码质量、潜在问题、安全风险
PR 摘要 /ai summary 生成 PR 变更内容的结构化摘要
代码解释 /ai explain 解释代码变更的逻辑和意图
自由提问 @atomgit-bot <问题> 询问关于本 PR 的任何问题
帮助 /ai help 显示此帮助信息

免责声明

AI 助手可能存在误判,请结合自身判断。可以对评论点 👍 或 👎 帮助我们改进。

likedislike
不准确?
OopenJiuwen-bot成员
9月4日 添加了label:openJiuwen-cla/yes
openJiuwen-bot成员
9月4日 评论:

The pipeline(pipeline number:16) is running. Please wait a moment...

likedislike
OopenJiuwen-bot成员
9月4日 添加了label:ci-running
OopenJiuwen-bot成员
9月4日 删除了label:ci-running
openJiuwen-bot成员
9月4日 评论:
任务名称 结果 日志操作
静态检查 ❌FAILED 点此跳转
禁用词扫描 ✅SUCCESS 点此跳转
防投毒检查 ✅SUCCESS 点此跳转
开源合规检查 ✅SUCCESS 点此跳转
UT测试 ❌FAILED 点此跳转
ST测试 N/A N/A
build 编译包 N/A N/A
ruff codecheck ✅SUCCESS N/A
issue关联检查 N/A N/A
pr size检查 N/A N/A
likedislike
OopenJiuwen-bot成员
9月4日 添加了label:ci-failed
huhaichuanhuhaichuan成员
9月4日 强制推送  1 个提交:d1258288-feat(executor): log trace_id/instance_id at executor boundaries and suppress probe noise
OopenJiuwen-bot成员
9月4日 删除了label:openJiuwen-cla/yes
OopenJiuwen-bot成员
9月4日 添加了label:openJiuwen-cla/yes
openJiuwen-bot成员
9月4日 评论:

The pipeline(pipeline number:16) is running. Please wait a moment...

likedislike
OopenJiuwen-bot成员
9月4日 删除了label:ci-failed
OopenJiuwen-bot成员
9月4日 添加了label:ci-running
OopenJiuwen-bot成员
9月4日 删除了label:ci-running
openJiuwen-bot成员
9月4日 评论:
任务名称 结果 日志操作
静态检查 ✅SUCCESS 点此跳转
禁用词扫描 ✅SUCCESS 点此跳转
防投毒检查 ✅SUCCESS 点此跳转
开源合规检查 ✅SUCCESS 点此跳转
UT测试 ❌FAILED 点此跳转
ST测试 N/A N/A
build 编译包 N/A N/A
ruff codecheck ✅SUCCESS N/A
issue关联检查 N/A N/A
pr size检查 N/A N/A
likedislike
OopenJiuwen-bot成员
9月4日 添加了label:ci-failed
huhaichuanhuhaichuan成员
9月4日 强制推送  1 个提交:03c01336-feat(executor): log trace_id/instance_id at executor boundaries and suppress probe noise
OopenJiuwen-bot成员
9月4日 删除了label:openJiuwen-cla/yes
OopenJiuwen-bot成员
9月4日 添加了label:openJiuwen-cla/yes
openJiuwen-bot成员
9月4日 评论:

The pipeline(pipeline number:16) is running. Please wait a moment...

likedislike
OopenJiuwen-bot成员
9月4日 删除了label:ci-failed
OopenJiuwen-bot成员
9月4日 添加了label:ci-running
OopenJiuwen-bot成员
9月4日 删除了label:ci-running
openJiuwen-bot成员
9月4日 评论:
任务名称 结果 日志操作
静态检查 ✅SUCCESS 点此跳转
禁用词扫描 ✅SUCCESS 点此跳转
防投毒检查 ✅SUCCESS 点此跳转
开源合规检查 ✅SUCCESS 点此跳转
UT测试 ❌FAILED 点此跳转
ST测试 N/A N/A
build 编译包 N/A N/A
ruff codecheck ✅SUCCESS N/A
issue关联检查 N/A N/A
pr size检查 N/A N/A
likedislike
OopenJiuwen-bot成员
9月4日 添加了label:ci-failed
huhaichuanhuhaichuan成员
9月4日 强制推送  1 个提交:6915e6a3-feat(executor): log trace_id/instance_id at executor boundaries and suppress probe noise
OopenJiuwen-bot成员
9月4日 删除了label:openJiuwen-cla/yes
OopenJiuwen-bot成员
9月4日 添加了label:openJiuwen-cla/yes
openJiuwen-bot成员
9月4日 评论:

CLA 签署成功

KaisennHu, 感谢您的代码贡献。 所有的代码贡献者都已完成了 CLA 签署。 👍

likedislike
openJiuwen-bot成员
9月4日 评论:

The pipeline(pipeline number:16) is running. Please wait a moment...

likedislike
OopenJiuwen-bot成员
9月4日 删除了label:ci-failed
OopenJiuwen-bot成员
9月4日 添加了label:ci-running
OopenJiuwen-bot成员
9月4日 删除了label:ci-running
openJiuwen-bot成员
9月4日 评论:
任务名称 结果 日志操作
静态检查 ✅SUCCESS 点此跳转
禁用词扫描 ✅SUCCESS 点此跳转
防投毒检查 ✅SUCCESS 点此跳转
开源合规检查 ✅SUCCESS 点此跳转
UT测试 ✅SUCCESS 点此跳转
ST测试 N/A N/A
build 编译包 N/A N/A
ruff codecheck ✅SUCCESS N/A
issue关联检查 N/A N/A
pr size检查 N/A N/A
likedislike
OopenJiuwen-bot成员
9月4日 添加了label:ci-successful
huhaichuanhuhaichuan成员
9月4日 修改了pull request 的描述
huhaichuanhuhaichuan成员
9月4日 修改了pull request 的描述
songlicheng
songlicheng成员
9月5日 评论:

/lgtm
/approve

likedislike
openJiuwen-bot成员
9月5日 评论:

Label Command Feedback

  • The label(s) **** permission is outside.
  • The label(s) approved permission is outside.
likedislike
songlichengsonglicheng成员
9月5日 合入了pull request,合并节点 SHA:3a556e51c2117133f9505ff71eb7ab05b522d804
OopenJiuwen-bot成员
9月5日 删除了label:ci-successful