Apache Doris 实战:AI Observe Stack 搭建 AI Agent 可观测性系统
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 -rf、sudo、chmod 777、curl|sh |
数字变红 |
| Prompt Injection | ignore previous instructions、you are now、DAN mode |
数字变红 |
| Outbound Actions | Agent 主动发邮件、发消息、调外部 API | 数字变红 |
| Sensitive File Access | .ssh/id_rsa、.env、credentials.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 社区 交流更多实践。
更多推荐


所有评论(0)