一、引言
在企业级IT架构中,CentOS 7凭借稳定、安全、开源的特性,成为服务器操作系统的主流选择。服务器性能直接决定业务响应速度、系统稳定性和用户体验,一旦出现CPU过载、内存泄漏、磁盘I/O阻塞或网络带宽耗尽等问题,轻则导致服务卡顿,重则引发业务中断。
性能监控是运维工作的核心环节,其价值不仅在于故障发生后快速定位根源 ,更在于建立性能基线、提前识别潜在风险,实现从"被动救火"到"主动防御"的转变。本文面向初级至中级运维工程师、DevOps从业者,聚焦CentOS 7系统内置及易部署的命令行工具,从CPU、内存、磁盘I/O、网络四大核心维度,系统讲解性能监控的方法、工具使用和故障排查思路,帮助读者快速掌握服务器性能评估与问题定位的实战技能。
二、核心监控维度与工具实战
2.1 CPU性能监控
CPU是服务器的"运算大脑",其负载状态直接反映系统处理能力。核心监控指标包括CPU使用率、负载平均值、进程占用率。
2.1.1 实时监控工具:top
top是CentOS 7内置的实时系统监控工具,无需额外安装,直接执行即可查看CPU、内存、进程等关键指标,需root或普通用户权限。
命令格式:
top
关键输出解读:
-
第一行(系统概览):
Cpu(s): 15.7%us, 0.3%sy, 0.0%ni, 83.7%id, 0.0%wa, 0.0%hi, 0.3%si, 0.0%st-
us:用户空间CPU使用率(如应用程序、脚本),过高说明应用占用过多资源; -
sy:内核空间CPU使用率,过高可能是系统调用频繁或内核异常; -
id:空闲CPU百分比,持续低于20%需警惕CPU过载; -
wa:等待I/O的CPU时间百分比,过高表示磁盘I/O存在瓶颈。
-
-
第三行(负载平均值):
load average: 1.20, 0.80, 0.50
分别代表系统1分钟、5分钟、15分钟内的平均负载,建议阈值不超过CPU核心数(例如4核CPU负载平均值长期>4则为过载)。
实战技巧:
-
在
top界面按P键,按CPU使用率从高到低排序进程,快速定位"CPU杀手"进程; -
按
k键输入进程PID,可结束高占用进程(警告:生产环境需谨慎操作,避免误杀核心业务进程)。
2.1.2 简洁监控工具:vmstat
vmstat(Virtual Memory Statistics)可输出CPU、内存、I/O的综合统计数据,适合快速查看系统整体状态,无特殊权限要求。
命令格式(采样间隔2秒,共采样5次):
vmstat 2 5
CPU相关输出:
r b swpd free buff cache si so bi bo in cs us sy id wa st
2 0 0 123456 10240 567890 0 0 5 10 150 300 15 2 82 1 0
-
r:等待运行的进程数,持续大于CPU核心数表示CPU资源不足; -
us/sy/id/wa:与top含义一致。
2.2 内存性能监控
内存是服务器的"临时存储仓库",内存不足会导致系统启用交换分区(swap),引发服务响应缓慢甚至崩溃。核心监控指标包括物理内存使用率、交换分区使用率、内存缓存状态。
2.2.1 基础工具:free
free命令用于查看系统内存和交换分区的使用情况,无特殊权限要求 ,常用参数-h(人类可读格式)。
命令格式:
free -h
输出示例:
r b swpd free buff cache si so bi bo in cs us sy id wa st
2 0 0 123456 10240 567890 0 0 5 10 150 300 15 2 82 1 0
关键指标解读:
-
total:物理内存总容量; -
used:已使用内存容量(包含应用和系统占用); -
free:完全空闲的内存容量; -
buff/cache:内核用于磁盘缓存的内存,这部分内存可被应用程序随时征用,并非真正占用; -
available:实际可被应用程序使用的内存容量(核心参考指标); -
Swap:交换分区使用率,持续高于20%表示物理内存不足,需警惕。
常见误区:
新手常误将buff/cache视为"已占用内存",看到free值小就认为内存不足,实际应重点关注available和Swap使用率。
2.2.2 结合进程:top/ps
若发现内存使用率过高,可通过top按M键按内存使用率排序进程,或使用ps命令定位高内存进程:
命令格式(查看进程内存占用前10名):
ps aux --sort=-%mem | head -10
2.3 磁盘I/O性能监控
磁盘I/O是服务器性能的常见瓶颈,尤其是数据库、文件服务器等场景。核心监控指标包括磁盘使用率、I/O读写速度、I/O等待时间。
2.3.1 磁盘空间监控:df
df命令用于查看文件系统磁盘空间使用情况,无特殊权限要求 ,常用参数-h(人类可读格式)、-i(查看inode使用率)。
命令格式:
df -h
输出示例:
Filesystem Size Used Avail Use% Mounted on /dev/sda1 50G 30G 20G 60% / /dev/sdb1 500G 100G 400G 20% /data
关键指标:
-
Use%:磁盘使用率,建议阈值不超过85%,过高会影响I/O性能,甚至导致无法写入数据; -
若
df -i显示inode使用率100%,即使磁盘空间充足,也无法创建新文件(常见于小文件过多的场景)。
2.3.2 目录大小分析:du
du命令用于查看目录或文件的磁盘占用情况,无特殊权限要求 ,常用参数-h(人类可读)、-s(汇总大小)。
命令格式 (查看/var/log目录总大小):
du -sh /var/log
实战技巧 (查找/data目录下最大的前5个目录):
du -h --max-depth=1 /data | sort -rh | head -5
2.3.3 I/O性能监控:iostat
iostat(Input/Output Statistics)用于监控磁盘I/O的读写性能,需安装sysstat工具包 (yum install -y sysstat),无特殊权限要求。
命令格式(采样间隔2秒,共采样5次,显示扩展信息):
iostat -x 2 5
关键输出解读 (以sda磁盘为例):
Device: rrqm/s wrqm/s rMB/s wMB/s r_await w_await rMB/s wMB/s %util sda 0.00 0.50 0.02 0.10 2.0 5.0 0.02 0.10 1.5
-
rMB/s/wMB/s:每秒磁盘读/写数据量; -
r_await/w_await:读/写请求的平均等待时间(单位:毫秒),过高表示磁盘I/O压力大; -
%util:磁盘设备的繁忙程度,持续高于80%表示磁盘I/O过载(如机械硬盘频繁随机读写、固态硬盘满负载写入)。
2.4 网络性能监控
网络是服务器与外部通信的桥梁,核心监控指标包括网络带宽使用率、连接状态、数据包收发情况。
2.4.1 连接状态监控:ss
ss(Socket Statistics)是netstat的升级版,速度更快、功能更强,无特殊权限要求,常用于查看TCP/UDP连接状态。
命令格式(查看所有TCP连接):
ss -tuln
参数说明:
-
-t:TCP连接; -
-u:UDP连接; -
-l:监听状态的连接; -
-n:以数字形式显示端口和IP,避免DNS解析,提升速度。
实战技巧(查看80端口的连接数):
ss -tuln | grep ":80"
2.4.2 带宽监控:iftop
iftop是实时网络带宽监控工具,可查看每个网卡的流入/流出带宽,以及与外部IP的通信流量,需安装iftop工具包 (yum install -y iftop),需root权限。
命令格式(监控eth0网卡):
iftop -i eth0
关键输出解读:
-
顶部显示带宽刻度;
-
中间列表显示本机与其他IP的实时流量;
-
底部
TX(发送)、RX(接收)、TOTAL(总计)统计带宽使用情况。
2.4.3 数据包监控:netstat(兼容旧习惯)
虽然ss更推荐,但netstat仍被广泛使用,需安装net-tools工具包(yum install -y net-tools)。
命令格式(查看网络接口的数据包收发情况):
netstat -i
三、高级与综合监控工具
3.1 综合视图工具:htop
htop是top的增强版,界面更美观、功能更丰富,支持鼠标操作、进程树查看、颜色标记等,需安装htop工具包 (yum install -y htop)。
核心优势:
-
支持按CPU、内存、进程ID等多维度排序;
-
可直接在界面上杀死进程、修改进程优先级;
-
显示CPU核心数、负载状态等信息,更直观。
3.2 一站式监控工具:nmon
nmon(Nigel's Monitor)是一款免费的开源监控工具,可同时监控CPU、内存、磁盘、网络、进程等指标,支持数据导出为CSV格式,便于后续分析,需安装nmon工具包 (yum install -y nmon)。
使用方法:
-
执行
nmon进入监控界面; -
按对应字母切换监控维度:
-
c:CPU监控; -
m:内存监控; -
d:磁盘监控; -
n:网络监控;
-
-
按
q退出。
3.3 历史数据分析工具:sar
sar(System Activity Reporter)是sysstat工具包的核心组件,可收集、存储、分析系统历史性能数据,需安装sysstat ,默认每天自动收集数据 (存储路径/var/log/sa/)。
核心用法:
- 查看历史CPU数据(查看当天10点的CPU统计,采样间隔10分钟):
sar -u -f /var/log/sa/sa20 10:00:00 10
-
查看历史内存数据:
sar -r -f /var/log/sa/sa20
-
实时收集数据(采样间隔5秒,共采样10次,保存到文件):
sar -n DEV 5 10 -o sar_data.txt
四、自动化监控与平台化建议
4.1 Shell脚本自动化监控
对于中小规模服务器集群,可编写Shell脚本定时收集性能数据,输出报告或发送告警。
示例脚本(监控CPU、内存、磁盘使用率,阈值告警):
#!/bin/bash
# CPU使用率阈值
CPU_THRESHOLD=80
# 内存使用率阈值
MEM_THRESHOLD=85
# 磁盘使用率阈值
DISK_THRESHOLD=85
# 获取CPU使用率(取15分钟负载的近似值,或用top计算)
CPU_USAGE=$(top -b -n 1 | grep "Cpu(s)" | awk '{print $2}' | cut -d'%' -f1 | awk -F. '{print $1}')
# 获取内存使用率
MEM_USAGE=$(free | grep Mem | awk '{print $3/$2 * 100.0}' | awk -F. '{print $1}')
# 获取根分区磁盘使用率
DISK_USAGE=$(df -h / | grep / | awk '{print $5}' | cut -d'%' -f1)
# 告警逻辑
if [ $CPU_USAGE -gt $CPU_THRESHOLD ]; then
echo "告警:CPU使用率过高,当前$CPU_USAGE%"
fi
if [ $MEM_USAGE -gt $MEM_THRESHOLD ]; then
echo "告警:内存使用率过高,当前$MEM_USAGE%"
fi
if [ $DISK_USAGE -gt $DISK_THRESHOLD ]; then
echo "告警:根分区磁盘使用率过高,当前$DISK_USAGE%"
fi
使用方法:
-
保存脚本为
monitor.sh,添加执行权限:chmod +x monitor.sh; -
添加到crontab定时执行(每天整点执行):
0 * * * * /root/monitor.sh >> /var/log/monitor.log 2>&1
4.2 平台化监控推荐
对于大规模服务器集群,建议使用专业监控平台,实现可视化展示、阈值告警、自动扩容等功能:
-
Zabbix:开源免费,功能全面,支持自定义监控项和告警规则;
-
Prometheus + Grafana:云原生监控方案,适合容器化环境,可视化效果优秀;
-
Nagios:老牌监控工具,社区成熟,插件丰富。
五、总结与附录
5.1 核心知识点总结
-
监控核心维度:CPU、内存、磁盘I/O、网络,需结合多工具交叉验证;
-
关键指标阈值:
-
CPU负载平均值 ≤ CPU核心数;
-
内存
available充足,Swap使用率 ≤ 20%; -
磁盘使用率 ≤ 85%,
%util≤ 80%; -
网络无异常丢包,带宽使用率无持续过载。
-
-
故障排查思路 :先看整体状态(
top/vmstat)→ 定位瓶颈维度 → 查找具体进程/设备。
5.2 常用命令速查表
|-------|------------|------------------------------|
| 监控维度 | 核心工具 | 常用命令 |
| CPU | top、vmstat | top、vmstat 2 5 |
| 内存 | free、top | free -h、top -o %MEM |
| 磁盘空间 | df、du | df -h、du -sh /path |
| 磁盘I/O | iostat | iostat -x 2 5 |
| 网络连接 | ss | ss -tuln |
| 网络带宽 | iftop | iftop -i eth0 |
| 历史数据 | sar | sar -u -f /var/log/sa/saXX |
5.3 进一步学习资源
-
《Linux性能优化权威指南》:深入理解Linux性能底层原理;
-
CentOS官方文档:掌握系统配置与调优最佳实践;
-
Zabbix/Prometheus官方文档:学习平台化监控部署与配置。
六、写在最后
服务器性能监控是一项持续的工作,没有一劳永逸的方案。运维人员需要结合业务场景,建立适合自己的监控体系,不断积累实战经验。希望本文能帮助你夯实CentOS 7性能监控的基础,从容应对各类系统性能问题。