CentOS 虚拟机系统监控实操指南
一 快速排障与内置工具
- 实时资源与进程:使用 top/htop 查看 CPU、内存、负载、进程;安装 htop 可用命令:sudo yum install htop,运行 htop。
- 磁盘与空间:使用 df -h 检查文件系统使用率;du -sh /path 定位大目录。
- 内核与系统日志:使用 dmesg 查看内核环形缓冲;查看系统日志 /var/log/messages 或 journalctl -xe 获取更详细事件。
- 虚拟机生命周期与基本信息(宿主机为 KVM 时):virsh list --all、virsh dominfo 可查看状态、内存、CPU 分配等,用于核对监控结果与资源规划。
以上工具适合在虚拟机内部快速判断“当前是否异常、哪里异常”。
二 宿主机侧 KVM 与 Virtual Machine Manager 监控
- 图形化查看:在 Virtual Machine Manager 选中虚拟机,进入“虚拟机详细信息 → 性能”,可同时查看 CPU、内存、磁盘 I/O、网络 I/O 等图表,便于与基线对比。
- 深度性能分析:在宿主机安装 perf,并使用 perf kvm 对虚拟机进行事件记录与报告。为获取符号信息,先从客体复制 /proc/modules 与 /proc/kallsyms 到宿主机(注意直接 scp 会得到空文件,需先在客体用 cat 写入临时文件再拷贝),然后执行记录/报告,定位 vCPU、内核路径 等热点。
- 虚拟化特性与调优关联:结合 vPMU、vhost-net、SR-IOV、virtio-scsi 多队列、I/O 节流、大页与 KSM、NUMA 等特性进行监控与对照,有助于解释异常指标背后的虚拟化瓶颈。
该层面适合定位“宿主机与虚拟化层”的资源争用与配置问题。
三 集中监控与可视化方案
- 轻量开源栈 collectd + InfluxDB + Grafana:在宿主机或客体部署 collectd(启用 collectd-virt 插件通过 libvirt API 采集),将数据写入 InfluxDB,再用 Grafana 做面板展示与告警阈值设置,覆盖 CPU、内存、磁盘、网络 等核心指标。
- 企业级 Zabbix:在监控服务器安装 Zabbix Server/Web,在 CentOS 客体部署 Zabbix Agent 并配置 Server=监控服务器IP,通过 Web 界面添加主机与服务、查看事件与图形。
- 日志集中与可视化:使用 ELK(Elasticsearch/Logstash/Kibana) 或 Splunk 收集与分析 /var/log/ 与业务日志,实现故障回溯与趋势分析。
上述方案适合多台虚拟机的统一监控、告警与可视化运维。
四 监控项与阈值建议
| 维度 |
关键指标 |
常用命令或来源 |
建议阈值或关注点 |
| CPU |
使用率、负载 |
top/vmstat 1 |
持续 >80% 或负载接近/超过 vCPU 数 需排查 |
| 内存 |
已用、可用、swap |
free -m、vmstat 1 |
swap 持续 >0 可能内存紧张;关注 available |
| 磁盘 |
使用率、IOPS、延迟 |
df -h、iostat -x 1 |
使用率 >80% 预警;await、r_await、w_await 明显升高需看 I/O |
| 网络 |
带宽、丢包、错包 |
sar -n DEV 1、ip -s link |
带宽接近上限、错包/丢包增长需排查虚拟网卡与物理链路 |
| 内核 |
OOM、异常重启 |
dmesg、journalctl |
出现 OOM-killer、异常重启、内核告警需优先处理 |
五 快速上手步骤
- 在虚拟机内建立“基线”:记录日常 CPU/内存/磁盘/网络 的典型值,保存 dmesg 与关键日志片段。
- 安装本地工具:部署 htop、sysstat(sar/iostat),便于持续采样与回溯。
- 若运行在 KVM 上:用 Virtual Machine Manager 观察性能页,必要时在宿主机用 perf kvm 做热点定位。
- 需要统一视图与告警:先部署 collectd + InfluxDB + Grafana 快速上线;规模扩大后迁移到 Zabbix 或加入 ELK/Splunk 做日志分析。