Grafana集成 #
一、Grafana概述 #
1.1 什么是Grafana #
text
Grafana定义:
┌─────────────────────────────────────────────┐
│ Grafana │
├─────────────────────────────────────────────┤
│ • 开源的数据可视化平台 │
│ • 支持多种数据源 │
│ • 丰富的可视化组件 │
│ • 告警和通知功能 │
│ • 仪表盘共享 │
└─────────────────────────────────────────────┘
核心功能:
├── 数据可视化
├── 仪表盘管理
├── 告警配置
├── 用户管理
└── 插件扩展
1.2 安装Grafana #
bash
# Docker安装
docker run -d \
--name grafana \
-p 3000:3000 \
-v grafana_data:/var/lib/grafana \
grafana/grafana
# 访问Web界面
# http://localhost:3000
# 默认用户名/密码:admin/admin
二、配置数据源 #
2.1 添加Prometheus数据源 #
text
配置步骤:
1. 登录Grafana
2. 进入 Configuration → Data Sources
3. 点击 Add data source
4. 选择 Prometheus
5. 配置连接信息:
• Name: Prometheus
• URL: http://prometheus:9090
• Access: Server (default)
6. 点击 Save & Test
2.2 数据源配置选项 #
text
数据源配置选项:
┌─────────────────────────────────────────────┐
│ HTTP设置 │
├─────────────────────────────────────────────┤
│ • URL: Prometheus地址 │
│ • Access: 访问方式 │
│ • Auth: 认证方式 │
└─────────────────────────────────────────────┘
┌─────────────────────────────────────────────┐
│ Prometheus设置 │
├─────────────────────────────────────────────┤
│ • Scrape interval: 采集间隔 │
│ • Query timeout: 查询超时 │
│ • HTTP Method: HTTP方法 │
└─────────────────────────────────────────────┘
┌─────────────────────────────────────────────┐
│ 高级设置 │
├─────────────────────────────────────────────┤
│ • Manage alerts via Alertmanager │
│ • Default editor: 默认编辑器 │
└─────────────────────────────────────────────┘
三、创建仪表盘 #
3.1 创建新仪表盘 #
text
创建步骤:
1. 点击 + → Dashboard
2. 选择 Add new panel
3. 配置查询:
• 选择数据源
• 输入PromQL表达式
4. 配置可视化:
• 选择图表类型
• 配置显示选项
5. 保存仪表盘
3.2 面板配置 #
text
面板配置选项:
┌─────────────────────────────────────────────┐
│ 查询配置 │
├─────────────────────────────────────────────┤
│ • PromQL表达式 │
│ • Legend(图例)格式 │
│ • Min step(最小步长) │
│ • Resolution(分辨率) │
└─────────────────────────────────────────────┘
┌─────────────────────────────────────────────┐
│ 可视化配置 │
├─────────────────────────────────────────────┤
│ • 图表类型 │
│ • 标题和描述 │
│ • 坐标轴设置 │
│ • 图例设置 │
│ • 阈值线 │
└─────────────────────────────────────────────┘
┌─────────────────────────────────────────────┐
│ 显示选项 │
├─────────────────────────────────────────────┤
│ • 颜色方案 │
│ • 填充透明度 │
│ • 线条样式 │
│ • 数据格式 │
└─────────────────────────────────────────────┘
3.3 常用查询示例 #
promql
# CPU使用率
100 - (avg by(instance) (irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)
# 内存使用率
(1 - (node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes)) * 100
# 磁盘使用率
(1 - (node_filesystem_avail_bytes{fstype!~"tmpfs|overlay"} / node_filesystem_size_bytes{fstype!~"tmpfs|overlay"})) * 100
# 网络流量
rate(node_network_receive_bytes_total{device!~"lo|veth.*"}[5m])
rate(node_network_transmit_bytes_total{device!~"lo|veth.*"}[5m])
# HTTP请求速率
sum(rate(http_requests_total[5m])) by (service)
# 错误率
sum(rate(http_requests_total{status=~"5.."}[5m])) / sum(rate(http_requests_total[5m])) * 100
# P99延迟
histogram_quantile(0.99, sum by(le) (rate(http_request_duration_seconds_bucket[5m])))
四、变量使用 #
4.1 创建变量 #
text
变量创建步骤:
1. 进入仪表盘设置
2. 选择 Variables
3. 点击 Add variable
4. 配置变量:
• Name: 变量名
• Type: 变量类型
• Query: 查询表达式
5. 保存
4.2 变量类型 #
text
变量类型:
┌─────────────────────────────────────────────┐
│ Query变量 │
├─────────────────────────────────────────────┤
│ • 从数据源查询值 │
│ • 示例:label_values(up, job) │
└─────────────────────────────────────────────┘
┌─────────────────────────────────────────────┐
│ Custom变量 │
├─────────────────────────────────────────────┤
│ • 手动定义值列表 │
│ • 示例:production,staging,development │
└─────────────────────────────────────────────┘
┌─────────────────────────────────────────────┐
│ Constant变量 │
├─────────────────────────────────────────────┤
│ • 固定值 │
│ • 用于模板化 │
└─────────────────────────────────────────────┘
┌─────────────────────────────────────────────┐
│ Text box变量 │
├─────────────────────────────────────────────┤
│ • 用户输入文本 │
│ • 用于过滤 │
└─────────────────────────────────────────────┘
4.3 变量使用 #
promql
# 使用变量过滤
up{job="$job"}
http_requests_total{service="$service", instance=~"$instance"}
# 变量语法
$variable_name # 简单引用
${variable_name} # 带花括号引用
[[variable_name]] # 展开引用
五、导入仪表盘 #
5.1 从Grafana.com导入 #
text
导入步骤:
1. 访问 https://grafana.com/grafana/dashboards
2. 搜索需要的仪表盘
3. 复制仪表盘ID
4. 在Grafana中点击 + → Import
5. 粘贴ID并点击 Load
6. 选择数据源
7. 点击 Import
推荐仪表盘:
• Node Exporter Full: 1860
• Prometheus 2.0 Overview: 3662
• Kubernetes Cluster: 315
5.2 从JSON文件导入 #
bash
# 导出仪表盘JSON
# 在仪表盘设置中选择 JSON Model → Copy to Clipboard
# 导入JSON文件
# 点击 + → Import → Upload JSON file
六、告警配置 #
6.1 配置告警规则 #
text
告警配置步骤:
1. 进入面板编辑
2. 切换到 Alert 标签
3. 点击 Create Alert
4. 配置告警规则:
• Name: 告警名称
• Evaluate every: 评估频率
• Conditions: 告警条件
5. 配置通知渠道
6. 保存
6.2 通知渠道配置 #
text
通知渠道类型:
├── Email
├── Slack
├── PagerDuty
├── Webhook
├── Telegram
├── DingTalk
└── 企业微信
配置步骤:
1. 进入 Alerting → Notification channels
2. 点击 Add channel
3. 选择类型并配置
4. 测试并发送
七、最佳实践 #
7.1 仪表盘组织 #
text
仪表盘组织建议:
┌─────────────────────────────────────────────┐
│ 层级结构 │
├─────────────────────────────────────────────┤
│ • 文件夹:按环境/团队分类 │
│ • 仪表盘:按服务/功能分类 │
│ • 面板:按指标类型分类 │
└─────────────────────────────────────────────┘
示例:
├── Infrastructure
│ ├── Node Overview
│ ├── Network Overview
│ └── Storage Overview
├── Applications
│ ├── API Overview
│ ├── Database Overview
│ └── Cache Overview
└── Business
├── User Metrics
└── Order Metrics
7.2 查询优化 #
text
查询优化建议:
1. 使用变量减少仪表盘数量
2. 合理设置查询范围
3. 使用Recording Rules预计算
4. 避免高基数标签
5. 使用合适的聚合函数
八、总结 #
Grafana集成要点:
| 功能 | 说明 |
|---|---|
| 数据源 | 配置Prometheus连接 |
| 仪表盘 | 创建可视化面板 |
| 变量 | 动态过滤数据 |
| 告警 | 配置告警规则 |
常用操作:
| 操作 | 路径 |
|---|---|
| 添加数据源 | Configuration → Data Sources |
| 创建仪表盘 | + → Dashboard |
| 导入仪表盘 | + → Import |
| 配置变量 | Dashboard Settings → Variables |
下一步,让我们学习仪表盘设计!
最后更新:2026-03-27