📘 文档目的与功能
本文档介绍如何在 Ubuntu 24.04 上通过 Docker 容器化方式 快速部署 Prometheus + Grafana 监控系统,并实现对 Linux 和 Windows 主机的指标采集与可视化。
内容包括:Docker 环境准备、Prometheus 与 Grafana 的 Compose 部署、node_exporter 客户端安装、Grafana 数据源配置与中文面板导入,以及常见问题排查与扩展监控(容器、温度等)。
通过此方案,可实现环境隔离、一键启停、低维护成本的监控体系,适用于单机到多主机的运维场景。
实测环境:
- 服务端:192.168.20.172(Ubuntu 24.04 + Docker)
- 被监控节点:192.168.20.167(Ubuntu 24.04 + node_exporter)
一、方案概述
1.1 监控架构图
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ 被监控主机 │ │ 监控服务端 │ │ 可视化展示 │
│ node_exporter │ ──> │ Prometheus │ ──> │ Grafana │
│ (端口:9100) │ │ (端口:9090) │ │ (端口:3000) │
└─────────────────┘ └─────────────────┘ └─────────────────┘
1.2 核心组件说明
| 组件 | 版本 | 用途 | 访问地址 |
|---|---|---|---|
| Prometheus | latest | 指标采集与存储 | http://服务端IP:9090 |
| Grafana | latest | 数据可视化 | http://服务端IP:3000 |
| node_exporter | 1.7.0+ | 主机指标采集 | http://节点IP:9100/metrics |
1.3 方案优势
- ✅ 极简部署:Docker Compose一键启动
- ✅ 中文友好:Grafana预设中文界面
- ✅ 低维护成本:apt安装node_exporter,systemd管理
- ✅ 可扩展性强:支持Linux/Windows/容器等各类环境
二、服务端部署(Docker一键安装)
2.1 准备工作:安装 Docker
在监控服务端(本例为 192.168.20.172)执行:
# 更新系统包
sudo apt update && sudo apt upgrade -y
# 安装Docker
sudo apt install -y docker.io docker-compose
# 设置开机自启并启动Docker
sudo systemctl enable --now docker
2.2 创建监控目录和配置文件
mkdir -p /opt/monitoring
cd /opt/monitoring
# 创建docker-compose.yml文件
cat > docker-compose.yml << 'EOF'
version: '3.8'
services:
prometheus:
image: prom/prometheus:latest
container_name: prometheus
restart: unless-stopped
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
- prometheus_data:/prometheus
command:
- '--config.file=/etc/prometheus/prometheus.yml'
- '--storage.tsdb.path=/prometheus'
ports:
- "9090:9090"
networks:
- monitoring
grafana:
image: grafana/grafana:latest
container_name: grafana
restart: unless-stopped
ports:
- "3000:3000"
environment:
- GF_SECURITY_ADMIN_USER=admin
- GF_SECURITY_ADMIN_PASSWORD=admin123
- GF_INSTALL_PLUGINS=grafana-clock-panel,grafana-simple-json-datasource
volumes:
- grafana_data:/var/lib/grafana
networks:
- monitoring
depends_on:
- prometheus
volumes:
prometheus_data:
grafana_data:
networks:
monitoring:
driver: bridge
EOF
2.3 配置Prometheus采集规则
# 创建Prometheus配置文件
cat > prometheus.yml << 'EOF'
global:
scrape_interval: 15s # 采集间隔
evaluation_interval: 15s # 规则评估间隔
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
- job_name: 'node_exporter'
static_configs:
- targets:
- '192.168.20.167:9100' # 替换为你的被监控主机IP
# 如需监控多台,按以下格式添加:
# - '192.168.20.168:9100'
# - '192.168.20.169:9100'
EOF
2.4 一键启动监控栈
# 启动所有服务
docker-compose up -d
# 查看服务状态
docker-compose ps
# 查看运行日志
docker-compose logs -f
#修改完配置重启服务
docker restart prometheus
2.5 验证部署结果
| 服务 | 访问地址 | 预期结果 |
|---|---|---|
| Prometheus | http://192.168.20.172:9090/targets | 所有target状态为UP |
| Grafana | http://192.168.20.172:3000 | 登录页面正常显示 |

