学会linux系统监控,你的系统能有问题?

本文详细介绍了Linux系统中的监控工具,包括top、mpstat、free、vmstat、iostat、netstat、df和iostat等,用于CPU、内存、磁盘I/O、网络和进程的监控。通过这些工具,可以实时查看系统资源使用情况,诊断性能瓶颈,确保系统稳定运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

linux系统监控工具

cpu和进程监控:

top:实时监控系统中的各个进程资源占用情况以及总体情况

在这里插入图片描述

Tasks: 显示进程总数,当前运行的进程数
Load average:显示的是系统的1分钟,5分钟,10分钟的平均负载情况
Uptime: 显示系统运行了多长时间
PID:系统的进程号
USER:发起该进程的用户名
PRI:进程优先级
NI:进程优先级的数值
VIRT:进程占用的虚拟内存
RES:进程占用占用的物理内存
S:进程的运行情况(R:运行;S:休眠;Z:僵死;N:进程优先级为负数)
%CPU进程占用的CPU使用率
%MEM:此进程占用的物理内存和总内存的百分比
TIME+:启动进程后占用CPU的累计时长
Command:进程启动的启动命令名称即路径

mpstat实时监控工具,cpu相关的统计信息

格式: mpstat -P ALL 2

ALL表示显示所有CPUs,也可以指定某个CPU;2表示刷新间隔。

在这里插入图片描述

%user: 在internal时间段里,用户态的CPU时间(%),不包含nice值为负进程 (usr/total)*100
%nice: 在internal时间段里,nice值为负进程的CPU时间(%) (nice/total)*100
%sys: 在internal时间段里,内核时间(%) (system/total)*100
%iowait: 在internal时间段里,硬盘IO等待时间(%) (iowait/total)*100
%irq: 在internal时间段里,硬中断时间(%) (irq/total)*100
%soft: 在internal时间段里,软中断时间(%) (softirq/total)*100
%idle: 在internal时间段里,CPU除去等待磁盘IO操作外的因为任何原因而空闲的时间闲置时间(%) (idle/total)*100

内存监控:

free:查看内存的使用情况

在这里插入图片描述

total:物理内存大小,就是机器实际的内存
used:已使用的内存大小,这个值包括了 cached 和 应用程序实际使用的内存
free:未被使用的内存大小
shared:共享内存大小,是进程间通信的一种方式
buffers:被缓冲区占用的内存大小(读缓存)
cached:被缓存占用的内存大小(写缓存)vmstat:对系统的整体情况进行统计,包括内核进程、虚拟内存、磁盘、陷阱和 CPU 活动的统计信息

在这里插入图片描述

procs
 r列表示运行和等待CPU时间片的进程数,这个值如果长期大于系统CPU个数,就说明CPU资源不足,可以考虑增加CPU;
 b列表示在等待资源的进程数,比如正在等待I/O或者内存交换等。
memory
 swpd列表示切换到内存交换区的内存数量(以KB为单位)。如果swpd的值不为0或者比较大,而且si、so的值长期为0,那么这种情况一般不用担心,不会影响系统性能;
 free列表示当前空闲的物理内存数量(以KB为单位);
 buff列表示buffers cache的内存数量,一般对块设备的读写才需要缓冲;
 cache列表示page cached的内存数量,一般作文件系统的cached,频繁访问的文件都会被cached。如果cached值较大,就说明cached文件数较多。如果此时IO中的bi比较小,就说明文件系统效率比较好。
swap
 si列表示由磁盘调入内存,也就是内存进入内存交换区的数量;
 so列表示由内存调入磁盘,也就是内存交换区进入内存的数量
 一般情况下,si、so的值都为0,如果si、so的值长期不为0,则表示系统内存不足,需要考虑是否增加系统内存。
IO
 bi列表示从块设备读入的数据总量(即读磁盘,单位KB/秒)
 bo列表示写入到块设备的数据总量(即写磁盘,单位KB/秒)
 这里设置的bi+bo参考值为1000,如果超过1000,而且wa值比较大,则表示系统磁盘IO性能瓶颈。
system
 in列表示在某一时间间隔中观察到的每秒设备中断数;
 cs列表示每秒产生的上下文切换次数。
 上面这两个值越大,会看到内核消耗的CPU时间就越多。
CPU
 us列显示了用户进程消耗CPU的时间百分比。us的值比较高时,说明用户进程消耗的CPU时间多,如果长期大于50%,需要考虑优化程序啥的。
 sy列显示了内核进程消耗CPU的时间百分比。sy的值比较高时,说明内核消耗的CPU时间多;如果us+sy超过80%,就说明CPU的资源存在不足。
 id列显示了CPU处在空闲状态的时间百分比;
 wa列表示IO等待所占的CPU时间百分比。wa值越高,说明IO等待越严重。如果wa值超过20%,说明IO等待严重。
 st列一般不关注,虚拟机占用的时间百分比。

