在开始之前请大家一定一定一定要注意:
1.命令中CPU各信息具体代表的含义;
2.监测系统情况的命令,务必在压力开始前执行,在压力结束后等待适当时间再结束,整个过程中出现数量极少的最高值和最低值,在不影响系统实际运行的情况下,不建议采用;
3.务必避免直接键入“mpstat”这种写法,有效的测试结果一定要写两个数字参数,应为”mpstat 1 10“(如长时间查看,可适当修改);
4.长时间监测的可重定位到文件,有些命令支持输出到文件,如sar/dstat等,跑一晚上第二天查看log,减少等待;
5.每个命令有很多扩展参数,这里只简单介绍命令,扩展请自行摆渡;
6.现在的图形监控工具多种多样,支持配置之后一键监控,能生成图形及报表,本文只分享工作中使用到的监控相关命令,大家可根据需要自行选择。
1. iostat
主要用于对系统I/O的查看
iostat 1 10 //每秒输出一条,共计输出十次
[test@localhost ~]$ iostat 1 10
Linux 2.6.32-642.el6.x86_64 (localhost.localdomain) 09/02/2019 _x86_64_ (1 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.08 0.00 0.42 0.02 0.00 99.47
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
sda 0.45 4.09 7.15 842732 1474194
说明:
avg-cpu: 总体cpu使用情况统计信息,对于多核cpu,这里为所有cpu的平均值
%user: 在用户级别运行所使用的CPU的百分比.
%nice: nice操作所使用的CPU的百分比.
%sys: 在系统级别(kernel)运行所使用CPU的百分比.
%iowait: CPU等待硬件I/O时,所占用CPU百分比.
%idle: CPU空闲时间的百分比.
Device段:各磁盘设备的IO统计信息
tps: 每秒钟发送到的I/O请求数.
Blk_read /s: 每秒读取的block数.
Blk_wrtn/s: 每秒写入的block数.
Blk_read: 读入的block总数.
Blk_wrtn: 写入的block总数.
2.vmstat
实际内容包含大部分常规参数,从cpu到mem到swap基本足够了。
[test@localhost ~]$ vmstat 1 10
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
2 0 0 197172 173600 312828 0 0 2 4 50 73 0 0 99 0 0
0 0 0 197124 173600 312828 0 0 0 0 74 109 2 0 98 0 0
0 0 0 197124 173600 312828 0 0 0 0 57 75 2 1 97 0 0
0 0 0 197132 173600 312828 0 0 0 0 74 105 1 0 99 0 0
0 0 0 197008 173600 312828 0 0 0 0 72 75 2 1 97 0 0
0 0 0 197008 173600 312828 0 0 0 0 61 90 2 1 97 0 0
0 0 0 197008 173608 312828 0 0 0 56 62 72 1 1 98 0 0
0 0 0 197008 173608 312828 0 0 0 0 73 112 2 0 98 0 0
0 0 0 197008 173608 312828 0 0 0 0 65 76 2 2 96 0 0
0 0 0 197008 173608 312828 0 0 0 0 116 272 4 0 96 0 0
说明:
r 列表示运行和等待cpu时间片的进程数
b 列表示在等待资源的进程数,比如正在等待I/O、或者内存交换等。
us 列显示了用户方式下所花费 CPU 时间的百分比。
sy 列显示了内核进程所花费的cpu时间的百分比
wa 列显示了IO等待所占用的CPU时间的百分比。
id 列显示了cpu处在空闲状态的时间百分比
in 列表示在某一时间间隔中观测到的每秒设备中断数。
cs列表示每秒产生的上下文切换次数
swpd 切换到内存交换区的内存数量(k表示)。
free 当前的空闲页面列表中内存数量(k表示)
buff 作为buffer cache的内存数量
cache: 作为page cache的内存数量
si 由内存进入内存交换区数量。
so由内存交换区进入内存数量。
bi 从块设备读入数据的总量(读磁盘)(每秒kb)。
bo 块设备写入数据的总量(写磁盘)(每秒kb)
3.sar
sar命令比较强大,包含了I/O、CPU、mem、swap、inode等信息,一般的监控足够了。
具体使用可以参考:https://www.cnblogs.com/liyongsan/p/7459523.html
[test@localhost ~]$ sar 1
Linux 2.6.32-642.el6.x86_64 (localhost.localdomain) 09/02/2019 _x86_64_ (1 CPU)
07:44:25 PM CPU %user %nice %system %iowait %steal %idle
07:44:26 PM all 2.04 0.00 3.06 0.00 0.00 94.90
07:44:27 PM all 0.00 0.00 5.05 0.00 0.00 94.95
07:44:28 PM all 1.01 0.00 3.03 0.00 0.00 95.96
07:44:29 PM all 2.00 0.00 6.00 0.00 0.00 92.00
4.mpstat
针对多个CPU的查看
[test@localhost ~]$ mpstat 1
Linux 2.6.32-642.el6.x86_64 (localhost.localdomain) 09/02/2019 _x86_64_ (1 CPU)
07:49:46 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle
07:49:47 PM all 1.98 0.00 0.00 0.00 0.00 0.99 0.00 0.00 97.03
07:49:48 PM all 1.01 0.00 1.01 0.00 0.00 0.00 0.00 0.00 97.98
07:49:49 PM all 2.00 0.00 0.00 0.00 0.00 1.00 0.00 0.00 97.00
07:49:50 PM all 2.00 0.00 1.00 0.00 0.00 0.00 0.00 0.00 97.00
07:49:51 PM all 2.02 0.00 0.00 0.00 0.00 0.00 0.00 0.00 97.98
5.top
top应该是日常使用最多的命令,可以查看当前系统中所有进程执行过程中,对系统资源的占用。
[test@localhost ~]$ top
top - 20:07:00 up 2 days, 10:22, 2 users, load average: 0.45, 0.66, 0.35
Tasks: 141 total, 2 running, 139 sleeping, 0 stopped, 0 zombie
Cpu(s): 5.6%us, 1.0%sy, 0.0%ni, 93.0%id, 0.0%wa, 0.0%hi, 0.3%si, 0.0%st
Mem: 1012080k total, 812600k used, 199480k free, 174108k buffers
Swap: 2031612k total, 0k used, 2031612k free, 312896k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2180 root 20 0 190m 44m 11m R 6.3 4.5 1:50.35 Xorg
11409 test 20 0 290m 14m 9748 S 2.0 1.4 0:12.42 gnome-terminal
24 root 20 0 0 0 0 S 0.3 0.0 1:19.74 ata_sff/0
6.dstat
dstat是我使用过最强大的监控命令,安装盘中自带,但未必会自动安装。里面使用方式多种多样,每个参数均可细化,能够自行定制并输出到文件。下面是我在测试过程中使用的格式。
dstat -t --top-io-adv --top-bio-adv -n
常用参数:
-c cpu,显示CPU系统占用,用户占用,空闲,等待,中断,软件中断等信息
-C 当有多个CPU时候,此参数可按需分别显示cpu状态
-d disk,显示磁盘读写数据大小
-n net 显示网络状态
-N net 有多块网卡时,指定要显示的网卡
-l load average 显示系统负载情况
-m memory 显示内存使用情况
-g page 显示页面使用情况
-p process 显示进程状态
-y system status
--ipc 显示ipc消息队列,信号等信息
--socket 用来显示tcp udp端口状态
-v vmstat 等同于 -pmgdsc -D total
--output 文件名 支持将状态信息以csv的格式重定向到指定的文件中
-r I/O请求情况
-s swap 显示交换分区使用情况
7.netstat
显示网络连接情况
可以区分呈现TCP/UDP、端口信息,用于排查网络问题。
https://www.cnblogs.com/ftl1012/p/netstat.html
8.watch
周期性查看命令执行结果。
watch命令之所以写在这里,基于它可以定时呈现的特点。例如定时显示系统磁盘空间:
#每5秒刷新一次fdisk -l命令,并高亮显示数字变化
watch -d -n 5 "fdisk -l"
#每2秒查看一次某进程的内存占用情况
watch -d "cat /proc/[进程号]/status grep VmRSS"
9.其它
9.1w
显示目前登入系统的用户信息。
9.2fdisk -l
查看系统空间命令,需要实时呈现可以考虑结合”8.watch“
9.3 查看负载
#查看用户数及平均负载
uptime
#查看负载
watch -d 'cat /proc/loadavg
sar -q 1