跳过正文
  1. 数据库老司机/

Claude Code 可观测性怎么做?

·1691 字·4 分钟· ·
冯若航
作者
冯若航
Pigsty 创始人, @Vonng
目录

Claude Code 可观测性怎么做?
#

昨天老冯 发了条推特:「做了个 Claude Code Grafana Dashboard,研究下它是怎么做决策、用工具、 调 API 花钱的。」结果发现非常多的用户都对这个主题感兴趣。

推文截图

这是我没想到的,所以今天就来聊一聊 Claude Code 的可观测性。


Claude 的可观测性
#

老冯的想法其实很简单 —— 我想了解 Claude Code 内部工作细节。虽然 Claude Code 不开源(其实被开源过一次), 但你可以通过它的监控指标和日志,分析出它的大概工作原理。

Grafana监控面板

Claude Code 提供 OTEL 格式的指标和日志,配置起来也很简单。 你只要指定几个环境变量,就可以让它主动推送到支持 OTEL 的监控系统,然后用 Grafana 进行可视化。

# Claude Code OTEL 配置
export CLAUDE_CODE_ENABLE_TELEMETRY=1             # 启用监控
export OTEL_METRICS_EXPORTER=otlp
export OTEL_LOGS_EXPORTER=otlp
export OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf
export OTEL_LOG_USER_PROMPTS=1                    # 如果要隐藏 Prompt,设置为 0
export OTEL_RESOURCE_ATTRIBUTES="job=claude"      # 添加你自己的标签
export OTEL_EXPORTER_OTLP_METRICS_ENDPOINT=http://10.10.10.10:8428/opentelemetry/v1/metrics     # 指标端点,打入 VictoriaMetrics
export OTEL_EXPORTER_OTLP_LOGS_ENDPOINT=http://10.10.10.10:9428/insert/opentelemetry/v1/logs    # 日志端点,打入 VictoriaLogs
export OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE=cumulative

你可以放在 .bash_profile / /etc/profile.d/claude.sh 或者直接写入 ~/.claude/settings.jsonenv 字段。

难点在于:我去哪找这么一个监控系统和 Grafana 呢?后来我看见这么多人都有需求,就干脆做了一个开箱即用的配置模板。


监控系统
#

你只要找一台 Linux 服务器,运行几行命令把它拉起来,就会自带一个 Claude Code 环境,所有东西都帮你配好了(包括监控)。你也可以直接把自己的 Claude Code 监控接进去。

Piglet沙箱文档

实际上,如果你已经会用 Claude Code,并不需要了解太多细节。你只要告诉它有这么个东西、能干这么个事,并给它准备一台虚拟机,剩下的事它都能帮你自动搞定。我看有人评论留言就是这么说的,哈哈!

用户部署反馈

监控事件说明
#

这个监控面板其实很朴素:上方可以选择会话(Session ID),选择之后,下方会列出各种事件。你可以通过拖动时间轴来查看处理任务过程中产生了哪些事件。

目前最主要的事件分为以下四类:

  1. User Prompt:你对它说了什么,或者给了什么提示词
  2. API Request:调用 API 的请求
  3. Tool Decision:系统决定使用什么工具
  4. Tool Result:工具返回的具体结果

每个事件都有对应的字段。大体上,只要看一眼这个面板,就能明白整个任务的处理流程是怎么回事了。

举个例子,最简单的事件就是 User Prompt,你给 Claude Code 发一条消息,就会产生一个该事件:

User Prompt事件

User Prompt 事件之后,通常是 API Request,也就是调用 API 模型。这里会有一个 model 字段——Claude Code 区分了快速模型和高质量模型,这里我用的是 GLM-4.7 作为例子,有些简单快速的请求会由 GLM-4.5-air 来处理。

API Request 事件有几个核心字段:Cost 是开销,然后是四个 Token 指标。Token.In/Out 是输入输出的 Token 数,Token Cache Read 则是缓存命中的指标。

API Request事件

API Request 完成之后,通常会有一个 Tool Decision 事件,即模型决定使用什么工具。比如 Bash、Read、Write、Search 等,然后会有一个 Decision Source/Result,表示根据什么标准(配置文件/询问用户/……)选择「批准」或「拒绝」。

Tool Decision 事件之后是 Tool Result 事件。这是调用工具的关键事件,关键字段包括:Tool 的命令、说明、错误、参数、UserID、成功与否等。

Tool Result事件

其实还有一些其他类型的事件,但最主要的就是上面这四类。更多细节可以参考 Claude Code 的监控文档:https://docs.anthropic.com/en/docs/claude-code/monitoring

沙箱环境
#

当然,老冯也知道「授人以不如授人以」,但光说原理没用,干脆直接把东西做好给你算了。所以我做了一个开箱即用的沙箱环境,里面包含了一套完整的 Victoria 监控系统与 Grafana 监控大盘,随便找台 1C2G 的 Linux 虚拟机几分钟就能装好。

这个沙箱除了监控 Claude Code,还可以干很多有趣的事情。最主要的是,它已经替你配置好了常用的 Web Coding 工具:Claude Code、VS Code、Open Code。里面自带 PostgreSQL 和 Nginx,所以如果你需要一个云服务器开发环境,也可以试试。

VS Code Vibe界面

你也可以在这里直接使用不用翻墙的 GLM 模型,多配置一行参数就好了。关于 Claude Code 最美妙的就是:既然你都已经用它了,那大概也不需要操心这些细节是怎么弄的,直接动嘴让它自己去 Vibe 就好了

# 切换为其他模型,比如 GLM 4.7
claude_env:
  ANTHROPIC_BASE_URL: https://open.bigmodel.cn/api/anthropic
  ANTHROPIC_API_URL: https://open.bigmodel.cn/api/anthropic
  ANTHROPIC_AUTH_TOKEN: your_api_service_token # 填入你的 KEY!
  ANTHROPIC_MODEL: glm-4.7
  ANTHROPIC_SMALL_FAST_MODEL: glm-4.5-air

PIGLET.RUN 的另一个妙处就在于,只要提供好高度确定性的基础设施,它已经能完成很多工作了。 扮演一个中级 DBA / 开发者的角色,直接用它来写代码、调试、测试、部署,效率会非常高。 这一点老冯会在后面专门写一篇 DBA Agent 相关的介绍文章。

数据库需求金字塔

相关文章

AI Agent 的操作系统时刻

·7008 字·14 分钟
我们正在见证一个"AI 操作系统"的诞生。LLM 是新 CPU,Context 是新内存,Agent 是新应用。那么 OS 会是什么? 理解这个类比,也许能帮助我们预测未来 2-3 年基础设施的演化路径 —— 以及找到真正的机会所在。