13 10 月 2026

服务器出问题的时候,最怕的不是挂,而是挂了都不知道怎么挂的。CPU 什么时候打满的?内存是一点点涨上去的还是某次泄漏?带宽是谁在偷?

这篇用 Prometheus + Grafana 搭一套最经典的服务器监控,装完你就能在网页上看到实时的 CPU、内存、磁盘、网络曲线,还能设阈值告警。全程命令可抄。

玩游戏的服务器、跑网站的云服务器都能用这套方案。需要云服务器可以看看财富云计算:NAT 型无独立公网 IP,价格比独立 IP 机型省一半以上,一键开服面板,主流游戏快速部署。

一、这套方案是什么

三个组件,各司其职:

组件干什么资源占用
Node Exporter装在每台被监控机器上,采集系统指标很小(几十 MB 内存)
Prometheus定时来拉取指标,按时序存起来中等(几百 MB,看保留时间)
Grafana把指标画成图表,配告警规则中等

数据流:Node Exporter(被监控机)→ Prometheus(拉取存储)→ Grafana(展示告警)。

为什么选它:开源免费、社区模板多、对 Linux 支持最好、轻量(2G 内存的小机器也能跑)。

二、安装:一行一个组件

以下以 Ubuntu/Debian 为例,CentOS 把 apt 换成 yum。

1. 装 Node Exporter(被监控的机器上)

# 下载(以 1.7.0 为例,建议去官网看最新版)
cd /tmp
wget https://github.com/prometheus/node_exporter/releases/download/v1.7.0/node_exporter-1.7.0.linux-amd64.tar.gz
tar -xzf node_exporter-1.7.0.linux-amd64.tar.gz
cp node_exporter-1.7.0.linux-amd64/node_exporter /usr/local/bin/

# 创建专用用户(不要用 root 跑)
useradd -rs /bin/false node_exporter

# 注册为 systemd 服务
cat > /etc/systemd/system/node_exporter.service <<'EOF'
[Unit]
Description=Node Exporter
After=network.target

[Service]
User=node_exporter
ExecStart=/usr/local/bin/node_exporter
Restart=on-failure

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload
systemctl enable --now node_exporter

# 验证: 应该输出一堆指标
curl http://localhost:9100/metrics | head -20

看到 node_cpu_seconds_total 之类的指标就说明装好了。

2. 装 Prometheus(监控机,可以就是同一台)

cd /tmp
wget https://github.com/prometheus/prometheus/releases/download/v2.53.0/prometheus-2.53.0.linux-amd64.tar.gz
tar -xzf prometheus-2.53.0.linux-amd64.tar.gz
cp -r prometheus-2.53.0.linux-amd64 /opt/prometheus

# 配置: 告诉 Prometheus 去拉谁
cat > /opt/prometheus/prometheus.yml <<'EOF'
global:
  scrape_interval: 15s

scrape_configs:
  - job_name: 'node'
    static_configs:
      - targets: ['localhost:9100']
EOF

# 起服务(直接前台跑测试)
cd /opt/prometheus && ./prometheus --config.file=prometheus.yml

浏览器访问 http://服务器IP:9090,能看到 Prometheus 界面。在查询框输入 up 回车,显示 1 表示目标在线。

3. 装 Grafana(画图)

# 用官方源安装(最省事)
apt-get install -y apt-transport-https software-properties-common
wget -q -O /usr/share/keyrings/grafana.key https://apt.grafana.com/gpg.key
echo "deb [signed-by=/usr/share/keyrings/grafana.key] https://apt.grafana.com stable main" \
  > /etc/apt/sources.list.d/grafana.list
apt-get update && apt-get install -y grafana

systemctl enable --now grafana-server

访问 http://服务器IP:3000,默认账号 admin / admin,首次登录要求改密码。

三、配置 Grafana 看板

进 Grafana 后:

  1. Connections → Data sources → Add data source → Prometheus,URL 填 http://localhost:9090,保存
  2. Dashboards → New → Import,输入看板 ID 1860(Node Exporter Full,社区最流行的模板)
  3. 选择刚才加的 Prometheus 数据源,点 Import

十秒后你就能看到十几张图:CPU 使用率、内存、磁盘 IO、网络流量、系统负载、温度——全在一個页面上。

常用查询语句( Graphs 面板里手写查询用):

