linux系统管理工具sar
- 监控网卡流量
#sar -n DEV 1 1 (1秒内取1次)
Linux 3.10.0-123.9.3.el7.x86_64 (iZ25wvw5wozZ) 01/22/2018 _x86_64_ (16 CPU)
03:08:01 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
03:08:02 PM cni0 0.00 0.00 0.00 0.00 0.00 0.00 0.00
03:08:02 PM eth0 911.00 740.00 209.74 244.55 0.00 0.00 0.00
03:08:02 PM eth1 0.00 64.00 0.00 67.41 0.00 0.00 0.00
03:08:02 PM lo 13.00 13.00 0.69 0.69 0.00 0.00 0.00
03:08:02 PM flannel.1 0.00 0.00 0.00 0.00 0.00 0.00 0.00
03:08:02 PM docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Average: IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
Average: cni0 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Average: eth0 911.00 740.00 209.74 244.55 0.00 0.00 0.00
Average: eth1 0.00 64.00 0.00 67.41 0.00 0.00 0.00
Average: lo 13.00 13.00 0.69 0.69 0.00 0.00 0.00
Average: flannel.1 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Average: docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00
注:sar -n DEV 查看当前服务器的网络流量信息 rxpck/s: 每秒收包的数量 txpck/s: 每秒发包的数量
说明: (1)rxpck/s:每秒钟收到数据包的数量. (2)txpck/s:每秒钟发送数据包的数量. (3)rxkB/s:每秒钟接收的字节(KB). (4)txkB/s:每秒钟发送的字节(KB). (5)rxcmp/s:每秒收到的压缩包的数量 (6)txcmp/s:每秒发出的压缩包的数量 (7)rxmcst/s:每秒收到的广播包的数量 网络设备的数据来源于/proc/net/dev. 我这里尝试用ssh的压缩功能进行传输,结果也没看到压缩包的数量有变化.
- 监控cpu资源
#sar 1 (将所有CPU合并到一起进行监控)
03:08:57 PM CPU %user %nice %system %iowait %steal %idle
03:08:58 PM all 5.47 0.00 5.97 2.58 0.06 85.91
03:08:59 PM all 5.85 0.00 6.29 2.33 0.06 85.46
03:09:00 PM all 4.76 0.00 6.27 1.57 0.06 87.34
03:09:01 PM all 6.67 0.00 6.17 1.83 0.13 85.21
03:09:02 PM all 4.97 0.00 6.35 1.32 0.06 87.30
03:09:03 PM all 4.47 0.00 6.30 0.00 0.06 89.17
03:09:04 PM all 3.95 0.00 5.71 0.00 0.06 90.27
。。。。。
03:09:07 PM all 3.87 0.00 6.08 0.00 0.55 89.50
Average: all 4.92 0.00 6.04 0.97 0.07 88.01
#sar -P ALL 1 1 (可以显示每个CPU现在的负载)
03:10:08 PM CPU %user %nice %system %iowait %steal %idle
03:10:09 PM all 6.21 0.00 6.65 3.32 0.13 83.69
03:10:09 PM 0 30.21 0.00 10.42 52.08 0.00 7.29
03:10:09 PM 1 8.00 0.00 1.00 2.00 0.00 89.00
03:10:09 PM 2 4.00 0.00 1.00 0.00 0.00 95.00
03:10:09 PM 3 0.00 0.00 0.00 0.00 0.00 100.00
03:10:09 PM 4 1.98 0.00 0.99 0.00 0.99 96.04
03:10:09 PM 5 3.00 0.00 1.00 0.00 0.00 96.00
03:10:09 PM 6 2.00 0.00 1.00 0.00 0.00 97.00
03:10:09 PM 7 14.14 0.00 85.86 0.00 0.00 0.00
Average: CPU %user %nice %system %iowait %steal %idle
Average: all 6.21 0.00 6.65 3.32 0.13 83.69
Average: 0 30.21 0.00 10.42 52.08 0.00 7.29
Average: 1 8.00 0.00 1.00 2.00 0.00 89.00
Average: 2 4.00 0.00 1.00 0.00 0.00 95.00
Average: 3 0.00 0.00 0.00 0.00 0.00 100.00
Average: 4 1.98 0.00 0.99 0.00 0.99 96.04
Average: 5 3.00 0.00 1.00 0.00 0.00 96.00
Average: 6 2.00 0.00 1.00 0.00 0.00 97.00
Average: 7 14.14 0.00 85.86 0.00 0.00 0.00
说明:%user,%system,%iowait,%idle分别表示用户态进程占用CPU百分比,系统态进程占用CPU百分比,CPU等待IO百分比,CPU空闲百分比。 重点说%nice和%steal,这是vmstat所没有的. %nice:如果一个程序在运行时用nice调整它的优先级,且优先级在1-19之间,并且是用户态的进程,这时%nice才会体现出来,%steal:一般在运行虚拟机的宿主机才用到,比如xen,QEMU,Bochs等等。
- 监控内存资源
#sar -r 1
03:20:55 PM kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit kbactive kbinact kbdirty
03:20:56 PM 1754084 14239212 89.03 204100 2997052 25525216 159.60 12852348 805468 0
03:20:57 PM 1753824 14239472 89.03 204100 2997456 25525216 159.60 12852572 805740 0
03:20:58 PM 1753668 14239628 89.03 204100 2997704 25525216 159.60 12852640 805904 0
03:20:59 PM 1753200 14240096 89.04 204108 2997936 25525216 159.60 12852728 806048 0
03:21:00 PM 1752548 14240748 89.04 204108 2998116 25525176 159.60 12852812 806244 0
03:21:01 PM 1751756 14241540 89.05 204108 2998868 25525176 159.60 12853020 806808 0
。。。。。
03:21:01 PM 1749996 14243300 89.06 204112 3001284 25526988 159.61 12854832 807716 0
Average: 1752725 14240571 89.04 204105 2998345 25525458 159.60 12852993 806275 0
说明: (1)kbmemfree:这个值和free命令中的free值基本一致,所以它不包括buffer和cache的空间。 (2)kbmemused:这个值和free命令中的used值基本一致,所以它包括buffer和cache的空间。 (3)%memused:这个值是kbmemused和内存总量(不包括swap)的一个百分比。 (4)kbbuffers和kbcached:这两个值就是free命令中的buffer和cache。 (5)kbcommit:保证当前系统所需要的内存,即为了确保不溢出而需要的内存(RAM+swap)。 (6)%commit:这个值是kbcommit与内存总量(包括swap)的一个百分比。 对比:
#free -h
total used free shared buff/cache available
Mem: 15G 10G 1.6G 777M 3.4G 3.9G
Swap: 0B 0B 0B
- 监控内存分页
#sar -B 1
03:33:33 PM pgpgin/s pgpgout/s fault/s majflt/s pgfree/s pgscank/s pgscand/s pgsteal/s %vmeff
03:33:34 PM 0.00 14504.00 3192.00 0.00 8984.00 0.00 0.00 0.00 0.00
03:33:35 PM 0.00 0.00 866.00 0.00 3294.00 0.00 0.00 0.00 0.00
03:33:36 PM 0.00 256.00 845.00 0.00 3711.00 0.00 0.00 0.00 0.00
03:33:37 PM 0.00 19964.00 4765.00 0.00 3803.00 0.00 0.00 0.00 0.00
03:33:38 PM 0.00 10620.00 3029.00 0.00 8643.00 0.00 0.00 0.00 0.00
03:33:39 PM 0.00 26956.00 6252.00 0.00 4644.00 0.00 0.00 0.00 0.00
03:33:40 PM 0.00 26208.00 5834.00 0.00 12574.00 0.00 0.00 0.00 0.00
。。。。
03:33:40 PM 0.00 20524.44 4968.89 0.00 15342.22 0.00 0.00 0.00 0.00
Average: 0.00 14462.28 3626.71 0.00 7054.63 0.00 0.00 0.00 0.00
说明: (1)pgpgin/s:表示每秒从磁盘或SWAP置换到内存的字节数(KB) (2)pgpgout/s:表示每秒从内存置换到磁盘或SWAP的字节数(KB) (3)fault/s:每秒钟系统产生的缺页数,即主缺页与次缺页之和(major + minor) (4)majflt/s:每秒钟产生的主缺页数 (5)pgfree/s:每秒被放入空闲队列中的页个数 (6)pgscank/s:每秒被kswapd扫描的页个数 (7)pgscand/s:每秒直接被扫描的页个数 (8)pgsteal/s:每秒钟从cache中被清除来满足内存需要的页个数 (9)%vmeff:每秒清除的页(pgsteal)占总扫描页(pgscank+pgscand)的百分比。
- 关于I节点,文件和其它内核表的监控
#sar -v 1
03:41:43 PM dentunusd file-nr inode-nr pty-nr
03:41:44 PM 38321 3296 22449 2
03:41:45 PM 38327 3296 22455 2
03:41:46 PM 38329 3296 22446 2
03:41:47 PM 38329 3296 22448 2
03:41:48 PM 38331 3296 22447 2
03:41:49 PM 38331 3296 22447 2
03:41:50 PM 38331 3296 22447 2
03:41:51 PM 38336 3296 22448 2
。。。。
03:41:51 PM 38336 3296 22449 2
Average: 38330 3296 22448 2
说明: (1)dentunusd:在缓冲目录条目中没有使用的条目数量。 dentunusd数据的数据来源是/proc/sys/fs/dentry-state的第二项数据. 要弄明白它的意义,我们首先要弄明白dcache(目录高速缓存),因为系统中所有的inode都是通过文件名来访问的,而为了解决文件名到inode转换的时间,就引入了dcache. 它是VFS层为当前活动和最近使用的名字维护的一个cache. dcache中所有处于unused状态和negative(消极)状态的dentry对象都通链入到dentry_unused链表中,这种dentry对象在回收内存时可能会被释放. 如果我们在系统中运行ls -ltR /etc/会看到dentunusd的数量会多起来. 而通过mount -o remount /dev/sda1会看到dentunusd会迅速会回收. (2)file-nr:被系统使用的文件句柄数量。 file-nr的的数据来源是/proc/sys/fs/file-nr文件的第一项数据. 实际上file-nr不是一个准确的值,file-nr每次增加的步长是64(64位系统),例如现在file-nr为2528,实际上可能只打开了2527个文件,而此时你打开两个文件后,它就会变成2592,而不是2530. (3)inode-nr:使用的索引节点数量。 inode-nr的数据来源是/proc/sys/fs/inode-nr文件的第一项数据减去第二项数据的值. inode-nr文件的第一项数据是已经分配过的INODE节点.第二项数据是空闲的INODE节点. 例如,inode-nr文件里的值为:13720 7987 我们新建一个文件file1,此时inode-nr第一项数据会加1,就是13721,表示系统里建立了这么多的inode. 我们再删除掉file1,此时就会变成13720. 空闲的INODE节点表示我们已经里这么多的INODE节点曾经有过被利用,但没有被释放. 所以INODE节点总数减去空闲的INODE,就是正在被用的INODE. 最后通过使用mount -o remount /dev/sda1命令,空闲节点会被刷新,所以inode-nr的值会有所变化. (4)pty-nr:使用的pty数量。 pty-nr的数据来源是/proc/sys/kernel/pty/nr 表示登陆过的终端总数,如果我们登录过10回,退出了3回,最后的结果还是10回.
- 监控中断
#sar -I ALL 1
03:47:59 PM INTR intr/s
03:48:00 PM 0 0.00
03:48:00 PM 1 0.00
03:48:00 PM 2 0.00
03:48:00 PM 3 0.00
03:48:00 PM 4 0.00
03:48:00 PM 5 0.00
03:48:00 PM 6 0.00
03:48:00 PM 7 0.00
说明: (1)INTR表示中断号,中断号代表的意义可以到/proc/interrupts查询. (2)intr/s表示每秒的中断次数.
- 平均负载和队列的监控
#sar -q 1
04:08:37 PM runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 blocked
04:08:38 PM 1 2274 2.24 2.55 2.68 0
04:08:39 PM 3 2274 2.24 2.55 2.68 1
04:08:40 PM 2 2274 2.24 2.55 2.68 0
04:08:41 PM 2 2274 2.24 2.55 2.68 0
04:08:42 PM 1 2274 2.14 2.53 2.67 0
04:08:43 PM 2 2274 2.14 2.53 2.67 0
。。。。
04:08:44 PM 3 2274 2.14 2.53 2.67 0
Average: 2 2274 2.20 2.54 2.68 0
说明: (1)runq-sz:处于运行或就绪的进程数量 (2)plist-sz:现在进程的总数(包括线程). (3)ldavg-1:最近一分钟的负载. (4)ldavg-5:最近五分钟的负载. (5)ldavg-15:最近十分钟的负载. (6)平均负载和队列的数据来源于/proc/loadavg