服务器预测性维护监控新手搭建指南

当你管理的服务器突然宕机,排查半天才发现是磁盘写满或内存泄漏,这种被动维修既耗时又影响业务。
预测性维护监控的目标,就是通过持续采集 CPU、内存、磁盘、网络等指标,结合趋势变化提前发现异常,在故障发生前就发出告警。
本文使用开源的 Prometheus + Node Exporter + Grafana 组合,带零基础用户一步步搭建这套监控系统,即使没接触过监控也能直接上手。

搭建前需要准备什么

  • 一台 Linux 服务器(本文以 CentOS 7/Ubuntu 20.04 为例,其他发行版命令类似)。
  • 服务器能正常访问 GitHub 和 Grafana 仓库(如受限需提前准备代理或离线包)。
  • 开放服务器防火墙:Prometheus 默认端口 9090,Node Exporter 端口 9100,Grafana 端口 3000。

如果你用云服务器,还需要在安全组中放行这三个端口。

第一步:安装系统资源采集器 Node Exporter

Node Exporter 负责收集服务器的 CPU、内存、磁盘、网络等指标,是最底层的数据源。

  1. 下载并解压最新版(到 Prometheus 官网 找当前版本号,本文以 1.6.0 为例):
wget https://github.com/prometheus/node_exporter/releases/download/v1.6.0/node_exporter-1.6.0.linux-amd64.tar.gz
tar -xzf node_exporter-1.6.0.linux-amd64.tar.gz
sudo mv node_exporter-1.6.0.linux-amd64/node_exporter /usr/local/bin/
  1. 创建系统服务文件,让 Node Exporter 开机自启:
sudo tee /etc/systemd/system/node_exporter.service <
  1. 启动并验证:
sudo systemctl daemon-reload
sudo systemctl start node_exporter
sudo systemctl enable node_exporter
curl http://localhost:9100/metrics  # 应返回大量指标数据

第二步:配置 Prometheus 抓取数据

Prometheus 是一个时序数据库,负责定期拉取 Node Exporter 的指标并存储。

  1. 下载 Prometheus:
wget https://github.com/prometheus/prometheus/releases/download/v2.50.1/prometheus-2.50.1.linux-amd64.tar.gz
tar -xzf prometheus-2.50.1.linux-amd64.tar.gz
sudo mv prometheus-2.50.1.linux-amd64 /opt/prometheus
  1. 编辑配置文件 /opt/prometheus/prometheus.yml,在 scrape_configs 下添加 Node Exporter 的抓取目标:
scrape_configs:
  - job_name: 'node'
    static_configs:
      - targets: ['localhost:9100']

(如果有多个服务器,继续添加 targets,用逗号分隔)

  1. 创建服务并启动:
sudo tee /etc/systemd/system/prometheus.service <
  1. 验证:浏览器访问 http://服务器IP:9090,在 Expression 框输入 up,点 Execute。如果看到 node 对应的值为 1,说明抓取成功。

第三步:用 Grafana 可视化并设置告警

Grafana 负责将 Prometheus 里的指标画成图表,并支持配置告警。

  1. 安装 Grafana(以 Ubuntu 为例):
sudo apt-get install -y software-properties-common
sudo add-apt-repository "deb https://packages.grafana.com/oss/deb stable main"
sudo apt-get update
sudo apt-get install -y grafana
sudo systemctl start grafana-server
sudo systemctl enable grafana-server
  1. 打开浏览器 http://服务器IP:3000,默认用户名/密码均为 admin,首次登录会要求修改密码。
  2. 添加数据源:左侧齿轮图标 → Data Sources → Add data source → 选择 Prometheus,URL 填写 http://localhost:9090,点击 Save & Test。
  3. 导入仪表盘:左侧 + 号 → Import → 输入 Dashboard ID 1860(Node Exporter 官方推荐)→ Load → 选择数据源 → Import。你会看到 CPU、内存、磁盘、网络等实时图表。
  4. 设置预测性告警:以磁盘根分区使用率超过 80% 为例:
  • 进入对应面板,编辑指标查询(如 (1 - (node_filesystem_avail_bytes{mountpoint="/", fstype!= ""} / node_filesystem_size_bytes{mountpoint="/", fstype!= ""})) * 100)。
  • 切换到 Alert 选项卡 → Create Alert Rule → 设置 Condition:当 WHEN last() OF query (A, 5m, now) IS ABOVE 80 → 设置通知渠道(如邮件、钉钉、Slack)。
  • 保存。这样当磁盘用量持续超过阈值,就会提前告警,避免写满后服务中断。

常见踩坑与解决方法

  • 端口被占用:Node Exporter 默认 9100,如果冲突,启动时加参数 --web.listen-address=":9101",同时修改 prometheus.yml 里的 targets。
  • Prometheus 抓取超时:量大的服务器建议调大 scrape_timeout,在 prometheus.yml 的 global 或 job 下添加 scrape_timeout: 30s
  • Grafana 告警不生效:确保 Grafana 已正确配置 SMTP(邮件)或其他通知渠道,且 Alert Rule 的状态从 Pending 变为 Firing 才触发。
  • 忘记放行端口:检查云服务安全组和服务器内部防火墙(systemctl status firewalld 确认)。

验证监控是否生效

  1. 用命令 stress --cpu 2 --timeout 60(需先安装 stress)模拟 CPU 高负载,观察 Grafana CPU 面板曲线是否上升。
  2. dd if=/dev/zero of=/tmp/bigfile bs=1M count=1024 快速消耗磁盘,看磁盘使用率是否超过告警阈值,同时检查是否收到告警通知。
  3. 在 Prometheus 的 Web UI 中执行 rate(node_cpu_seconds_total{mode="system"}[5m]) 查看 CPU 增长率,了解系统负载变化趋势。

通过这套组合,你不仅能实时看到服务器状态,还能借助历史数据预测哪些指标即将突破红线,把故障消灭在萌芽阶段。
每次调整阈值后,建议持续观察一周,根据实际波动微调告警灵敏度。
如果觉得这些操作还是复杂,可以继续阅读本博客的《使用宝塔面板内置监控实现基础预测》教程,但功能上远不及 Prometheus 灵活。

分享到:
上一篇
服务器故障根因分析实战指南:从日志到根因的排查步骤
下一篇
自动化运维平台搭建实战:Ansible从入门到批量部署
1
系统公告

高考专属福利来袭|凭准考证免费领香港 CN2 云服务器

值高考落幕之际,泽御云开启考生专属回馈 + 产品限时特惠双重活动,助力学子暑期学习建站 高考 考生专属福利 全体应届高考生,凭高考准考证即可免费申领【香港 CN2 轻量云服务器,4 核 4G AMD 处理器】,免费使用周期 30 天,可用于搭建个人站点、编程实操、技术实训,祝各位考生金榜题名,前程似锦! 泽御云资质齐全合规自营机房,线路覆盖香港 CN2、国内 BGP、内蒙电信、美国精品线路,售后全天候技术支持。 官方网站:www.zeyuyun.com,活动限时有效,优惠逾期不再保留。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意