OpenClaw Agent 可观测性完全指南

让每个Agent的每一步行动都有迹可循 — 链路追踪、指标采集、异常告警

凌晨2点43分,你的Agent突然开始疯狂调用API,token消耗像脱缰野马。你醒来发现账单已经炸了——这就是没有可观测性的下场。Agent不是黑盒,它需要像微服务一样被监控、追踪、告警。

为什么Agent需要可观测性?

传统软件有APM(应用性能监控),Agent也需要类似能力。但Agent的特殊性在于:

🔑 核心概念:可观测性三支柱 — Traces(链路追踪)、Metrics(指标采集)、Logs(日志记录)。OpenClaw三件套全覆盖。

OpenClaw 遥测架构

Agent Session
    │
    ├─── Trace (链路追踪)
    │    ├─ Span: task_received
    │    ├─ Span: llm_call (model=gpt-4o, tokens=1.2k)
    │    ├─ Span: tool_call [web_search] (duration=2.3s)
    │    ├─ Span: tool_call [exec] (duration=0.8s)
    │    └─ Span: response_sent
    │
    ├─── Metrics (指标)
    │    ├─ token_count_total{model="gpt-4o"} += 1200
    │    ├─ tool_call_duration_seconds{tool="web_search"} = 2.3
    │    ├─ agent_session_duration_seconds = 12.7
    │    └─ error_rate{type="timeout"} += 1
    │
    └─── Logs (日志)
         ├─ [INFO] Session started: abc-123
         ├─ [DEBUG] Tool call: web_search("OpenClaw tutorial")
         ├─ [WARN] Rate limit hit, retrying in 5s
         └─ [ERROR] Tool execution failed: timeout

配置 OpenTelemetry 集成

1. 安装遥测组件

# OpenClaw原生支持OpenTelemetry
# 配置 .env 或环境变量

# 启用遥测
OPENCLAW_TELEMETRY_ENABLED=true

# OTLP导出端点(支持Jaeger/Zipkin/Grafana Tempo等)
OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317
OTEL_EXPORTER_OTLP_PROTOCOL=grpc

# 服务名称
OTEL_SERVICE_NAME=openclaw-agent

# 采样率(生产环境建议0.1,开发环境1.0)
OTEL_TRACES_SAMPLER=parentbased_traceidratio
OTEL_TRACES_SAMPLER_ARG=0.1

2. 配置指标导出

# Prometheus指标端点
OPENCLAW_METRICS_ENABLED=true
OPENCLAW_METRICS_PORT=9090
OPENCLAW_METRICS_PATH=/metrics

# 自定义指标标签
OPENCLAW_METRICS_LABELS=agent_name,environment,team

3. 配置日志输出

# 结构化日志(JSON格式,方便ELK/Grafana Loki采集)
OPENCLAW_LOG_FORMAT=json
OPENCLAW_LOG_LEVEL=info

# 日志输出到文件
OPENCLAW_LOG_FILE=/var/log/openclaw/agent.log

# 日志轮转
OPENCLAW_LOG_MAX_SIZE=100MB
OPENCLAW_LOG_MAX_FILES=10

关键监控指标

Token消耗指标

# 每个模型的token消耗
openclaw_token_input_total{model="gpt-4o",agent="miaoquai"}
openclaw_token_output_total{model="gpt-4o",agent="miaoquai"}

# 按会话统计
openclaw_session_token_total{session_id="abc-123"}

# 预估成本
openclaw_estimated_cost_dollars{model="gpt-4o",agent="miaoquai"}

工具调用指标

# 工具调用次数和延迟
openclaw_tool_call_total{tool="web_search",status="success"}
openclaw_tool_call_duration_seconds{tool="web_search",quantile="0.99"}

# 工具调用错误率
openclaw_tool_call_errors_total{tool="web_search",error_type="timeout"}

Agent行为指标

# 会话活跃数
openclaw_active_sessions{agent="miaoquai"}

