
监控系统负载系统负载介绍系统负载平均值Linux内核以活动请求数的指数移动平均值来表示。活动请求数不仅包含运行中进程还包含等待IO的进程对应于R和D。等待IO包括处于睡眠等待预期磁盘和网络响应的任务。指数移动平均值是一个数学公式可以平滑趋势数据的高值和低值更加准确地表示一段时间内系统负载并确定系统负载是随着时间增加还是减少。根据所有CPU活动请求数每5秒计算一次Load Average。通过汇总这些值可以得到最近1分钟5分钟和15分钟内的指数移动平均值。一些UNIX系统仅考虑CPU使用率或运行队列长度。Linux中负载平均值中还包含了对IO的考量遇到负载平均值很高但CPU活动很低时检查磁盘和网络活动。Linux将各个物理CPU核心和微处理器超线程计为独立执行单元。每个独立的执行单元拥有独立的请求队列。查看系统负载# 查看CPU[cywcentos7 ~16:46:42]$ lscpu Architecture: x86_64 CPU op-mode(s):32-bit,64-bit Byte Order: Little Endian CPU(s):2#CPU数量为2On-line CPU(s)list:0,1Thread(s)per core:1Core(s)per socket:1座2NUMA 节点1厂商 ID GenuineIntel CPU 系列6型号158型号名称 Intel(R)Core(TM)i5-7300HQ CPU 2.50GHz 步进9CPU MHz2496.000BogoMIPS4992.00超管理器厂商 VMware 虚拟化类型 完全 L1d 缓存 32K L1i 缓存 32K L2 缓存 256K L3 缓存 6144K...# 查看负载[cywcentos7 ~16:52:01]$uptime16:52:18 up3:25,4users, load average:0.00,0.15,0.82# 给系统加负载[cywcentos7 ~16:53:05]$ md5sum /dev/zero[1]11840[cywcentos7 ~16:53:17]$ md5sum /dev/zero[2]11841# 等30秒左右[cywcentos7 ~16:54:08]$uptime16:54:18 up3:27,4users, load average:1.24,0.45,0.84负载解读示例4核心的CPU负载为 2.92 4.48 5.20每个cpu负载为0.73(2.92/4) 1.12(4.48/4) 1.30(5.20/4)比较理想的值为 75% 左右。top 命令作用动态查看进程信息包括不同状态任务数量CPU消耗和内存消耗。top命令快捷键常用的命令数字1PMkqh。stress 工具Linux 中的stress工具用于对系统进行压力测试可模拟 CPU、内存、I/O 和磁盘等资源的高负载状态。通过指定参数如-c压 CPU、-m压内存可创建负载帮助发现系统在压力下的稳定性问题常用于性能调优或硬件验证。# 安装[rootcentos7 ~ 08:36:25]# yum install -y stress# 查看帮助信息[rootcentos7 ~10:14:27]# stress --helpstress imposes certain types of compute stress on your system Usage: stress[OPTION[ARG]]... -?,--helpshow thishelpstatement--versionshow version statement -v,--verbosebe verbose -q,--quietbe quiet -n, --dry-run show what would have beendone-t,--timeoutNtimeoutafter N seconds--backoffNwaitfactor of N microseconds before work starts -c,--cpuN spawn N workers spinning on sqrt()-i,--ioN spawn N workers spinning on sync()-m,--vmN spawn N workers spinning on malloc()/free()--vm-bytes B malloc B bytes per vm worker(default is 256MB)--vm-stride Btoucha byte every B bytes(default is4096)--vm-hang NsleepN secs beforefree(default none,0is inf)--vm-keep redirty memory instead of freeing and reallocating -d,--hddN spawn N workers spinning on write()/unlink()--hdd-bytes BwriteB bytes per hdd worker(default is 1GB)Example: stress--cpu8--io4--vm2--vm-bytes 128M--timeout10s Note: Numbers may be suffixed with s,m,h,d,y(time)or B,K,M,G(size).压力测试-CPU# 消耗2个CPU[rootcentos7 ~10:24:32]# stress -c 2stress: info:[4405]dispatching hogs:2cpu,0io,0vm,0hdd# top 监控[rootcentos7 ~10:30:54]# toptop-10:32:49 up2:00,3users, load average:0.10,0.13,0.09Tasks:229total,1running,228sleeping,0stopped,0zombie %Cpu(s):0.2us,0.2sy,0.0ni,99.5id,0.0wa,0.0hi,0.2si,0.0st KiB Mem:4026120total,1903396free,880020used,1242704buff/cache KiB Swap:4063228total,4063228free,0used.2883044avail Mem PIDUSERPR NI VIRT RES SHR S %CPU %MEM TIME COMMAND4416root20016210023801588R0.70.10:00.43top736root20029556452604040S0.30.10:19.25 vmtoolsd2554cyw2006266722826421548S0.30.70:18.50 vmtoolsd...压力测试-内存# 消耗前内存[rootcentos7 ~10:32:53]# free -mtotal usedfreeshared buff/cache available Mem:393185818592212132816Swap:396703967# 消耗 1G 内存[rootcentos7 ~10:33:41]# stress -m 1 --vm-bytes 1Gstress: info:[4444]dispatching hogs:0cpu,0io,1vm,0hdd# 消耗后内存[rootcentos7 ~10:34:53]# free -mtotal usedfreeshared buff/cache available Mem:393185718602212132816Swap:396703967压力测试-磁盘# 消耗磁盘IO[rootcentos7 ~10:38:04]# stress -d 1 --hdd-bytes 2Gstress: info:[4490]dispatching hogs:0cpu,0io,0vm,1hdd# 监视活动状态百分比%util[rootcentos7 ~10:38:24]# yum install -y sysstat iotop# 监控磁盘读写速度重点关注rd_sec/s和wr_sec/s单位是0.5k/每秒,每个secsector是512Byte。[rootcentos7 ~10:39:10]# sar -dp 1Linux3.10.0-1160.71.1.el7.x86_64(centos7.cyw)2026年07月22日 _x86_64_(2CPU)10时39分43秒 DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util10时39分44秒 sr00.000.000.000.000.000.000.000.0010时39分44秒 sda0.000.000.000.000.000.000.000.0010时39分44秒 centos-root0.000.000.000.000.000.000.000.0010时39分44秒 centos-swap0.000.000.000.000.000.000.000.0010时39分44秒 centos-home0.000.000.000.000.000.00...# 监控进程读写左右方向键调整排序列 代表当前排序列[rootcentos7 ~10:40:16]# iotopTotal DISK READ:0.00B/s|Total DISK WRITE:0.00B/s Actual DISK READ:0.00B/s|Actual DISK WRITE:1974.30B/s TID PRIOUSERDISK READ DISK WRITE SWAPIN IOCOMMAND1be/4 root0.00B/s0.00B/s0.00%0.00% systemd --swit~deserialize222be/4 root0.00B/s0.00B/s0.00%0.00%[kthreadd]4be/0 root0.00B/s0.00B/s0.00%0.00%[kworker/0:0H]6be/4 root0.00B/s0.00B/s0.00%0.00%[ksoftirqd/0]7rt/4 root0.00B/s0.00B/s0.00%0.00%[migration/0]...网络测试# 传送一个大size的文件[rootcentos7 ~10:43:15]# wget http://192.168.50.200/course-materials/iso/CentOS-7-x86_64-DVD-2207-02.iso--2026-07-2210:44:38-- http://192.168.50.200/course-materials/iso/CentOS-7-x86_64-DVD-2207-02.iso 正在连接192.168.50.200:80... 已连接。 已发出 HTTP 请求正在等待回应...200OK 长度4746903552(4.4G)[application/octet-stream]正在保存至: “CentOS-7-x86_64-DVD-2207-02.iso”16%[]772,700,15428.5MB/s 剩余 6m 37s ^C# 监控带宽[rootcentos7 ~10:45:24]# sar -n DEV 1Linux3.10.0-1160.71.1.el7.x86_64(centos7.cyw)2026年07月22日 _x86_64_(2CPU)10时45分38秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s10时45分39秒 lo0.000.000.000.000.000.000.0010时45分39秒 virbr0-nic0.000.000.000.000.000.000.0010时45分39秒 virbr00.000.000.000.000.000.000.0010时45分39秒 ens3327565.001273.0040070.3775.320.000.000.00监控总结以下是针对 Linux 系统监控的几条实用建议涵盖关键监控维度和最佳实践核心指标实时监控重点跟踪 CPU 使用率用户态 / 系统态占比、内存占用含缓存 /swap 使用率、磁盘 I/O读写吞吐量、IOPS和网络流量带宽利用率、连接数。可通过top/htop实时、vmstat/iostat系统级等工具快速查看。部署专业监控工具对于服务器集群或长期监控需求建议使用 Prometheus Grafana可视化强、Zabbix全功能监控或 Nagios轻量告警等工具实现指标集中收集、趋势分析和历史数据查询。设置关键阈值告警针对核心指标配置告警阈值如 CPU 持续 5 分钟超 80%、磁盘空间不足 10%通过邮件、短信或即时通讯工具推送告警避免故障扩大。注意避免告警风暴可设置告警合并或延迟。监控进程与服务状态定期检查关键服务如 Nginx、MySQL的运行状态、进程数及资源消耗可通过systemctl status或自定义脚本实现。对异常退出的进程结合日志排查崩溃原因。日志集中管理与分析将系统日志/var/log/messages、应用日志集中存储如使用 ELK 栈关注错误信息ERROR级别、登录异常/var/log/auth.log和磁盘错误dmesg | grep error必要时配置日志告警规则。磁盘健康监控除空间使用率外需关注磁盘坏块smartctl工具检测 S.M.A.R.T 信息和文件系统完整性定期运行fsck非挂载状态下避免硬件故障导致数据丢失。网络与安全监控监控端口开放状态netstat/ss、异常连接尤其是外部 IP 的高频访问和防火墙规则生效情况。可结合tcpdump抓包分析可疑流量。定期性能基线分析记录系统正常运行时的指标基线如平均负载、内存使用峰值当指标偏离基线时及时排查避免微小异常累积成故障。自动化监控脚本对个性化需求如特定目录文件数、应用响应时间编写 Shell 或 Python 脚本定期执行检查输出结果至监控系统或直接触发告警。监控权限与安全限制监控工具的权限如仅授予读取日志和指标的权限加密传输监控数据防止监控系统本身成为安全薄弱点。通过分层监控基础指标→服务状态→业务性能和主动预警可显著提升系统稳定性和故障响应效率。