第一步先做基础采集:确认< strong>CPU、内存、磁盘与< strong>网络四大维度的实时与历史指标,并确保能远程获取系统日志。
1)通过SSH登录,运行 top、free -m、df -h、ss -tunapl 快速查看当前状态。
2)部署轻量级监控:可以先用 Netdata(即装即用)或 Prometheus Node Exporter + Grafana 做可视化历史指标。
3)配置日志采集:启用 rsyslog/journald 本地保存,并用 Filebeat 或 Fluentd 将日志推送到集中平台(ELK/EFK)。
如果VPS流量或磁盘受限,优先开启采样与压缩,避免监控本身造成IO或带宽压力。
必须监控的关键指标有:CPU利用率、平均负载(load)、内存可用、磁盘使用与IO延迟、网络吞吐与丢包。
1)CPU:持续>80%应关注,95%以上短时间报警。对多核VPS看单核饱和与整体利用率。
2)Load:单核VPS load>1,多核以核数为基准(load/ncore > 1.5需排查)。
3)内存:Swap使用>20%或可用内存持续下降需关切,内存碎片或OOM需配置OOM日志。
4)磁盘:使用率>80%需扩容;IOPS/等待时间(iowait)高于正常值说明磁盘瓶颈。
阈值应结合业务:峰值接受短时间突发,建议设置两级告警(警告与严重),并将阈值写入SOP。
按顺序检查:资源→进程→磁盘→网络→日志,逐步排除与定位。
1)资源快查:top、htop、vmstat 1 5 看CPU/内存/iowait。
2)进程级:ps aux --sort=-%cpu | head 找占用高的进程,结合 strace -p PID 或 lsof -p PID 查看系统调用和打开文件数。
3)磁盘与IO:用 iostat -x 1 3、iotop 检查IO热点,注意fsync或大量小文件写入会拖慢应用。
4)网络层面:用 ss -s、ss -tnp、tcpdump、mtr 检查连接数、半开连接和丢包。
5)日志分析:看应用日志、系统日志(/var/log/syslog或journalctl),定位异常堆栈或OOM、拒绝服务记录。
短时间内可重启服务或清理缓存释放内存,但务必先抓取快照(top、ps、日志)以便事后分析。
先确认是本地到VPS的链路延迟,还是VPS到外部的出口问题,分别用 ping、mtr、tcpdump 辅助定位。
1)外部到VPS:从本地或第三方检测点执行 mtr -rw target 查看每跳丢包与时延。
2)VPS出站:在VPS上用 mtr 到目标服务器或CDN,确认VPS网卡/宿主机是否有抖动。
3)抓包分析:用 tcpdump -i eth0 host X.X.X.X and port 80 -w dump.pcap,在Wireshark中分析重传、RST或重排序。
4)ISP与机房:若中间跳点丢包,联系VPS提供商或选择延迟更优的机房与线路(比如选择直连国内的CN-NRT/JP-Tokyo节点)。
可配置TCP参数(如tcp_fin_timeout、tcp_tw_recycle/timeout等)与开启BBR拥塞控制,或使用CDN/近端缓存减轻跨境延迟影响。
使用监控系统集中采集指标并结合告警平台发送通知,最好配合自动化脚本进行自愈操作。
1)采集与存储:Prometheus抓指标,Grafana做面板;Zabbix或Datadog也可一体化监控与告警。
2)告警规则:基于短期与长期统计设置阈值(如5mavg、1havg),并按服务重要性分级发送到邮件/Slack/SMS/钉钉。
3)自动化:用Ansible/SSH脚本触发重启、清理缓存、扩容或切换流量,同时在执行前抓取诊断数据并写入事件。
4)演练与回放:定期做故障演练与报警演练,保留事件记录与故障单,以持续优化阈值与SOP。
自动化要慎重,先在灰度环境验证脚本,无条件自动重启可能掩盖根因;告警避免轰炸,设置抑制与分级。