Grafana 可视化:开箱即用的监控面板

深入了解 AI Observability Agent 的 Grafana Dashboard,实现 AI 监控数据的可视化

预置 Dashboard 介绍

AI Observability Agent 提供了预置的 Grafana Dashboard,开箱即用,无需手动配置。

1. AI Observability Dashboard

文件dashboards/ai-observability.json

功能:全面监控 AI 服务的成本、Token 使用、请求延迟等指标。

包含面板

  • 每日成本统计:显示每日 AI API 成本
  • 最近一小时请求数:显示最近一小时的请求量
  • 按模型的每小时成本趋势:展示各模型的成本变化
  • 按模型的 Token 使用趋势:展示输入/输出 Token 使用情况
  • 请求延迟分布:P95/P99 延迟统计
  • 成本分布饼图:按模型/提供商的成本分布
  • 按提供商的请求分布:各 AI 提供商的请求占比

2. Claude Code Dashboard

文件dashboards/claude-code-dashboard.json

功能:专门监控 Claude Code 的开发效率和使用情况。

包含面板

  • 24小时会话数:显示最近 24 小时的会话数量
  • Claude Code 成本:显示 Claude Code 的使用成本
  • Token 使用量:输入/输出 Token 的使用趋势
  • 按模型的成本趋势:各模型的成本变化
  • 生成的代码行数:Claude Code 生成的代码量
  • PR 统计:Pull Request 数量统计

导入方法