# CPU 使用率(百分比)
100 - (avg by(instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)

# 内存使用率
100 * (1 - node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes)

# 磁盘使用率
100 - (node_filesystem_avail_bytes{fstype!~"tmpfs|overlay"} 
  / node_filesystem_size_bytes * 100)

# 网络出站流量(MB/s)
rate(node_network_transmit_bytes_total[5m]) / 1024 / 1024

四、配告警:出问题主动找你

光看板不够,你得知道什么时候出问题。Grafana Alerting 配一条:

  1. 编辑某个图表面板 → Alert → Create alert rule
  2. 条件示例:

    • CPU 持续 5 分钟 > 90%
    • 内存使用率 > 90%
    • 磁盘使用率 > 85%
  3. Notification channel 配邮箱、钉钉、企业微信或 Telegram

游戏服最值得加的两条告警:

  • 进程存活告警:up{job="node"} == 0,机器失联立刻通知
  • 服务端进程告警(进阶):用 textfile collector 把游戏服进程状态暴露出来,挂了直接推送

五、资源占用与保留策略

Prometheus 默认保留 15 天数据,2G 小机器注意:

# /opt/prometheus/prometheus.yml 的 global 下加
global:
  scrape_interval: 15s
  # 数据保留15天(默认)
  # 命令行参数 --storage.tsdb.retention.time=15d

内存建议:监控机至少 1G 内存;被监控机只要有 Node Exporter(约 15MB 内存),不影响游戏运行。

多台机器怎么加:在 prometheus.yml 的 targets 里加 IP 就行:

static_configs:
  - targets: ['192.168.1.10:9100', '192.168.1.11:9100']

前提是那些机器也装了 Node Exporter,且 9100 端口互通。

六、不想这么复杂?轻量替代方案

如果只是想「看看机器卡不卡」,不想搭三件套:

需求轻量工具
实时看一眼htop + iftop + iostat
历史曲线 + Web 界面Netdata(单二进制,装完就有看板)
国内面板中文宝塔面板(自带监控图表)
定时跑脚本 + 邮件告警自写 Shell + mail 命令

Netdata 安装只要一行:bash <(curl -sS https://get.netdata.cloud/cda),装完访问 http://IP:19999 就有完整看板,适合不想折腾的人。宝塔和 Netdata 的详细用法见Netdata 与宝塔面板可视化监控。

七、常见问题

Q:Prometheus 占内存越来越大?
数据保留时间太长或抓取目标太多。缩短 --storage.tsdb.retention.time,或者只监控核心指标。

Q:防火墙挡了 9090/3000/9100?
监控机防火墙要放行对应端口,但 Grafana 和 Prometheus 不要直接暴露公网,建议只监听内网或加 Nginx 反代 + Basic Auth。

Q:能在 Windows 上用吗?
能,Node Exporter 有 windows 版本,windows_exporter.msi 装完即可,其余流程一样。

Q:指标显示不全 / 时断时续?
检查 scrape_interval 和网络连通性,up 指标为 0 就是拉取失败,多半是防火墙或 IP 写错。

小结

监控的意义是把「不知道怎么就挂了」变成「早有预兆」。Node Exporter + Prometheus + Grafana 这套一小时能搭完,之后所有性能问题都有数据可查,排查再靠猜。

更多云服务器运维内容见财富云计算知识库:Linux 命令速查、SSH 密钥登录、资源排查、备份策略、防火墙配置等全系列教程。需要云服务器可以看看财富云计算:一键开服面板,NAT 型无独立公网 IP,价格比独立 IP 机型省一半以上。

延伸阅读
  1. 网站环境怎么选:LNMP 手动 / 宝塔面板 / Docker / 云开发
  2. 问卷表单系统搭建:SurveyKing / Formbricks,数据自己收
  3. 图床搭建:Lsky Pro / Lychee,自托管图片托管方案
  4. 邮件列表搭建:listmonk 自托管 Newsletter,把读者握在自己手里
  5. 文档站点搭建:MkDocs / VuePress / Docsify,产品文档与技术手册方案
  6. RSS 阅读器搭建:FreshRSS 自托管,把信息流拿回自己手里
  7. 短链接服务搭建:Shlink 自托管,链接数据自己掌握
  8. 网站状态监控页搭建:Uptime Kuma,服务器挂了第一时间知道
更多阅读
  1. 上一篇:游戏服务器数据备份与恢复完整指南:存档丢了怎么救回
  2. 下一篇:Netdata 与宝塔面板:零基础服务器可视化监控方案
发表评论 11

取消回复