服务器稳定性长期监测方法:新手也能上手的完整教程
服务器跑着跑着突然卡死、网站打不开,很多新手第一反应是“重启大法”。
但根源不解决,问题会反复出现。
要真正保障业务稳定,必须建立一套服务器稳定性长期监测方法,把隐患扼杀在萌芽状态。
本文手把手教你从零搭建,不管你是用宝塔面板还是纯命令行,都能直接上手。
开始之前你需要准备什么
在动手操作前,确保以下条件已满足:
- 一台运行 Linux 的服务器(CentOS 7/8 或 Ubuntu 20.04+ 均可)
- 已通过 SSH 登录服务器,或已经安装了宝塔面板(推荐新手先用宝塔)
- 基本的 Linux 命令常识:知道
ls、cd、vim的作用,实在不会也不慌,大部分操作可以用面板替代 - 一个小小的规划:想清楚要监控哪些指标——CPU、内存、磁盘、网络、进程状态、网站响应时间等。本文重点教你监控系统资源,这是最基础也最关键的。
如果你选择宝塔面板,可以直接用自带的“监控”功能;
如果想更灵活,推荐安装 Prometheus + Grafana 的组合。
本文两种方式都会涉及,你先挑适合自己的。
手把手配置长期监测
方案一:宝塔面板内置监控(最简单)
- 登录宝塔后台,点击左侧菜单 监控。
- 在“监控设置”中,开启 CPU、内存、磁盘、网络 四个指标。宝塔默认记录近 30 天的数据,你可以调整保存天数(建议设置 60 天以上)。
- 点击 告警设置 → 添加告警规则。例如:
- CPU 使用率超过 90% 持续 5分钟,发送告警到邮箱或钉钉。
- 磁盘使用率超过 80% 立即告警。
- 内存剩余低于 500MB 触发告警。
- 配置通知渠道:宝塔支持邮件、钉钉机器人、企业微信等。以钉钉为例,复制 Webhook 地址粘贴到宝塔即可。
- 保存后,系统会自动开始记录并告警。
小提示:宝塔的监控进程是 btmonitor,如果你发现它吃掉太多资源(有时会占用 5% 以上的 CPU),可以在软件商店卸载“宝塔监控”插件,改用更轻量的方案。
方案二:命令行动手搭建(更专业)
新手可以先试试 vmstat 和 iostat 这类工具,零安装成本:
# 查看系统整体运行状态,每2秒刷新一次,共5次
vmstat 2 5
输出中各列含义:r 表示运行队列,free 空闲内存,si/so 交换区读写。
如果 wa(等待 I/O)持续 >30%,说明磁盘有瓶颈。
若要长期记录,用 top 或 htop 配合脚本保存日志,或者直接安装 netdata(一个轻量级实时监控工具):
# 安装 netdata
bash <(curl -Ss https://my-netdata.io/kickstart.sh)
安装后打开 http://你的服务器IP:19999 就能看到炫酷的仪表盘,支持 CPU、内存、磁盘、网络、进程等上百个指标。
高级做法:用 Prometheus + node_exporter + Grafana 搭建企业级监控。
步骤略复杂,但适合长期使用。
以下快速启动命令(基于 Docker):
# 拉取镜像并运行 node_exporter
docker run -d --name node-exporter --restart=always -p 9100:9100 prom/node-exporter
# 运行 Prometheus(需先准备 prometheus.yml 配置文件,见下文)
docker run -d --name prometheus --restart=always -p 9090:9090 -v /path/to/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus
# 运行 Grafana
docker run -d --name grafana --restart=always -p 3000:3000 grafana/grafana
配置文件 prometheus.yml 关键片段:
scrape_configs:
- job_name: 'node'
static_configs:
- targets: ['localhost:9100']
之后在 Grafana 中导入 Node Exporter Full 模板(ID 1860),即可看到美观的图表。
这几个坑千万别踩
1. 监控服务本身变成资源黑洞
很多新手装了监控插件后,发现服务器变得更卡了。
比如 netdata 如果配置不当,单个进程会吃掉 2%-5% CPU。解决方案:
- 在 netdata 设置里降低数据收集间隔(例如每 10 秒一次)
- 关掉不需要的图表模块(如
apps插件) - 如果使用宝塔监控,注意检查
btmonitor进程的 CPU 占用
2. 告警阈值设置太敏感
把 CPU 告警阈值设为 50%,结果一天收到上百条通知,最终没人看。正确的做法:
- 核心服务建议设置为 持续超过 80% 至少 5 分钟 才触发
- 磁盘告警建议设置 90% 而非 80%,留一点缓冲区
- 内存告警可以结合
Available而非Free进行判断
3. 忘记设置持久化日志
监控数据如果不定期保存,服务器重启后历史趋势就没了。
宝塔面板可自动保存;
使用 Prometheus 要确认数据目录映射到宿主机持久化卷;
使用 netdata 默认会写 SQLite 数据库到 /var/cache/netdata,建议设置 retention 为 30 天以上。
如何确认监控已经生效
操作完别急着开心,先做一次模拟故障来验证告警是否正常。
方法一:制造 CPU 压力
# 安装 stress 工具(如未安装)
yum install -y epel-release && yum install -y stress
# 让 CPU 保持 100% 负荷 60 秒
stress --cpu 4 --timeout 60
观察监控面板是否立刻出现 CPU 飙升曲线,以及你是否收到告警通知(邮件、钉钉等)。
方法二:模拟磁盘满
# 创建一个 1GB 的文件(请确保磁盘有足够空间)
dd if=/dev/zero of=/tmp/testfile bs=1M count=1000
之后查看磁盘使用率是否超过你设置的阈值。
注意,该测试完成后及时删除文件:rm /tmp/testfile,避免硬盘真的被占满。
方法三:验证 Grafana 仪表盘
如果使用 Prometheus + Grafana,打开 Grafana 界面,选择对应的 Dashboard,确认数据源状态为绿色,图表有数据点。可以手动调节时间范围查看历史曲线。
以上所有操作完毕后,建议把监控页面的地址存为浏览器书签,每周扫一眼趋势。
长期积累的数据能帮你发现周期性性能瓶颈,比如每天凌晨的备份导致磁盘 I/O 飙升,或者内存泄漏逐渐消耗资源。
这才是服务器稳定性长期监测方法的真正价值——不是等出问题再救火,而是让问题在萌芽阶段就浮出水面。
如果你现在正遇到服务器频繁卡顿或重启,不妨先按本文步骤搭建监控,把关键指标抓出来,再针对优化。
遇到报错时,优先检查监控日志和告警记录,往往能快速定位根因。