-
Step 1 · 准备服务器 + 安装宝塔
一台2核2G的机器,装上宝塔面板
监控面板建议单独一台机器,别和主力业务混在一起——业务挂了,监控也一起挂,那监控就没意义了。
配置选2核2G、3M带宽起,年付50-100元。系统优先 Ubuntu 22.04 或 CentOS 7,宝塔对这两个兼容性最好。
拿到机器后先做三件事:
- 云控制台安全组放行 22、80、443、8888
- 域名加A记录指向这台机器(如 monitor.xuliming.com)
- SSH登录,执行右侧脚本装宝塔
自查清单
- SSH能登录,能执行 `bt` 命令
- 安全组放行了8888端口
- 域名解析指向本机IP
-
Step 2 · 部署监控采集脚本
采集CPU/内存/磁盘/进程,落到JSON
监控的核心是「采集 + 落地 + 展示」三段。这一步只做前两段。
采集脚本每跑一次,把下面这些指标写进一个 JSON 文件:
- CPU 使用率、负载(1/5/15分钟)
- 内存使用率、Swap 使用率
- 磁盘各分区使用率
- 关键进程存活状态(nginx/php-fpm/mysql)
- 系统运行时长
脚本固定放到
/www/wwwroot/monitor.xuliming.com/data/status.json,前端页面直接 fetch 这个文件就能画图。为什么要落地成JSON而不是直连数据库?
因为这样前端就是纯静态,采集端怎么写都行,你以后想换成别的方式采集,前端一行都不用改。自查清单
- 脚本执行后生成了 status.json
- status.json 里的字段值合理(CPU不是0也不是100)
- 浏览器能访问 http://域名/data/status.json
-
Step 3 · 配置告警通知(钉钉/飞书/邮件)
阈值触发后推送到手机,别靠盯屏
监控没人看等于没做。必须让它在出问题的时候主动找你。
推荐方案(按省事程度排序):
- 钉钉机器人:建一个只有自己的群,群设置里加「自定义机器人」拿 webhook 地址,脚本里 POST 一个 JSON 就推到手机。免费、不限量。
- 飞书机器人:同理,群设置里加机器人拿 webhook,已经在用飞书的最省事。
- Telegram Bot:找 BotFather 建个 bot 拿 token,海外服务器或能正常访问时最省事。
- 邮件:宝塔自带邮件告警,但实时性最差,一般只当兜底。
阈值建议:
- CPU 持续5分钟 > 90%
- 内存使用率 > 90%
- 磁盘使用率 > 85%
- 关键进程不存在
关键原则:加静默期。 同一个告警10分钟内只推一次,不然半夜能收两百条消息,你会直接把告警关掉。
自查清单
- 手动把阈值调低,能收到测试告警
- 手机上(钉钉/飞书/邮件)能看到推送内容
- 同一告警在静默期内不重复推送
-
Step 4 · 加定时任务与开机自启
每分钟跑一次采集,重启后自动恢复
脚本写好之后,得让它自己按时跑。
方式一:宝塔计划任务(推荐新手)
宝塔 → 计划任务 → 添加任务 → 类型选「Shell脚本」→ 执行周期选「N分钟」→ 填 1 → 脚本内容填脚本绝对路径。方式二:crontab(更省资源)
SSH执行crontab -e,加一行:* * * * * /bin/bash /root/monitor/collect.sh >/dev/null 2>&1开机自启
如果监控脚本是常驻进程(daemon)而不是定时跑一次,就得配 systemd 服务,写个 .service 文件放到/etc/systemd/system/,然后:systemctl daemon-reload && systemctl enable monitor && systemctl start monitor最后重启一次服务器验证:重启完不用登录,指标应该自动继续更新。
自查清单
- 计划任务列表里能看到刚加的任务
- 每分钟 status.json 的更新时间在变
- 重启服务器后采集自动恢复
-
Step 5 · 面板展示 + 备份策略
把JSON画成图,并定期备份配置
最后一步:把数据变成一眼能看懂的面板。
展示层:
就是一个静态 HTML,setInterval 每30秒 fetch 一次 status.json,用几根进度条 + 数字卡片渲染。不需要图表库,纯CSS进度条最稳、最快。配色约定(别小看这个):
- 正常:绿色
- 警告(>80%):黄色
- 危险(>90%):红色
这样你扫一眼就知道有没有事,不用读数字。
备份策略:
监控配置本身不大,但重写一遍很烦。- 宝塔 → 计划任务 → 备份网站,每周一次
- 脚本目录
/root/monitor/也打包进去 - 存到 COS/OSS,本地也留一份
日常巡检清单(每周5分钟):
- 面板是否还在更新
- 告警是否还能收到(主动测一次)
- 磁盘增长趋势是否异常
自查清单
- 面板每30秒自动刷新
- 超过阈值时进度条变黄/变红
- 备份任务存在且能手动执行成功