VIBE 监控

VIBE 模块的监控集成说明,包括 Claude Code 可观测性、Dashboard 使用等。

VIBE 模块提供了完整的可观测性支持,特别是 Claude Code 的 OpenTelemetry 集成,可以通过 Grafana Dashboard 监控 AI 编程助手的使用情况。


监控架构

Claude Code CLI
    │
    ├── OpenTelemetry Metrics ──► VictoriaMetrics (8428)
    └── OpenTelemetry Logs    ──► VictoriaLogs    (9428)
                                       │
                                       ▼
                               Grafana Dashboard
                               (Claude Code Dashboard)

Claude Code 可观测性

OpenTelemetry 配置

Claude Code 默认集成了 OpenTelemetry,自动将指标和日志推送到本地的 VictoriaMetrics/VictoriaLogs:

配置文件 ~/.claude/settings.json

{
  "otelEndpointMetrics": "http://127.0.0.1:8428/opentelemetry/v1/metrics",
  "otelEndpointLogs": "http://127.0.0.1:9428/insert/opentelemetry/v1/logs",
  "otelResourceAttributes": {
    "ip": "10.10.10.10",
    "job": "claude"
  }
}

监控指标

Claude Code 上报的主要指标包括:

指标类型说明
会话指标会话数量、持续时间
Token 指标输入/输出 Token 数量、成本统计
API 调用API 请求次数、延迟、错误率
工具使用各类工具(Read、Write、Bash 等)调用次数

日志数据

Claude Code 的日志包含:

  • 会话开始/结束事件
  • 用户提示和助手响应
  • 工具调用详情
  • 错误和警告信息

Grafana Dashboard

访问 Dashboard

Claude Code Dashboard 可以通过以下方式访问:

https://<ip>:3000/d/claude-code

使用 Grafana 凭证登录(默认:admin / pigsty)。

Dashboard 功能

面板说明
会话概览活跃会话数、总会话数
Token 使用输入/输出 Token 趋势、成本分析
API 性能请求延迟、错误率
工具使用统计各工具调用频次、耗时分布
会话日志详细的会话记录和对话内容

系统服务监控

使用 systemd 监控

# 查看 Code-Server 状态
systemctl status code-server

# 查看 JupyterLab 状态
systemctl status jupyter

# 查看服务日志
journalctl -u code-server -f
journalctl -u jupyter -f

端口检查

# 检查 Code-Server 端口(8443)
ss -tlnp | grep 8443

# 检查 JupyterLab 端口(8888)
ss -tlnp | grep 8888

# 使用 curl 检查服务
curl -s -o /dev/null -w "%{http_code}" http://127.0.0.1:8443
curl -s -o /dev/null -w "%{http_code}" http://127.0.0.1:8888

健康检查

自动化健康检查脚本

#!/bin/bash
# vibe-health-check.sh

echo "=== VIBE 服务健康检查 ==="

# Code-Server
if systemctl is-active --quiet code-server; then
    echo "[OK] Code-Server: 运行中"
else
    echo "[ERROR] Code-Server: 未运行"
fi

# JupyterLab
if systemctl is-active --quiet jupyter; then
    echo "[OK] JupyterLab: 运行中"
else
    echo "[ERROR] JupyterLab: 未运行"
fi

# 端口检查
if ss -tlnp | grep -q ":8443 "; then
    echo "[OK] Code-Server 端口 8443: 监听中"
else
    echo "[ERROR] Code-Server 端口 8443: 未监听"
fi

if ss -tlnp | grep -q ":8888 "; then
    echo "[OK] JupyterLab 端口 8888: 监听中"
else
    echo "[ERROR] JupyterLab 端口 8888: 未监听"
fi

使用 curl 进行端点检查

# 检查 Code-Server
curl -s -o /dev/null -w "%{http_code}\n" \
    --connect-timeout 5 \
    http://127.0.0.1:8443/healthz

# 检查 JupyterLab
curl -s -o /dev/null -w "%{http_code}\n" \
    --connect-timeout 5 \
    http://127.0.0.1:8888/api/status

告警配置

服务停止告警

可以在 Alertmanager 中配置 VIBE 服务告警:

# 示例:Code-Server 停止告警
- alert: CodeServerDown
  expr: up{job="code-server"} == 0
  for: 5m
  labels:
    severity: warning
  annotations:
    summary: "Code-Server 服务停止"
    description: "Code-Server 在 {{ $labels.instance }} 上已停止超过 5 分钟"

# 示例:JupyterLab 停止告警
- alert: JupyterLabDown
  expr: up{job="jupyter"} == 0
  for: 5m
  labels:
    severity: warning
  annotations:
    summary: "JupyterLab 服务停止"
    description: "JupyterLab 在 {{ $labels.instance }} 上已停止超过 5 分钟"

日志管理

日志位置

组件日志位置
Code-Serverjournalctl -u code-server
JupyterLabjournalctl -u jupyter
Claude CodeVictoriaLogs / ~/.claude/logs/

日志查询

使用 journalctl

# 查看最近日志
journalctl -u code-server -n 100

# 查看特定时间范围
journalctl -u code-server --since "2024-01-01" --until "2024-01-02"

# 实时跟踪
journalctl -u code-server -f

使用 VictoriaLogs 查询 Claude 日志

# 通过 Grafana Explore 面板查询
# 或使用 vlogs API
curl -G 'http://localhost:9428/select/logsql/query' \
    --data-urlencode 'query={job="claude"}'

资源监控

查看资源使用

# 查看 Code-Server 资源使用
systemctl status code-server
ps aux | grep code-server

# 查看 JupyterLab 资源使用
systemctl status jupyter
ps aux | grep jupyter

# 查看内存使用
free -h

# 查看磁盘使用
df -h /data
df -h /fs

JuiceFS 存储监控

如果使用 JuiceFS 作为工作目录:

# 查看 JuiceFS 状态
juicefs status /fs

# 查看文件系统使用情况
df -h /fs

# 查看文件统计
juicefs info /fs

性能调优

Code-Server 性能优化

# 增加文件句柄限制(已在 systemd 服务中配置)
# /etc/systemd/system/code-server.service
LimitNOFILE=65535

JupyterLab 性能优化

# /data/jupyter/jupyter_config.py

# 增加最大缓冲区大小
c.ServerApp.max_buffer_size = 1073741824  # 1GB

# 配置超时时间
c.ServerApp.shutdown_no_activity_timeout = 0  # 禁用自动关闭

最后修改 2026-01-25: batch doc update (9667d27)