Conversation
6ea8ccf to
8980494
Compare
9d6be57 to
4b22b71
Compare
|
translation.go 部分,只在 INT_ENUM_PEER_TAG 里加一下即可,其他地方不用改 |
c161d36 to
931bed0
Compare
@xiaochaoren1 意思是下图中红框的部分不需要,只需要在 INT_ENUM_PEER_TAG中加一下biz_type? |
cb4cefa to
c019029
Compare
AI Agent Governance背景这组改动为 AI Agent / 智能体治理补齐了从 识别、进程归属、治理事件采集、数据落库 到
变更范围deepflow(开源侧)
deepflow-core(EE / 联动依赖侧)
Reviewer Guide建议按下面顺序评审,这样最容易建立全局上下文:
核心修改说明1. 新增 AI Agent 配置与识别入口这一部分的目标,是让 AI Agent 成为一个可配置、可识别、可调参的能力,而不是写死在解析器里的特殊分 主要变化:
review 价值:
2. 引入 EE 侧 AiAgentRegistry,稳定管理 AI Agent 进程状态这一部分的目标,是把 AI Agent 的“注册 / 查询 / BPF map 同步 / 继承 / 回溯”从临时逻辑提升为一个稳定 主要变化:
review 价值:
3. 将 AI Agent 的
|
lzf575
left a comment
There was a problem hiding this comment.
ingester 写入正常。目前看新增加的几个 event 表,支持单独设置保留时长,后续需要在页面验证确认下。
|
|
||
| if (latency < tracer_ctx->io_event_minimal_duration) { | ||
| #ifdef EXTENDED_AI_AGENT_FILE_IO | ||
| if (!__ai_agent) |
There was a problem hiding this comment.
ai_agent 不受io_event的配置控制,这里存在一个需要注意的问题:
- 如果文件读写是微秒甚至纳秒级别,file读写事件可能会非常非常多,吃掉节点资源,所以这里是否需要一个
ai_agent文件读写的时间限制更好一些?
There was a problem hiding this comment.
这个担忧我确认过,但本轮不按“增加时间限制/限流”修改。PRD 在智能体数据采集里明确要求“所有文件读写事件,无需对读写时延、读写时机做限制”,功能测试用例里也有 TC-EVT-001/002/003/004 对应覆盖。因此这里不能通过在 BPF 层增加时延门槛或限流来处理。后续如果需要控制资源,只能走不改变事件可见性的优化路径,例如更强聚合、传输/存储优化或统计告警。
| DATA_SOURCE_UNIX_SOCKET, | ||
| DATA_SOURCE_FILE_OP_EVENT, | ||
| DATA_SOURCE_PERM_OP_EVENT, | ||
| DATA_SOURCE_PROC_LIFECYCLE_EVENT, |
There was a problem hiding this comment.
datadump 部分
deepflow/agent/src/ebpf/user/socket.c
Line 3784 in 010323c
SOURCE 目前只是数值标识,如果可以的话可以显示具体的事件名称。
There was a problem hiding this comment.
这个建议合理,属于调试可读性优化。我先记录为后续增强项,本轮优先处理 correctness 和语义一致性问题。
4cf0093 to
6692c1a
Compare
| BPF_F_CURRENT_CPU, &data, sizeof(data)); | ||
| #ifdef EXTENDED_AI_AGENT_FILE_IO | ||
| if (is_ai_agent_process(id)) { | ||
| ai_agent_emit_proc_event(ctx, AI_AGENT_PROC_EXIT, |
There was a problem hiding this comment.
第637行已经上报了一个事件,可以评估将 AI 相关事件进行合并处理,以进一步降低事件数量。
当前 eBPF 侧的优化目标是控制系统开销,已围绕减少 Hook 点、精简事件上报、优化 Map 使用等方面持续推进,以降低对节点和业务负载的影响。
There was a problem hiding this comment.
这个建议我先不在当前 PR 里改代码,原因是这里存在两条职责不同的事件链路:\n\n1. uprobe_base.bpf.c 里的通用 process_event_t(exec/exit)仍然被现有 Go/SSL uprobes 生命周期处理依赖;\n2. AI Agent 的 proc_ops_event 是额外治理数据通路。\n\n当前第 637 行上报的不是“只给 AI 用的重复事件”,直接合并掉会影响已有 proc event 消费者,所以这里不能简单在当前 PR 里做 BPF 侧合并。\n\n如果后续要进一步降事件量,我倾向于单独做一轮优化,把通用 proc_event 消费链和 AI governance 事件链一起梳理清楚,再决定是在 eBPF 侧去重、还是在用户态/ingester 侧聚合,避免引入现有 uprobes 生命周期回归。
agent/src/ebpf/user/socket.c
Outdated
| tps_set_symbol(tps, "tracepoint/syscalls/sys_enter_setregid"); | ||
| tps_set_symbol(tps, "tracepoint/sched/sched_process_fork"); | ||
| tps_set_symbol(tps, "tracepoint/sched/sched_process_exec"); | ||
| tps_set_symbol(tps, "tracepoint/sched/sched_process_exit"); |
There was a problem hiding this comment.
当前 config_probes_for_proc_event 中已经覆盖了 sched_process_fork / exec / exit 三类核心进程事件。从进程生命周期角度看,这些 tracepoint 基本可以满足绝大部分场景需求。
如果仅关注进程创建、执行和退出行为,是否复用该处 hook 点就可以了?无需额外增加新的探针以及重复添加探针,从而有助于控制 eBPF 事件规模与系统开销。
There was a problem hiding this comment.
这个点成立,我确认后会在当前 PR 里做最小修正。\n\nconfig_probes_for_proc_event() 已经注册了 exec/exit 生命周期 hook,而 config_probes_for_ai_agent() 又额外追加了同样的 sched_process_exec / sched_process_exit tracepoint;当前 tps_set_symbol() 只是追加,不做去重,所以这里确实属于重复注册。\n\n不过 sched_process_fork 不能一起删,因为 AI Agent 的子进程继承/传播逻辑是在 AI 专用 process_fork tracepoint 里做的,通用 proc_event 路径不能替代这部分。\n\n我这边会按这个边界处理:删掉 AI 部分重复的 exec/exit,保留 fork。
There was a problem hiding this comment.
已按这个边界处理。\n\n当前改动是:\n1. 从 config_probes_for_ai_agent() 去掉重复的 sched_process_exec;\n2. 从 config_probes_for_ai_agent() 去掉重复的 sched_process_exit;\n3. 保留 sched_process_fork,继续负责 AI Agent 子进程继承/传播。\n\n这样通用 proc_event 路径继续负责 exec/exit 生命周期 hook,AI 专用路径只保留 fork 所需的额外 hook。\n\n我已在 builder 容器里做过 cargo check --features enterprise,编译通过。
|
补充说明一下,这里当前的实现前提已经变成“只支持 原因是 所以当前修正做法是:
我已经按这个逻辑在当前分支验证过, |




This PR is for:
Support agent governance
Checklist
Backport to branches