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 不显示头部信息