Grafana 是一个开源的数据可视化和监控平台,它能够连接多种数据源,创建丰富的可视化图表,并支持告警功能。本教程将帮助你掌握 Grafana 的核心功能和高级特性。

安装和配置

Docker 安装

使用 Docker 运行 Grafana 是最简单的方式:

docker run -d \
  --name=grafana \
  -p 3000:3000 \
  grafana/grafana-enterprise

Docker Compose 安装

创建 docker-compose.yml 文件:

version: '3'
services:
  grafana:
    image: grafana/grafana-enterprise
    ports:
      - "3000:3000"
    volumes:
      - grafana-storage:/var/lib/grafana
    environment:
      - GF_SECURITY_ADMIN_PASSWORD=admin
      - GF_USERS_ALLOW_SIGN_UP=false

volumes:
  grafana-storage:

运行命令:

docker-compose up -d

基础配置

初始登录

  1. 访问 http://localhost:3000
  2. 默认用户名:admin
  3. 默认密码:admin
  4. 首次登录会要求修改密码

配置数据源

Grafana 支持多种数据源:

  1. 添加 Prometheus 数据源
    • Configuration > Data Sources > Add data source
    • 选择 Prometheus
    • URL: http://prometheus:9090
    • 点击 “Save & Test”
  2. 添加 InfluxDB 数据源
    • 选择 InfluxDB
    • URL: http://influxdb:8086
    • Database: your_database
    • User & Password(如果需要)

创建仪表板

基础操作

  1. 创建新仪表板
    • 点击 “+” > Dashboard
    • 选择 “Add new panel”
  2. 配置面板
    • 选择数据源
    • 编写查询
    • 设置可视化类型
    • 配置面板选项

查询编辑器

不同数据源的查询示例:

  1. Prometheus 查询
    rate(http_requests_total[5m])
    
  2. InfluxDB 查询
    SELECT mean("value") FROM "cpu" WHERE $timeFilter GROUP BY time($__interval)
    

可视化类型

Grafana 提供多种可视化类型:

  1. 时间序列图
    • 适用于展示趋势数据
    • 支持多种渲染模式
    • 可配置阈值和告警
  2. 仪表盘
    • 显示单个指标
    • 支持阈值颜色
    • 可自定义范围
  3. 状态图
    • 展示系统状态
    • 支持多种颜色映射
    • 可配置阈值
  4. 热力图
    • 展示数据分布
    • 支持自定义颜色
    • 可调整桶大小

高级特性

变量和模板

  1. 定义变量
    name = hostname
    type = query
    query = label_values(node_cpu_seconds_total, instance)
    
  2. 使用变量
    node_memory_used_bytes{instance="$hostname"}
    

告警配置

  1. 创建告警规则
    • 编辑面板
    • Alert 标签页
    • 配置条件和通知
# 告警条件示例
WHEN avg() OF query(A, 5m, now) IS ABOVE 90
  1. 配置通知渠道
    • Alerting > Notification channels
    • 支持 Email、Slack、WebHook 等

仪表板导入/导出

  1. 导出仪表板
    • Dashboard settings
    • JSON Model
    • 复制或下载 JSON
  2. 导入仪表板
    • ”+” > Import
    • 粘贴 JSON 或上传文件
    • 配置变量映射

用户和权限管理

用户管理

  1. 创建用户
    • Server Admin > Users
    • New user
    • 设置权限级别
  2. 角色配置
    • Admin:完全访问权限
    • Editor:可以编辑仪表板
    • Viewer:只能查看

团队管理

  1. 创建团队
    • Configuration > Teams
    • New Team
    • 添加成员
  2. 权限设置
    • 仪表板级别权限
    • 文件夹级别权限
    • 数据源权限

性能优化

查询优化

  1. 使用适当的时间间隔
    rate(http_requests_total[$__interval])
    
  2. 限制时间范围
    • 使用 $__timeFilter
    • 合理设置刷新间隔

缓存配置

  1. 查询缓存
    [caching]
    enabled = true
    ttl = 3600
    
  2. 图像渲染缓存
    [rendering]
    cache_ttl = 3600
    

最佳实践

仪表板组织

  1. 使用文件夹
    • 按应用分组
    • 按团队分组
    • 按环境分组
  2. 命名约定
    • 使用清晰的命名
    • 包含必要的元信息
    • 保持一致性

可视化建议

  1. 配色方案
    • 使用对比色
    • 考虑色盲友好
    • 保持一致性
  2. 布局优化
    • 重要面板置顶
    • 相关面板分组
    • 保持简洁

常见问题解决

1. 连接问题

  • 检查数据源配置
  • 验证网络连接
  • 查看错误日志

2. 查询超时

  • 优化查询语句
  • 调整超时设置
  • 使用缓存

3. 权限问题

  • 检查用户权限
  • 验证数据源访问权限
  • 查看审计日志

总结

Grafana 提供了强大的数据可视化能力:

  1. 支持多种数据源
  2. 丰富的可视化类型
  3. 灵活的配置选项
  4. 完善的权限管理

通过本教程,你应该已经掌握:

  • 基础安装和配置
  • 仪表板创建和管理
  • 高级特性使用
  • 性能优化方法
  • 最佳实践和问题排查

建议从简单的仪表板开始,逐步探索更多高级特性,打造适合你需求的监控可视化平台。