Grafana 实战:构建可切换主机的监控仪表盘

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:

  • 点击 StatusTargets,确认 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 数据源

  1. 登录 Grafana
  2. ⚙️ ConfigurationData SourcesAdd data source
  3. 选择 Prometheus
  4. 配置:
    • Name: Prometheus
    • URL: http://host.docker.internal:9090(Docker)或 http://localhost:9090

      ⚠️ Docker 容器访问宿主机:Mac/Windows 用 host.docker.internal,Linux 用 --network="host"

    • Access: Server
  5. Save & Test → 显示 “Data source is working”

六、步骤 5:创建仪表盘并添加面板

6.1 创建新仪表盘

  • 点击 +DashboardCreate Dashboard

6.2 添加 CPU 使用率面板

  1. Add a new panel
  2. Query 标签页:
    • Data source: Prometheus
    • PromQL:
      1 - rate(node_cpu_seconds_total{mode="idle",instance="$host"}[5m])
      
  3. Panel options
    • Title: CPU Usage
    • Unit: percent (0-1)
  4. 点击 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

  1. 仪表盘设置(齿轮图标)→ VariablesAdd variable
  2. 配置:
    • 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
  3. Add

7.2 更新所有面板查询

将每个面板的 PromQL 中的 instance="..." 替换为 instance="$host"

例如 CPU 面板:

1 - rate(node_cpu_seconds_total{mode="idle",instance="$host"}[5m])

✅ 保存后,仪表盘顶部会出现 Host 下拉菜单


7.3 验证动态切换

  1. 从下拉菜单选择不同的 host
  2. 所有面板应自动刷新,显示对应主机的指标
  3. 如果有多台主机,可添加更多 node_exporter 并更新 Prometheus 配置

八、最终效果

你将拥有一个完整的、可交互的主机监控仪表盘:

  • ✅ 实时显示 CPU、内存、磁盘 IO
  • ✅ 支持通过下拉菜单切换主机
  • ✅ 基于 Prometheus + node_exporter + Grafana 标准栈
  • ✅ 可扩展至多主机监控

九、进阶挑战(可选)

挑战说明
添加磁盘使用率node_filesystem_avail_bytes / node_filesystem_size_bytes
添加网络流量rate(node_network_receive_bytes_total[5m])
导入官方 DashboardID 1860,功能更全面
配置告警在 Grafana 或 Prometheus 中设置 CPU > 80% 告警
部署到多台主机扩展为集群监控

十、总结

通过本次实践,你完成了:

  1. ✅ 部署 node_exporter 采集主机指标
  2. ✅ 配置 Prometheus 抓取数据
  3. ✅ 使用 Grafana 可视化
  4. ✅ 创建动态变量 $host 实现主机切换
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值