全部产品
Search
文档中心

日志服务:采集 AI Agent 可观测(AgentSight)日志

更新时间:Sep 23, 2026

传统应用埋点难以适应 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 采集配置

  1. 登录日志服务控制台。

  2. 在接入数据区域,选择对应的 LoongCollector 采集配置入口,选择目标 Project 和 Logstore。

  3. 在机器组配置页面,配置并应用目标机器组。

    重要

    创建机器组后立刻应用,可能因为连接未生效,导致心跳为 FAIL,可单击自动重试。

  4. 进入数据源设置页签,设置配置名称并填写插件配置,然后完成后续步骤。插件类型固定为 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 及以上版本中支持。

  5. 创建索引并预览数据。可根据采集到的字段手动创建字段索引或单击自动生成索引。

  6. 完成配置后,等待约 1 分钟索引生效,即可在 Logstore 查询分析页面查看采集到的日志。

  7. 验证采集结果。正常采集时,日志中应包含以下关键字段:

    • gen_ai.agent.type:标识 Agent 类型(如 openclaw、hermes)。

    • gen_ai.model.request 和 gen_ai.model.response:分别对应请求日志与响应日志(EventStreamFormat 为 true 时)。

    • event.id:同一次 LLM 调用的请求与响应共享同一 ID。

    如果查询页面无数据,请参见使用限制与问题排查。

配置参数

参数

类型

是否必填

默认值

说明

Type

string

是

/

插件类型,固定为 input_agentsight。

ProbeConfig

object

否

/

AgentSight 探测配置。整体未配置时所有子项走默认。

ProbeConfig.Verbose

uint

否

0

是否打印 eBPF 详细日志,1 开启,0 关闭。

ProbeConfig.LogPath

string

否

""

eBPF 日志的输出位置。

ProbeConfig.CmdlineWhitelist

array

否

内置 9 条

进程 Agent 筛选白名单。每项为对象:AgentType(写入日志字段 gen_ai.agent.type)+ Args(字符串数组,与进程 cmdline 各参数按位置做 glob 匹配)。未配置且 CmdlineBlacklist 也为空时注入默认白名单;填写后只使用用户规则,不再叠加内置。空数组 [] 视为非法配置。

ProbeConfig.CmdlineBlacklist

array

否

/

进程 Agent 筛选黑名单,每项为 glob 字符串数组(无 AgentType);命中则排除,不采集。优先级高于白名单。

ProbeConfig.Https

array

否

内置 7 条

HTTPS 加密流量的域名白名单(字符串数组,glob 通配符 *,不区分大小写)。访问白名单内域名的进程可被识别为采集目标。未配置时注入默认列表。

ProbeConfig.Http

array

否

[](关闭)

HTTP 明文流量的目标列表。每项可为 :端口、IP、IP:端口 或域名。留空时不采集明文 HTTP 流量。

ProbeConfig.RawHttpsFallback

bool

否

false

为 true 时,无法解析为 GenAI 语义的流量(未知 API path、非标准 body)不再丢弃,而是以原始 HTTP 形式上报,事件名为 event.name=http.request / http.response。该类日志与 gen_ai.* 日志互斥,同一次流量最多产生一种。仅在 LoongCollector v3.3.9 及以上版本中支持。

ProbeConfig.EventStreamFormat

bool

否

true

为 true 时,每次 LLM 调用在同一日志组内输出两条日志:gen_ai.model.request(请求)与 gen_ai.model.response(响应),各带 event.id;为 false 时输出单条合并日志,无 event.name / event.id。

ProbeConfig.MessageDeltaOnly

bool

否

true

为 true 时不输出全量 gen_ai.input.messages,仅输出增量 gen_ai.input.messages_delta 及 hash 变化时的 system/tools 全文;为 false 时每次输出非空的全量 gen_ai.input.messages。不影响 gen_ai.output.messages。

采集范围判定逻辑

HTTPS 加密流量按下列固定顺序判定(进程级):

  1. 命中 CmdlineBlacklist → 不采集(黑名单优先)。

  2. 未命中黑名单,且命中 CmdlineWhitelist → 纳入采集。

  3. 仍未纳入,且进程访问域名命中 Https → 纳入采集。

  4. 以上均未命中 → 不采集。

默认注入规则

当 CmdlineWhitelist 与 CmdlineBlacklist 均未配置时,注入以下内置 9 条默认命令行白名单;当 Https 为空时,注入以下内置 7 条默认域名列表。

内置默认命令行白名单:

AgentType

Args(cmdline 各段 glob)

hermes

hermes*

hermes

*python*, *hermes*

hermes

*python*, -m, *hermes*

cosh

node*, */usr/bin/co*

cosh

node*, */usr/bin/cosh*

cosh

node*, */usr/bin/copliot*

cosh

node*, *copilot-shell*

openclaw

*openclaw-gatewa*

openclaw

node*, *openclaw*

内置默认域名白名单:

域名

说明

api.openai.com

OpenAI

api.anthropic.com

Anthropic

dashscope.aliyuncs.com

DashScope/百炼按量付费·华北2(北京)

dashscope-intl.aliyuncs.com

DashScope/百炼按量付费·新加坡

dashscope-us.aliyuncs.com

DashScope/百炼按量付费·美国(弗吉尼亚)

coding.dashscope.aliyuncs.com

DashScope/百炼 Coding Plan

*.maas.aliyuncs.com

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 可通过符号定位到 SSL_read / SSL_write 等收发函数。例如 OpenClaw、Hermes、Cosh、Claude Code 等。

无符号表(被 strip 去除),但静态链接常见的 C 语言 SSL(OpenSSL)

有限支持

字节码特征匹配

没有符号表、无法按符号定位,但底层是 OpenSSL 等常见 C 库时,eBPF 仍可用字节码特征匹配定位收发函数。例如经 uv 打包、静态链接 OpenSSL 且已 strip 的 Python 工具。

无符号表(被 strip 去除),且静态链接、无导出符号,字节码也无法匹配

不支持

无法定位

既没有符号表、字节码特征又匹配不到收发函数,无法定位 Hook 点。例如官方发布的 Codex CLI(strip 静态链接、无导出符号)即属此类,本插件无法采集。