用途
grafana-dashboards 技能用于设计有效的 Grafana 仪表盘,对应用程序、基础设施和业务指标进行监控。当需要可视化 Prometheus 指标、创建自定义仪表盘、实现 SLO 仪表盘、监控基础设施或追踪业务 KPI 时,可使用本技能。
本技能不适用于与 Grafana 仪表盘无关的任务,或需要超出此范围的其它领域或工具的场景。
主要能力
仪表盘设计原则
1. 信息层级
- 顶部:关键指标(大数字)
- 中部:关键趋势(时序图)
- 底部:详细指标(表格/热力图)
2. RED 方法(用于服务)
- Rate:每秒请求数
- Errors:错误率
- Duration:延迟/响应时间
3. USE 方法(用于资源)
- Utilization:资源忙碌时间百分比
- Saturation:队列长度/等待时间
- Errors:错误计数
面板类型
技能提供以下面板类型的配置示例:
- Stat 面板(单值):展示单值统计,支持阈值颜色分级
- Time Series 图:展示时序趋势,如 CPU 使用率
- Table 面板:展示服务状态等表格数据,支持数据转换(重命名、排除字段)
- Heatmap 热力图:展示延迟分布
变量
支持查询变量(Query Variables),可从数据源获取标签值并用于查询过滤。示例包括 namespace 和 service 变量,并支持多选。变量可在查询中以 $namespace、$service 形式引用。
仪表盘内告警
支持在仪表盘中配置告警,包括条件、评估方式、持续时间(for)、频率(frequency)、消息内容、无数据状态以及通知渠道。
仪表盘 Provisioning
通过 dashboards.yml 配置文件实现仪表盘自动加载,可配置 provider 名称、文件夹、更新间隔、是否允许界面更新以及仪表盘文件路径。
常见仪表盘模式
- 基础设施仪表盘:CPU 利用率、内存使用、磁盘 I/O、网络流量、Pod 数量、节点状态
- 数据库仪表盘:每秒查询数、连接池使用、查询延迟(P50/P95/P99)、活跃连接、数据库大小、复制延迟、慢查询
- 应用仪表盘:请求速率、错误率、响应时间百分位、活跃用户/会话、缓存命中率、队列长度
Dashboard as Code
提供 Terraform 与 Ansible 的部署示例:
Terraform:
resource "grafana_dashboard" "api_monitoring" {
config_json = file("${path.module}/dashboards/api-monitoring.json")
folder = grafana_folder.monitoring.id
}
resource "grafana_folder" "monitoring" {
title = "Production Monitoring"
}
Ansible:
- name: Deploy Grafana dashboards
copy:
src: "{{ item }}"
dest: /etc/grafana/dashboards/
with_fileglob:
- "dashboards/*.json"
notify: restart grafana
使用方式
- 明确目标、约束和所需输入。
- 应用相关最佳实践并验证结果。
- 提供可操作步骤和验证方法。
- 如需详细示例,打开 resources/implementation-playbook.md。
最佳实践
- 从模板(Grafana 社区仪表盘)开始
- 对面板和变量使用一致的命名
- 将相关指标分组到行中
- 设置合适的时间范围(默认:最近 6 小时)
- 使用变量提升灵活性
- 添加面板描述以提供上下文
- 正确配置单位
- 设置有意义的阈值颜色
- 在不同仪表盘间使用一致的颜色
- 在不同时间范围下测试
参考文件
- assets/api-dashboard.json - API 监控仪表盘
- assets/infrastructure-dashboard.json - 基础设施仪表盘
- assets/database-dashboard.json - 数据库监控仪表盘
- references/dashboard-design.md - 仪表盘设计指南
相关技能
- prometheus-configuration - 用于指标采集
- slo-implementation - 用于 SLO 仪表盘