方法一:通过 UI 导入

  1. 打开 Grafana UI:访问 Grafana 网页界面(默认 http://localhost:3000)
  2. 导航到 Dashboards:点击左侧菜单的 “Dashboards”
  3. 点击 Import:在 Dashboards 页面点击 “Import” 按钮
  4. 上传 JSON 文件:点击 “Upload JSON file”,选择对应的 Dashboard JSON 文件
  5. 选择数据源:在 “Prometheus” 下拉菜单中选择你的 Prometheus 数据源
  6. 点击 Import:完成导入

方法二:通过 API 导入

步骤

  1. 获取 API Key:在 Grafana UI 中生成 API Key
  2. 执行导入命令
# 导入 AI Observability Dashboard
curl -X POST http://grafana:3000/api/dashboards/db \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d @dashboards/ai-observability.json

# 导入 Claude Code Dashboard
curl -X POST http://grafana:3000/api/dashboards/db \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d @dashboards/claude-code-dashboard.json

方法三:通过 Provisioning 导入

步骤

  1. 创建 Provisioning 目录
mkdir -p /etc/grafana/provisioning/dashboards
  1. 创建 Dashboard 配置文件
# /etc/grafana/provisioning/dashboards/dashboards.yml
apiVersion: 1

providers:
  - name: 'AI Observability'
    orgId: 1
    folder: ''
    type: file
    disableDeletion: false
    updateIntervalSeconds: 10
    options:
      path: /path/to/prom-agent/dashboards
  1. 重启 Grafana
sudo systemctl restart grafana-server

面板详解

1. AI Observability Dashboard 面板

每日成本统计

功能:显示每日 AI API 成本
查询

sum by (date) (rate(ai_cost_usd_total[1d]))

可视化:时间序列图,显示成本趋势

最近一小时请求数

功能:显示最近一小时的请求量
查询

rate(ai_requests_total[5m])

可视化:仪表盘,显示当前请求速率

按模型的每小时成本趋势

功能:展示各模型的成本变化
查询

sum by (model, date) (rate(ai_cost_usd_total[1h]))

可视化:时间序列图,按模型分组

按模型的 Token 使用趋势

功能:展示输入/输出 Token 使用情况
查询

sum by (model) (rate(ai_tokens_input_total[1h]))
sum by (model) (rate(ai_tokens_output_total[1h]))

可视化:时间序列图,显示输入和输出 Token

请求延迟分布

功能:P95/P99 延迟统计
查询

histogram_quantile(0.95, sum by (le) (rate(ai_request_latency_seconds_bucket[5m]))
histogram_quantile(0.99, sum by (le) (rate(ai_request_latency_seconds_bucket[5m]))

可视化:时间序列图,显示 P95 和 P99 延迟

成本分布饼图

功能:按模型/提供商的成本分布
查询

sum by (model) (ai_cost_usd_total)

可视化:饼图,显示各模型的成本占比

按提供商的请求分布

功能:各 AI 提供商的请求占比
查询

sum by (provider) (ai_requests_total)

可视化:饼图,显示各提供商的请求占比

2. Claude Code Dashboard 面板

24小时会话数

功能:显示最近 24 小时的会话数量
查询

rate(ai_claude_code_session_count_total[1h])

可视化:时间序列图,显示会话数量趋势

Claude Code 成本

功能:显示 Claude Code 的使用成本
查询

sum by (date) (rate(ai_claude_code_cost_usage_USD_total[1d]))

可视化:时间序列图,显示成本趋势

Token 使用量

功能:输入/输出 Token 的使用趋势
查询

sum by (type) (rate(ai_claude_code_token_usage_tokens_total[1h]))

可视化:时间序列图,显示 Token 使用趋势

按模型的成本趋势

功能:各模型的成本变化
查询

sum by (model) (rate(ai_claude_code_cost_usage_USD_total[1h]))

可视化:时间序列图,按模型分组

生成的代码行数

功能:Claude Code 生成的代码量
查询

rate(ai_claude_code_lines_of_code_count_total[1h])

可视化:时间序列图,显示代码行数趋势

PR 统计

功能:Pull Request 数量统计
查询

rate(ai_claude_code_pull_requests_total[1h])

可视化:时间序列图,显示 PR 数量趋势

自定义 Dashboard

1. 创建新 Dashboard

步骤

  1. 打开 Grafana UI:访问 Grafana 网页界面
  2. 点击 New Dashboard:在 Dashboards 页面点击 “New Dashboard”
  3. 添加 Panel:点击 “Add new panel”
  4. 配置查询:在 Query 选项卡中输入 PromQL 查询
  5. 配置可视化:在 Visualization 选项卡中选择合适的可视化类型
  6. 保存 Dashboard:点击 “Save” 按钮保存

2. 常用查询示例

成本相关

# 总成本
sum(ai_cost_usd_total)

# 按模型分组的成本
sum by (model) (ai_cost_usd_total)

# 按提供商分组的成本
sum by (provider) (ai_cost_usd_total)

# 每小时成本趋势
sum by (date) (rate(ai_cost_usd_total[1h]))

# 每日成本趋势
sum by (date) (rate(ai_cost_usd_total[1d]))

Token 相关

# 总 Token 使用量
sum(ai_tokens_input_total + ai_tokens_output_total)

# 输入/输出 Token 比例
sum(ai_tokens_output_total) / sum(ai_tokens_input_total)

# 按模型分组的 Token 使用量
sum by (model) (ai_tokens_input_total + ai_tokens_output_total)

# Token 使用趋势
sum by (model) (rate(ai_tokens_input_total[5m]))
sum by (model) (rate(ai_tokens_output_total[5m]))

请求相关

# 总请求数
sum(ai_requests_total)

# 按模型分组的请求数
sum by (model) (ai_requests_total)

# 请求速率
rate(ai_requests_total[5m])

# 错误率
sum(rate(ai_errors_total[5m])) / sum(rate(ai_requests_total[5m]))

延迟相关

# 平均延迟
sum(rate(ai_request_latency_seconds_sum[5m])) / sum(rate(ai_request_latency_seconds_count[5m]))

# P50 延迟
histogram_quantile(0.5, sum by (le) (rate(ai_request_latency_seconds_bucket[5m]))

# P95 延迟
histogram_quantile(0.95, sum by (le) (rate(ai_request_latency_seconds_bucket[5m]))

# P99 延迟
histogram_quantile(0.99, sum by (le) (rate(ai_request_latency_seconds_bucket[5m]))

系统相关

# CPU 使用率
sum by (mode) (rate(node_cpu_seconds_total[5m])) * 100

# 内存使用率
(node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes) / node_memory_MemTotal_bytes * 100

# 磁盘使用率
(node_filesystem_size_bytes - node_filesystem_avail_bytes) / node_filesystem_size_bytes * 100

# 网络流量
sum by (device) (rate(node_network_receive_bytes_total[5m]))
sum by (device) (rate(node_network_transmit_bytes_total[5m]))

3. 面板配置技巧

时间范围

  • 选择合适的时间范围,如 1h, 6h, 12h, 1d, 7d
  • 使用相对时间范围,如 “Last 24 hours”

显示选项

  • 调整图表大小和布局
  • 配置图例显示
  • 设置合适的单位
  • 配置阈值和警报

变量

  • 创建模型、提供商等变量
  • 使用变量实现动态查询
  • 配置变量的默认值和选项

警报

  • 为关键指标设置警报
  • 配置警报阈值和通知方式
  • 测试警报规则

PromQL 查询示例

1. 成本分析

每日成本趋势

sum by (date) (rate(ai_cost_usd_total[1d]))

成本最高的模型

topk(5, sum by (model) (ai_cost_usd_total))

成本预测

predict_linear(ai_cost_usd_total[7d], 86400)

2. Token 分析

Token 效率

sum(ai_tokens_output_total) / sum(ai_tokens_input_total)

每请求平均 Token

sum(ai_tokens_input_total + ai_tokens_output_total) / sum(ai_requests_total)

Token 使用趋势

sum by (type) (rate(ai_tokens_total[1h]))

3. 性能分析

请求延迟分布

histogram_quantile(0.5, sum by (le) (rate(ai_request_latency_seconds_bucket[5m]))
histogram_quantile(0.95, sum by (le) (rate(ai_request_latency_seconds_bucket[5m]))
histogram_quantile(0.99, sum by (le) (rate(ai_request_latency_seconds_bucket[5m]))

错误率趋势

sum(rate(ai_errors_total[5m])) / sum(rate(ai_requests_total[5m])) * 100

请求速率

sum by (model) (rate(ai_requests_total[5m]))

4. 系统监控

Agent 健康状态

agent_uptime_seconds

采集器状态

sum by (collector) (agent_collector_enabled)

Remote Write 状态

rate(agent_remote_write_requests_total[5m])
rate(agent_remote_write_errors_total[5m])

最佳实践

1. Dashboard 设计最佳实践

布局

  • 按功能分组面板
  • 重要指标放在顶部
  • 相关指标放在一起
  • 合理安排面板大小

命名

  • 使用清晰的面板标题
  • 为 Dashboard 选择有意义的名称
  • 使用一致的命名规范

组织

  • 使用文件夹组织 Dashboard
  • 为 Dashboard 添加标签
  • 定期清理不需要的 Dashboard

2. 查询优化

性能优化

  • 使用合适的时间范围
  • 避免使用 sum() 等聚合函数处理大量时间序列
  • 使用 rate() 函数处理计数器
  • 避免使用 * 操作符处理大量时间序列

可读性

  • 使用注释说明复杂查询
  • 分解复杂查询为多个简单查询
  • 使用变量使查询更灵活

3. 告警最佳实践

告警设置

  • 为关键指标设置告警
  • 设置合理的阈值
  • 配置适当的通知渠道
  • 测试告警规则

告警级别

  • info:信息性告警,无需立即处理
  • warning:警告性告警,需要关注
  • critical:严重告警,需要立即处理

告警策略

  • 避免告警风暴
  • 设置合理的告警间隔
  • 配置告警升级机制
  • 定期审查告警规则

故障排查

1. 数据不显示

症状:Dashboard 中没有数据显示

排查步骤

  1. 检查 Prometheus 数据源配置
  2. 验证数据是否到达 Prometheus
  3. 检查 PromQL 查询是否正确
  4. 检查时间范围设置

解决方案

  • 修正数据源配置
  • 确保 Agent 正常运行
  • 修正 PromQL 查询
  • 调整时间范围

2. 图表显示异常

症状:图表显示异常或错误

排查步骤

  1. 检查 PromQL 查询
  2. 验证数据格式
  3. 检查面板配置
  4. 查看 Grafana 日志

解决方案

  • 修正 PromQL 查询
  • 确保数据格式正确
  • 调整面板配置
  • 检查 Grafana 配置

3. 性能问题

症状:Dashboard 加载缓慢

排查步骤

  1. 检查 PromQL 查询性能
  2. 检查数据量大小
  3. 检查 Grafana 资源使用
  4. 检查网络连接

解决方案

  • 优化 PromQL 查询
  • 减少时间序列数量
  • 增加 Grafana 资源
  • 改善网络连接

总结

AI Observability Agent 的 Grafana Dashboard 为用户提供了直观、全面的监控可视化能力:

  1. 开箱即用:预置的 Dashboard,无需手动配置
  2. 全面监控:覆盖成本、Token、性能等多个维度
  3. 灵活定制:支持自定义 Dashboard 和查询
  4. 性能优化:高效的 PromQL 查询
  5. 告警集成:支持设置告警规则

通过 Grafana 可视化,用户可以实时掌握 AI 服务的运行状态,及时发现和解决问题,优化 AI 资源的使用。

下一步

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