三、客户端部署(被监控主机)
3.1 安装 node_exporter
在被监控主机(本例为 192.168.20.167)执行:
sudo apt update
sudo apt install -y prometheus-node-exporter
systemctl enable --now prometheus-node-exporter
3.2 验证客户端
# 检查服务状态
systemctl status prometheus-node-exporter
# 测试指标接口
http://192.168.20.167:9100/metrics

四、Grafana可视化配置
4.1 首次登录
- 访问:
http://192.168.20.172:3000 - 登录凭证:
- 用户名:
admin - 密码:
admin123(已在docker-compose中预设)
- 用户名:

4.2 添加Prometheus数据源
操作步骤:
1. 点击左侧齿轮图标 Connections → Data sources → Add data source
2. 选择 Prometheus
3. 在 URL 字段填写:http://prometheus:9090
4. 点击 "Save & Test" 验证连接
成功标志:显示绿色提示 “Successfully queried the Prometheus API.”,然后按提示”Open in Metrics Drilldown“



4.3 导入中文监控面板
🎯 推荐的中文模板
| 模板名称 | ID | 特点 |
|---|---|---|
| Node Exporter 中文版 | 8919、20389 |
界面简洁,指标全面,新手首选 |
| Linux主机详情中文版 | 16098 |
包含CPU/内存/磁盘/网络的详细监控 |
| Linux主机排序基础监控 | 20390 | 轻量级,适合快速巡检 |
| Windows主机监控 | 16523 |
📥 导入步骤
1. 点击右上角 "+" 号 → Import dashboard
2. 输入模板ID:1860
3. 点击 "Load"
4. 在 "Prometheus" 下拉框选择刚才创建的数据源
5. 点击 "Import" 完成
五、日常运维指南
5.1 服务启停命令
# 监控服务端操作
cd ~/monitoring
# 启动所有服务
docker compose up -d
# 停止所有服务
docker compose down
# 重启特定服务
docker-compose restart prometheus
docker-compose restart grafana
docker restart prometheus
# 查看实时日志
docker compose logs -f prometheus
5.2 配置修改
修改Prometheus配置后需重启
# 1. 编辑配置文件
vim prometheus.yml
# 2. 重启Prometheus使配置生效
docker restart prometheus
# 3. 验证配置
# 访问 http://192.168.20.172:9090/targets 确认所有targets为UP
六、常见问题排查
❓ Q1: Grafana页面显示”No data”
排查步骤:
# 1. 检查Prometheus targets状态
curl http://192.168.20.172:9090/api/v1/targets | grep -A 5 '"state":"up"'
# 2. 确认node_exporter是否正常运行
curl http://192.168.20.167:9100/metrics | grep node_cpu_seconds
# 3. 检查防火墙
sudo ufw status
❓ Q2: Prometheus targets显示”Connection refused”
解决方法:
# 在被监控主机检查node_exporter
systemctl status prometheus-node-exporter
netstat -tlnp | grep 9100
# 临时关闭防火墙测试
sudo ufw disable
# 如确认为防火墙问题,重新开放端口
sudo ufw allow 9100/tcp
sudo ufw enable
❓ Q3: 容器无法启动
# 查看详细错误
docker compose logs
# 常见原因及解决:
# - 端口被占用
sudo lsof -i:9090
sudo lsof -i:3000
# - 配置文件格式错误
docker run --rm -v $(pwd)/prometheus.yml:/etc/prometheus/prometheus.yml \
prom/prometheus --config.file=/etc/prometheus/prometheus.yml
❓ Q4: 忘记Grafana密码
# 方法一:重置密码
docker exec -it grafana grafana-cli admin reset-admin-password newpassword
# 方法二:删除Grafana数据卷重新创建
docker compose down -v
docker compose up -d
# 注意:这会清除所有配置和面板
七、进阶扩展
7.1 监控多台主机
修改 prometheus.yml,添加多个target:
scrape_configs:
- job_name: 'node_exporter'
static_configs:
- targets:
- '192.168.20.167:9100' # 服务器A
- '192.168.20.168:9100' # 服务器B
- '192.168.20.169:9100' # 服务器C
7.2 Windows主机监控
- 在Windows主机下载 windows_exporter
- 以管理员身份安装:
msi安装包默认配置即可 - 在Prometheus配置中添加:
- targets: ['Windows_IP:9182']
确认windows_exporter服务已启动:
# 以管理员身份打开PowerShell,执行:
Get-Service -Name windows_exporter
# 如果服务未运行,启动它:
Start-Service -Name windows_exporter
# 设置为开机自启:
Set-Service -Name windows_exporter -StartupType Automatic
# 打开浏览器访问:
http://localhost:9182/metrics
# 添加防火墙规则:第1条,开放端口;第2条,添加IP白名单
New-NetFirewallRule -DisplayName "windows_exporter" -Direction Inbound -Protocol TCP -LocalPort 9182 -Action Allow
Set-NetFirewallRule -DisplayName "windows_exporter" -RemoteAddress 192.168.20.172
# 验证规则是否添加成功
Get-NetFirewallRule -DisplayName "windows_exporter" | Format-Table -AutoSize
# 在Ubuntu服务器执行
docker restart prometheus
#重启服务
Restart-Service windows_exporter
7.3 Docker容器监控
部署cAdvisor采集容器指标:
docker run -d \
--name=cadvisor \
--restart=unless-stopped \
-p 8080:8080 \
-v /:/rootfs:ro \
-v /var/run:/var/run:ro \
-v /sys:/sys:ro \
-v /var/lib/docker/:/var/lib/docker:ro \
-v /dev/disk/:/dev/disk:ro \
gcr.io/cadvisor/cadvisor
Prometheus配置添加(注意格式 空格):
- job_name: 'cadvisor'
static_configs:
- targets: ['192.168.20.172:8080']
7.4 温度监控(适用于物理机)
# 安装传感器工具
sudo apt install -y lm-sensors
sudo sensors-detect --auto
sudo systemctl enable --now prometheus-node-exporter
# node_exporter会自动采集温度指标
# 在Grafana中可查看 node_hwmon_temp_celsius
wget https://github.com/prometheus/node_exporter/releases/download/v1.10.2/node_exporter-1.10.2.linux-amd64.tar.gz
tar xvf node_exporter-1.10.2.linux-amd64.tar.gz
cp node_exporter-1.10.2.linux-amd64/node_exporter /usr/local/bin/
7.5 极简安装 Node Exporter(TencentOS / CentOS 7)
# ============================================
# 在 TencentOS 或 CentOS 7 上执行整段命令
# ============================================
# 1. 下载并安装 node_exporter
cd /tmp
wget https://github.com/prometheus/node_exporter/releases/download/v1.10.2/node_exporter-1.10.2.linux-amd64.tar.gz
tar xvf node_exporter-1.10.2.linux-amd64.tar.gz
cp node_exporter-1.10.2.linux-amd64/node_exporter /usr/local/bin/
# 2. 创建服务(直接运行 node_exporter,不加任何额外参数)
cat > /etc/systemd/system/node_exporter.service << 'EOF'
[Unit]
Description=Node Exporter
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/bin/node_exporter
Restart=always
[Install]
WantedBy=multi-user.target
EOF
# 3. 启动服务
systemctl daemon-reload
systemctl enable node_exporter
systemctl start node_exporter
# 4. 验证
systemctl status node_exporter --no-pager
echo ""
echo "测试指标:"
curl -s localhost:9100/metrics | head -5
最终预览


附件列表