# 任务完成率
openclaw_task_completed_total{agent="miaoquai",status="success"}
openclaw_task_completed_total{agent="miaoquai",status="failed"}

# 子Agent生成数
openclaw_subagent_spawned_total{parent_agent="miaoquai"}

链路追踪实战

查看Agent执行链路

# 在Jaeger/Grafana Tempo中查看
# 搜索条件:service=openclaw-agent

# 典型链路结构:
# Root Span: agent.session (12.7s)
#   ├─ llm.inference (3.2s) - 模型推理
#   │   └─ prompt: "搜索最新AI新闻"
#   ├─ tool.web_search (2.3s) - 网络搜索
#   ├─ llm.inference (4.1s) - 处理搜索结果
#   ├─ tool.write_file (0.5s) - 写入日报
#   └─ message.send (0.3s) - 发送通知

跨Agent追踪

# A2A协议自动传播Trace Context
# 父Agent发出请求时携带 traceparent header

# Parent Agent:
# traceparent: 00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01

# Child Agent接收后继续同一trace
# 方便追踪完整的跨Agent任务链

Grafana 仪表盘

# 推荐Grafana仪表盘配置
# 导入OpenClaw官方仪表盘模板
openclaw dashboard import grafana

# 核心面板:
# 1. Token消耗趋势图(按模型、按Agent)
# 2. 工具调用延迟P50/P95/P99
# 3. 错误率热力图
# 4. 活跃会话数
# 5. 每日成本估算
# 6. Agent任务完成率
📊 监控告警建议:设置以下告警阈值:
- Token消耗 > 预算80% → 告警
- 工具调用P99延迟 > 30s → 告警
- 错误率 > 10% → 告警
- 同一Agent连续失败3次 → 自动暂停

日志查询示例

# 使用Grafana Loki查询Agent行为

# 查找特定Agent的所有错误
{service="openclaw-agent", agent="miaoquai"} |= "ERROR"

# 查找工具调用失败
{service="openclaw-agent"} |~ "tool_call.*failed"

# 查找高token消耗的会话
{service="openclaw-agent"} |~ "token_count.*[5-9][0-9]{3,}"

# 查找特定时间范围的操作
{service="openclaw-agent"} >= "2026-04-25T00:00:00Z"
  <= "2026-04-25T06:00:00Z"

自愈Agent与可观测性

可观测性的终极目标不是"看",而是"自动修"。结合OpenClaw的自愈Agent设计:

# 基于遥测数据的自动修复策略
healing_rules:
  - name: "rate_limit_recovery"
    condition: "error_rate > 5% AND error_type == 'rate_limit'"
    action: "reduce_concurrency"
    params:
      max_concurrent: 3
      
  - name: "cost_overrun"
    condition: "daily_cost > budget * 0.8"
    action: "switch_model"
    params:
      from: "gpt-4o"
      to: "deepseek/deepseek-chat"
      
  - name: "tool_timeout"
    condition: "p99_latency > 30s"
    action: "add_retry_policy"
    params:
      max_retries: 3
      backoff: "exponential"

常见问题

Q: 遥测会额外消耗token吗?

不会。遥测数据由OpenClaw框架层采集,不影响LLM调用。但存储遥测数据需要磁盘空间和数据库资源,建议设置数据保留策略(如trace保留7天,metrics保留30天)。

Q: 开发环境需要完整的可观测性栈吗?

不需要。开发环境只需OPENCLAW_TELEMETRY_ENABLED=true + OPENCLAW_LOG_LEVEL=debug,用文件日志就够了。生产环境再上Jaeger + Prometheus + Grafana全家桶。

Q: 敏感信息会被遥测采集吗?

OpenClaw默认不采集prompt和response内容到trace中。如果你需要(比如调试),可以开启OPENCLAW_TRACE_CONTENT=true,但务必在生产环境关闭——用户数据不应该出现在trace里。

相关教程