Grafana 实战:构建可切换主机的监控仪表盘
本实践将带你完成一个完整的监控系统搭建流程,涵盖 部署监控组件、配置数据源、创建动态仪表盘,最终实现一个支持通过下拉菜单切换主机的 CPU、内存、磁盘监控大屏。
一、环境准备
- 一台 Linux 主机(物理机或虚拟机)
- Docker(可选,用于运行 Prometheus 和 Grafana)
- 网络通畅,可访问
localhost:9090,localhost:3000
二、步骤 1:部署 node_exporter(采集主机指标)
node_exporter 是 Prometheus 官方提供的 主机指标采集器,用于暴露 CPU、内存、磁盘、网络等系统指标。
2.1 下载并运行 node_exporter
# 下载(以 Linux amd64 为例)
wget https://github.com/prometheus/node_exporter/releases/download/v1.7.0/node_exporter-1.7.0.linux-amd64.tar.gz
tar xvfz node_exporter-1.7.0.linux-amd64.tar.gz
cd node_exporter-1.7.0.linux-amd64
# 后台运行
./node_exporter > node_exporter.log 2>&1 &
2.2 验证指标暴露
访问 http://localhost:9100/metrics,你应该看到类似:
# HELP node_cpu_seconds_total Seconds the CPUs spent in each mode.
# TYPE node_cpu_seconds_total counter
node_cpu_seconds_total{cpu="0",mode="idle"} 123456
...
✅ 表示 node_exporter 正常运行。
三、步骤 2:部署 Prometheus(抓取指标)
3.1 创建 prometheus.yml 配置文件
# prometheus.yml
global:
scrape_interval: 15s
evaluation_interval: 15s
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
- job_name: 'node'
static_configs:
- targets: ['localhost:9100']
3.2 运行 Prometheus
# 下载 Prometheus
wget https://github.com/prometheus/prometheus/releases/download/v2.50.0/prometheus-2.50.0.linux-amd64.tar.gz
tar xvfz prometheus-2.50.0.linux-amd64.tar.gz
cd prometheus-2.50.0.linux-amd64
# 将 prometheus.yml 放入当前目录
cp /path/to/your/prometheus.yml .
# 启动
./prometheus --config.file=prometheus.yml > prometheus.log 2>&1 &
3.3 验证 Prometheus
访问 http://localhost:9090,进入 Prometheus Web UI:
- 点击 Status → Targets,确认
node任务状态为UP - 在 Graph 中执行查询:
up{job="node"},应返回1
✅ 表示 Prometheus 成功抓取 node_exporter 指标。
四、步骤 3:部署 Grafana(可视化)
4.1 使用 Docker 运行 Grafana(推荐)
docker run -d \
-p 3000:3000 \
--name=grafana \
-e "GF_SECURITY_ADMIN_PASSWORD=yourpassword" \
grafana/grafana-enterprise
- 访问地址:
http://localhost:3000- 登录账号:
admin- 密码:
yourpassword
五、步骤 4:在 Grafana 中添加 Prometheus 数据源
- 登录 Grafana
- ⚙️ Configuration → Data Sources → Add data source
- 选择 Prometheus
- 配置:
- Name:
Prometheus - URL:
http://host.docker.internal:9090(Docker)或http://localhost:9090⚠️ Docker 容器访问宿主机:Mac/Windows 用
host.docker.internal,Linux 用--network="host" - Access:
Server
- Name:
- Save & Test → 显示 “Data source is working”
六、步骤 5:创建仪表盘并添加面板
6.1 创建新仪表盘
- 点击 + → Dashboard → Create Dashboard
6.2 添加 CPU 使用率面板
- Add a new panel
- Query 标签页:
- Data source:
Prometheus - PromQL:
1 - rate(node_cpu_seconds_total{mode="idle",instance="$host"}[5m])
- Data source:
- Panel options:
- Title:
CPU Usage - Unit:
percent (0-1)
- Title:
- 点击 Apply
✅ 图表显示 CPU 使用率曲线。
6.3 添加内存使用率面板
- PromQL:
(node_memory_MemTotal_bytes{instance="$host"} - node_memory_MemAvailable_bytes{instance="$host"}) / node_memory_MemTotal_bytes{instance="$host"} - Title:
Memory Usage - Unit:
percent (0-1)
6.4 添加磁盘 IO 使用率面板(可选)
- PromQL:
rate(node_disk_io_time_seconds_total{instance="$host"}[5m]) - Title:
Disk IO Time - Unit:
percent (0-1)
七、挑战:创建 $host 变量实现主机切换
7.1 创建变量 $host
- 仪表盘设置(齿轮图标)→ Variables → Add variable
- 配置:
- Name:
host - Label:
Host(下拉菜单显示名) - Type:
Query - Data source:
Prometheus - Query:
label_values(node_uname_info, instance)✅
node_uname_info是一个 Gauge,每个 instance 有一个样本,适合获取 instance 列表 - Refresh:
On Dashboard Load
- Name:
- Add
7.2 更新所有面板查询
将每个面板的 PromQL 中的 instance="..." 替换为 instance="$host"
例如 CPU 面板:
1 - rate(node_cpu_seconds_total{mode="idle",instance="$host"}[5m])
✅ 保存后,仪表盘顶部会出现 Host 下拉菜单。
7.3 验证动态切换
- 从下拉菜单选择不同的
host - 所有面板应自动刷新,显示对应主机的指标
- 如果有多台主机,可添加更多 node_exporter 并更新 Prometheus 配置
八、最终效果
你将拥有一个完整的、可交互的主机监控仪表盘:
- ✅ 实时显示 CPU、内存、磁盘 IO
- ✅ 支持通过下拉菜单切换主机
- ✅ 基于 Prometheus + node_exporter + Grafana 标准栈
- ✅ 可扩展至多主机监控
九、进阶挑战(可选)
| 挑战 | 说明 |
|---|---|
| 添加磁盘使用率 | node_filesystem_avail_bytes / node_filesystem_size_bytes |
| 添加网络流量 | rate(node_network_receive_bytes_total[5m]) |
| 导入官方 Dashboard | ID 1860,功能更全面 |
| 配置告警 | 在 Grafana 或 Prometheus 中设置 CPU > 80% 告警 |
| 部署到多台主机 | 扩展为集群监控 |
十、总结
通过本次实践,你完成了:
- ✅ 部署
node_exporter采集主机指标 - ✅ 配置 Prometheus 抓取数据
- ✅ 使用 Grafana 可视化
- ✅ 创建动态变量
$host实现主机切换
600

被折叠的 条评论
为什么被折叠?



