OpenClaw 上线数周暴露近 1000 个未认证实例、512 个漏洞(8 个高危),单次提问触发 19 轮 LLM 调用消耗 784 万 tokens。本文基于 AI Observe Stack(OpenTelemetry + Apache Doris + Grafana)搭建 AI Agent 可观测系统,实现安全审计、成本分析和行为追踪。

关键词:Apache Doris · AI Agent · 可观测性 · OpenClaw · OpenTelemetry · Grafana · prompt injection · SelectDB


AI Agent 的三个黑盒问题

OpenClaw 是 2026 年最火的开源 AI Agent 平台,但安全问题井喷:

安全事件 来源 数据
近 1000 个暴露实例 Kaspersky 无需认证即可访问
512 个漏洞(8 个高危) BitSight CVE-2026-25253 CVSS 8.8
邮件诱导窃取 SSH 密钥 Trend Micro prompt injection
36% 技能有安全缺陷 Snyk 1467 个恶意载荷

我们用 AI Observe Stack 对 OpenClaw 实例做 7 天全量可观测审计,发现:

  • Agent 自主执行 31 次 shell 命令
  • 访问 40 个外部网站,部分含 prompt injection 标记
  • 单次提问触发 19 轮 LLM 调用,消耗 784 万 tokens

三个黑盒:安全黑盒(不知道 Agent 执行了什么)、成本黑盒(月底才知道花了多少)、行为黑盒(出问题无法复盘)。

AI Observe Stack 架构

组件 职责
OpenTelemetry Collector 遥测数据网关,接收 OTel 协议数据
Apache Doris 存储层,VARIANT 类型 + 倒排索引,适配半结构化数据
Grafana + Doris App 插件 可视化层,支持 SQL 查询和预置 Dashboard

核心优势:Traces/Metrics/Logs 三合一、SQL 查询、实时分析、5 分钟部署。

5 分钟部署实践

Step 1:启动 AI Observe Stack

git clone https://github.com/velodb/ai-observe-stack.git
cd ai-observe-stack/docker
docker compose up -d

# 确认服务状态
docker compose ps
# 所有服务 STATUS 为 running,doris 显示 (healthy)

Step 2:对接 AI Agent(以 OpenClaw 为例)

# 安装 OTel 插件
mkdir -p ~/.openclaw/plugins
cd ~/.openclaw/plugins
git clone https://github.com/henrikrexed/openclaw-observability-plugin otel-observability
cd otel-observability && npm install

配置 OpenTelemetry endpoint:

{
  "plugins": {
    "load": { "paths": ["~/.openclaw/plugins/otel-observability"] },
    "entries": {
      "otel-observability": {
        "enabled": true,
        "config": {
          "endpoint": "http://127.0.0.1:4318",
          "protocol": "http",
          "serviceName": "openclaw",
          "traces": true,
          "metrics": true
        }
      }
    }
  }
}

启动日志采集:

docker run -d \
  --name openclaw-log-collector \
  --network docker_aiobs-net \
  -v ~/.openclaw/logs:/openclaw-logs:ro \
  -v ~/.openclaw/agents:/openclaw-agents:ro \
  -v $(pwd)/../examples/openclaw/otel-collector-log-config.yaml:/etc/otelcol-contrib/config.yaml:ro \
  otel/opentelemetry-collector-contrib:0.144.0 \
  --config=/etc/otelcol-contrib/config.yaml

Step 3:打开 Dashboard

Grafana(http://localhost:3000,admin/admin),三个预置 Dashboard 自动加载。

安全审计 Dashboard

四大指标卡片:

指标 检测内容 告警条件
Dangerous Commands rm -rfsudochmod 777curl|sh 数字变红
Prompt Injection ignore previous instructionsyou are nowDAN mode 数字变红
Outbound Actions Agent 主动发邮件、发消息、调外部 API 数字变红
Sensitive File Access .ssh/id_rsa.envcredentials.json 数字变红

风险评分算法:exec×3 + web×2 + outbound×5 + error×1 + sensitive_file×10

SQL 查询示例:

-- 查询所有危险命令
SELECT log_time, session_id, risk_category, command
FROM security_events
WHERE risk_category IN ('DESTRUCTIVE', 'PRIVILEGE_ESCALATION', 'DATA_EXFIL', 'CREDENTIAL_ACCESS')
ORDER BY log_time DESC;

-- 检测 prompt injection
SELECT log_time, injection_type, source_tool, content
FROM security_events
WHERE injection_type IN ('INJECTION_PATTERN', 'ROLE_HIJACK', 'HIDDEN_INSTRUCTION', 'JAILBREAK')
ORDER BY log_time DESC;

成本分析 Dashboard

-- Token 消耗趋势
SELECT log_time, model_name, 
       SUM(input_tokens) AS total_input,
       SUM(output_tokens) AS total_output
FROM llm_metrics
WHERE log_time > NOW() - INTERVAL 1 HOUR
GROUP BY log_time, model_name;

-- 每个问题的成本拆解
SELECT user_question,
       ai_steps,
       total_input,
       total_input * 0.00003 AS estimated_cost_usd
FROM question_costs
ORDER BY total_input DESC LIMIT 20;

关键发现:context window 滚雪球效应——第一轮 3000 tokens,第 19 轮膨胀到几十万 tokens。一个问题成本可能是预期的 100 倍

行为分析 Dashboard

-- 工具调用分布
SELECT tool_name, COUNT(*) AS call_count,
       SUM(CASE WHEN status='ERROR' THEN 1 ELSE 0 END) AS error_count
FROM tool_calls
GROUP BY tool_name
ORDER BY call_count DESC;

-- P95 延迟分析
SELECT operation, 
       AVG(duration_ms) AS avg_ms,
       PERCENTILE_APPROX(duration_ms, 0.95) AS p95_ms
FROM spans
GROUP BY operation;

Trace 追踪

-- 查找慢请求的完整调用链
SELECT trace_id, operation, duration_ms, span_id, parent_span_id
FROM traces
WHERE trace_id = 'abc123'
ORDER BY span_id;

-- Waterfall 视图:openclaw.agent.turn (38.33s)
-- → tool.browser (12s)
-- → tool.web_fetch (8s)
-- → tool.exec (3s)

可复用部署 Checklist

序号 步骤 命令/配置
1 启动 AI Observe Stack docker compose up -d
2 等待 Doris 就绪 docker compose ps(等 ~3 分钟)
3 安装 OTel 插件 git clone ... && npm install
4 配置 OTel endpoint openclaw.json 配置 endpoint:4318
5 启动日志采集 docker run otel-collector
6 重启 Agent openclaw gateway restart
7 打开 Grafana http://localhost:3000
8 验证数据流入 检查 Dashboard 是否有数据

相关阅读

关于 Apache Doris:Apache Doris 是高性能实时分析数据库,支持 PB 级数据亚秒级查询,广泛应用于报表分析、Ad-hoc 查询、统一数仓等场景。SelectDB 是 Apache Doris 的商业化公司,提供企业级支持和云服务。欢迎加入 Doris 社区 交流更多实践。

Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