Grafana 可视化:开箱即用的监控面板
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 导入
- 打开 Grafana UI:访问 Grafana 网页界面(默认 http://localhost:3000)
- 导航到 Dashboards:点击左侧菜单的 “Dashboards”
- 点击 Import:在 Dashboards 页面点击 “Import” 按钮
- 上传 JSON 文件:点击 “Upload JSON file”,选择对应的 Dashboard JSON 文件
- 选择数据源:在 “Prometheus” 下拉菜单中选择你的 Prometheus 数据源
- 点击 Import:完成导入
方法二:通过 API 导入
步骤:
- 获取 API Key:在 Grafana UI 中生成 API Key
- 执行导入命令:
# 导入 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 导入
步骤:
- 创建 Provisioning 目录:
mkdir -p /etc/grafana/provisioning/dashboards
- 创建 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
- 重启 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
步骤:
- 打开 Grafana UI:访问 Grafana 网页界面
- 点击 New Dashboard:在 Dashboards 页面点击 “New Dashboard”
- 添加 Panel:点击 “Add new panel”
- 配置查询:在 Query 选项卡中输入 PromQL 查询
- 配置可视化:在 Visualization 选项卡中选择合适的可视化类型
- 保存 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 中没有数据显示
排查步骤:
- 检查 Prometheus 数据源配置
- 验证数据是否到达 Prometheus
- 检查 PromQL 查询是否正确
- 检查时间范围设置
解决方案:
- 修正数据源配置
- 确保 Agent 正常运行
- 修正 PromQL 查询
- 调整时间范围
2. 图表显示异常
症状:图表显示异常或错误
排查步骤:
- 检查 PromQL 查询
- 验证数据格式
- 检查面板配置
- 查看 Grafana 日志
解决方案:
- 修正 PromQL 查询
- 确保数据格式正确
- 调整面板配置
- 检查 Grafana 配置
3. 性能问题
症状:Dashboard 加载缓慢
排查步骤:
- 检查 PromQL 查询性能
- 检查数据量大小
- 检查 Grafana 资源使用
- 检查网络连接
解决方案:
- 优化 PromQL 查询
- 减少时间序列数量
- 增加 Grafana 资源
- 改善网络连接
总结
AI Observability Agent 的 Grafana Dashboard 为用户提供了直观、全面的监控可视化能力:
- 开箱即用:预置的 Dashboard,无需手动配置
- 全面监控:覆盖成本、Token、性能等多个维度
- 灵活定制:支持自定义 Dashboard 和查询
- 性能优化:高效的 PromQL 查询
- 告警集成:支持设置告警规则
通过 Grafana 可视化,用户可以实时掌握 AI 服务的运行状态,及时发现和解决问题,优化 AI 资源的使用。
下一步
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐
所有评论(0)