网络监控

sar: 用来收集、报告和保存CPU、内存、输入输出端口使用情况的命令。SAR命令可以动态产生报告,也可以把报告保存在日志文件中。

命令格式:sar -n DEV 3 100

在这里插入图片描述

IFACE:网络设备的名称
rxpck/s:每秒钟接收到包数目
txpck/s:每秒钟发送出去包数目
rxkB/s:每秒钟接收到的字节数
txkB/s:每秒钟发送出去的字节数

netstat:用于检验本机各端口的网络连接情况,用于显示与IP、TCP、UDP和ICMP协议相关的统计数据。

参数:

-a, --all, --listening 显示所有连接中的Socket。
-n, --numeric 以数字形式显示地址和端口号。
-t, -–tcp 显示TCP传输协议的连线状况。
-u, -–udp 显示UDP传输协议的连线状况。
-p, --programs 显示正在使用socket的程序名/进程ID
-l, --listening 显示监控中的服务器的Socket。
-o, --timers 显示计时器。
-s, --statistics 显示每个网络协议的统计信息(比如SNMP)
-i, --interfaces 显示网络界面信息表单(网卡列表)
-r, --route 显示路由表

常用的集中1列子

netstat -aup # 输出所有UDP连接状况
​ netstat -atp # 输出所有TCP连接状况
netstat -s # 显示各个协议的网络统计信息
netstat -i # 显示网卡列表
netstat -r # 显示路由表信息
在这里插入图片描述

Iface:网络接口名称
MTU:最大传输单元
RX-OK:接收时,正确的数据包数
RX-ERR:接收时,产生错误的数据包数
RX-DRP:接收时,丢弃的数据包数
RX-OVR:接收时,由于过速而丢失的数据包数
TX-OK:发送时,正确的数据包数
TX-ERR:发送时,产生错误的数据包数
TX-DRP:发送时,丢弃的数据包数
TX-OVR:发送时,由于过速而丢失的数据包数
Flg:标志
   B  已经设置了一个广播地址
   L 该接口是一个回送设备
   M 接收所有的数据包(混乱模式)
   O 在该接口上,禁用ARP
   P 这是一个点到点连接
   R 接口正在运行
   U 接口处于"活动"状态

磁盘监控

df:是用来检查linux的文件系统的磁盘空间占用情况。

在这里插入图片描述

参数

  • -a 全部文件系统列表
  • -h 以方便阅读的方式显示
  • -i 显示inode信息
  • -T 显示文件系统类型
  • -l 只显示本地文件系统
  • -k 以KB为单位
  • -m 以MB为单位

iostat主要是用来监控磁盘I/O

iostat -x -k 2 100 # 2

在这里插入图片描述

r/s: 每秒完成的读 I/O 设备次数。
w/s: 每秒完成的写 I/O 设备次数。
rkB/s: 每秒读K字节数.是 rsect/s 的一半,因为每扇区大小为512字节。
wkB/s: 每秒写K字节数.是 wsect/s 的一半。
avgrq-sz: 平均每次设备I/O操作的数据大小 (扇区)。
avgqu-sz: 平均I/O队列长度。
await: 平均每次设备I/O操作的等待时间 (毫秒)。
svctm: 平均每次设备I/O操作的服务时间 (毫秒)。
%util: 一秒中有百分之多少的时间用于 I/O 操作,或者说一秒中有多少时间 I/O 队列是非空的。

iotop: 一个用来监视磁盘I/O使用状况的top类工具

参数

  • –version 查看程序版本号
  • -h, –help 查看帮助信息
  • -o, –only 只查看有IO操作的进程
  • -b, –batch 非交互模式
  • -n, –iter= 设置迭代次数
  • -d, –delay 刷新频率,默认是1秒
  • -p, –pid 查看指定的进程号的IO,默认是所有进程
  • -u, –user 查看指定用户进程的IO,默认是所有用户
  • -P, –processes 只看进程,不看线程
  • -a, –accumulated 看累计IO,而不是实时IO
  • -k, –kilobytes 以KB为单位查看IO,而不是以最友好的单位显示
  • -t, –time 每行添加一个时间戳,默认便开启–batch
  • -q, –quit 不显示头部信息

在这里插入图片描述

P, –processes 只看进程,不看线程

  • -a, –accumulated 看累计IO,而不是实时IO
  • -k, –kilobytes 以KB为单位查看IO,而不是以最友好的单位显示
  • -t, –time 每行添加一个时间戳,默认便开启–batch
  • -q, –quit 不显示头部信息
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值