传统应用埋点难以适应 AI Agent 快速迭代的技术形态,也无法穿透工具调用链路识别 Agent 实际执行的行为。LoongCollector 通过 input_agentsight 插件,基于 eBPF 在系统层观测 Agent 进程与大模型(LLM)之间经 TLS 加密的请求与响应,无需修改 Agent 代码即可采集完整的交互可观测日志。本文介绍如何通过日志服务控制台创建 LoongCollector 采集配置,采集 AgentSight 日志。
功能概述
input_agentsight 插件通过 eBPF 在内核层挂载 SSL/TLS 探针与进程观测,捕获 Agent 进程与 LLM 服务之间的加密流量,从而在不修改 Agent 代码的前提下实现端到端可观测。支持采集的数据包括:
请求 messages 与响应 messages
模型名、Token 用量、耗时、状态码
工具定义(tool definitions)
支持基于域名白名单识别访问大模型 API 的进程,内置常见大模型 API 域名。
大模型供应商支持
供应商 / 协议 | 是否支持 |
OpenAI | 支持 |
Anthropic | 支持 |
DashScope/百炼协议 | 支持 |
对于已支持的 payload 协议,插件输出标准 OTel GenAI 字段(如 gen_ai.*);对于尚未适配的协议,会上报脱敏后的原始 payload,由服务端后续适配。
支持接入的 AI Agent 示例
类型 | 示例 |
常见的 Agent | Claude Code、OpenClaw、QwenPaw、Hermes 等 |
常见的 LLM 框架 | LangChain、LangGraph、Dify、AgentScope 等 |
自研 Agent | Python 自研 Agent、Node.js 自研 Agent |
适用范围
使用 input_agentsight 插件前,请确认满足以下条件:
服务器操作系统内核版本为 Linux 5.10 及以上。该插件依赖 eBPF 技术进行系统层观测,低于 5.10 的内核不支持相关特性。已验证支持的环境包括 Alibaba Cloud Linux 3、Ubuntu 22.04、Ubuntu 24.04。可执行以下命令查看当前内核版本:
uname -r已在服务器上安装 LoongCollector 最新版本(不低于 v3.3.9)。AgentSight 采集能力依赖较新版本的 LoongCollector,请务必升级到最新版后再进行配置。
已在目标服务器上部署并运行待观测的 Agent 工具(如 OpenClaw、Hermes 等)。
Agent 可执行文件需满足 eBPF 可定位条件(保留符号表或使用常见 SSL 库),否则无法采集加密流量。具体兼容性判断请参见技术附录。
ACK 容器环境:若待观测的 Agent 运行在容器服务 Kubernetes 版(ACK)集群的 Pod 中,需额外满足以下条件:
集群中的 LoongCollector 组件已升级到 v3.3.10 及以上版本。
已在 ACK 控制台的组件管理页面开启
enableEBPF开关。
满足以上条件后,即可创建 AgentSight 采集配置,采集集群内 Agent 与 LLM 之间的交互日志。
创建 AgentSight 采集配置
登录日志服务控制台。
在接入数据区域,选择对应的 LoongCollector 采集配置入口,选择目标 Project 和 Logstore。
在机器组配置页面,配置并应用目标机器组。
重要创建机器组后立刻应用,可能因为连接未生效,导致心跳为 FAIL,可单击自动重试。
进入数据源设置页签,设置配置名称并填写插件配置,然后完成后续步骤。插件类型固定为
input_agentsight,根据实际场景选择以下配置模式:仅观测内置默认 Agent 和域名:使用最简配置,全部走默认(注入内置默认白名单与默认域名列表)。
需观测非默认域名的模型服务:使用自定义域名白名单,将目标域名显式加入列表。
需精确匹配特定进程:使用自定义命令行白名单,按进程命令行筛选 Agent 并标记类型。
需保留无法解析为 GenAI 语义的流量:开启原始 HTTP 流量上报,将未知协议的流量以原始 HTTP 形式保留。
最简配置:仅指定插件类型,全部走默认配置(注入内置默认白名单与默认域名列表)。
{ "inputs": [ { "type": "input_agentsight" } ] }自定义域名白名单:
{ "inputs": [ { "detail": { "ProbeConfig": { "Https": [ "api.openai.com", "api.anthropic.com", "dashscope-intl.aliyuncs.com", "dashscope.aliyuncs.com" ] } }, "type": "input_agentsight" } ] }自定义命令行白名单:按进程命令行精确筛选目标 Agent 并标记其类型。
{ "inputs": [ { "detail": { "ProbeConfig": { "CmdlineWhitelist": [ { "AgentType": "openclaw", "Args": ["node*", "*openclaw*"] }, { "AgentType": "claude-code", "Args": ["node*", "*claude*"] } ] } }, "type": "input_agentsight" } ] }未知协议以原始 HTTP 流量上报:开启
ProbeConfig.RawHttpsFallback后,AgentSight 无法解析为 GenAI 语义的流量(未知 API path、非标准 body)不再丢弃,而是以原始 HTTP 形式上报。{ "inputs": [ { "detail": { "ProbeConfig": { "RawHttpsFallback": true } }, "type": "input_agentsight" } ] }说明开启该配置后的行为如下:
RawHttpsFallback: true输出的原始 HTTP 日志仅在 AgentSight 无法将流量解析为 GenAI 语义时产生,与gen_ai.*日志互斥,同一次流量最多产生其中一种。原始 HTTP 流量以
event.name=http.request或http.response事件名上报。该功能仅在 LoongCollector v3.3.10 及以上版本中支持。
创建索引并预览数据。可根据采集到的字段手动创建字段索引或单击自动生成索引。
完成配置后,等待约 1 分钟索引生效,即可在 Logstore 查询分析页面查看采集到的日志。
验证采集结果。正常采集时,日志中应包含以下关键字段:
gen_ai.agent.type:标识 Agent 类型(如openclaw、hermes)。gen_ai.model.request和gen_ai.model.response:分别对应请求日志与响应日志(EventStreamFormat为true时)。event.id:同一次 LLM 调用的请求与响应共享同一 ID。
如果查询页面无数据,请参见使用限制与问题排查。
配置参数
参数 | 类型 | 是否必填 | 默认值 | 说明 |
Type | string | 是 | / | 插件类型,固定为 |
ProbeConfig | object | 否 | / | AgentSight 探测配置。整体未配置时所有子项走默认。 |
ProbeConfig.Verbose | uint | 否 |
| 是否打印 eBPF 详细日志, |
ProbeConfig.LogPath | string | 否 |
| eBPF 日志的输出位置。 |
ProbeConfig.CmdlineWhitelist | array | 否 | 内置 9 条 | 进程 Agent 筛选白名单。每项为对象: |
ProbeConfig.CmdlineBlacklist | array | 否 | / | 进程 Agent 筛选黑名单,每项为 glob 字符串数组(无 |
ProbeConfig.Https | array | 否 | 内置 7 条 | HTTPS 加密流量的域名白名单(字符串数组,glob 通配符 |
ProbeConfig.Http | array | 否 |
| HTTP 明文流量的目标列表。每项可为 |
ProbeConfig.RawHttpsFallback | bool | 否 |
| 为 |
ProbeConfig.EventStreamFormat | bool | 否 |
| 为 |
ProbeConfig.MessageDeltaOnly | bool | 否 |
| 为 |
采集范围判定逻辑
HTTPS 加密流量按下列固定顺序判定(进程级):
命中
CmdlineBlacklist→ 不采集(黑名单优先)。未命中黑名单,且命中
CmdlineWhitelist→ 纳入采集。仍未纳入,且进程访问域名命中
Https→ 纳入采集。以上均未命中 → 不采集。
默认注入规则
当 CmdlineWhitelist 与 CmdlineBlacklist 均未配置时,注入以下内置 9 条默认命令行白名单;当 Https 为空时,注入以下内置 7 条默认域名列表。
内置默认命令行白名单:
AgentType | Args(cmdline 各段 glob) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
内置默认域名白名单:
域名 | 说明 |
| OpenAI |
| Anthropic |
| DashScope/百炼按量付费·华北2(北京) |
| DashScope/百炼按量付费·新加坡 |
| DashScope/百炼按量付费·美国(弗吉尼亚) |
| DashScope/百炼 Coding Plan |
| DashScope/百炼业务空间专属 / 试用 / Token Plan 域名 |
用户配置会整体覆盖(override)内置默认值,而非在其基础上追加。一旦填写了任意一条规则,内置默认列表即全部失效。因此若仍需保留内置默认项,必须在自己的配置里把要保留的内置规则一并写出,否则未写出的默认 Agent / 域名将不再被采集。AgentType 建议仅使用小写字母、数字与连字符 -(如 openclaw、claude-code),便于跨产品聚合分析。
使用限制与问题排查
预览或查询页面无数据:请先确认服务器内核版本不低于 5.10(
uname -r)、LoongCollector 已升级到 v3.3.9 及以上;再确认目标进程的命令行能被CmdlineWhitelist命中,或其访问的域名在Https列表内。可在本机执行以下命令查看真实命令行后再编写 glob 规则:tr '\0' ' ' < /proc/<PID>/cmdline; echo此外,还可参见Logtail采集日志失败的排查思路进行排查。
技术附录
input_agentsight 基于 eBPF 采集,能否采集到某个 Agent 的 HTTPS 加密流量,取决于其可执行文件是否可被 eBPF 定位到 SSL 收发函数。可参考下表判断:
场景 | 是否支持 | 定位方式 | 说明 |
通过 Node.js / Python 运行,或保留符号表的 Agent | 支持 | 按符号定位 | 这类程序通过常见 SSL 库(主要是 OpenSSL)收发数据,且导出了符号,eBPF 可通过符号定位到 |
无符号表(被 strip 去除),但静态链接常见的 C 语言 SSL(OpenSSL) | 有限支持 | 字节码特征匹配 | 没有符号表、无法按符号定位,但底层是 OpenSSL 等常见 C 库时,eBPF 仍可用字节码特征匹配定位收发函数。例如经 uv 打包、静态链接 OpenSSL 且已 strip 的 Python 工具。 |
无符号表(被 strip 去除),且静态链接、无导出符号,字节码也无法匹配 | 不支持 | 无法定位 | 既没有符号表、字节码特征又匹配不到收发函数,无法定位 Hook 点。例如官方发布的 Codex CLI(strip 静态链接、无导出符号)即属此类,本插件无法采集。 |