9

和sar比起来,其他Linux命令都是猹

 3 years ago
source link: https://mp.weixin.qq.com/s?__biz=MzA4MTc4NTUxNQ%3D%3D&%3Bmid=2650523088&%3Bidx=1&%3Bsn=f58bd8a8295b6e4c2d9fe38126c80c6c
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

e6JBVrU.gif!mobile

原创:小姐姐味道(微信公众号ID:xjjdog),欢迎分享,转载请保留出处。

我决定把今年装x的机会,留给 sar 命令。它是一个Linux下的监控工具,一直站在鄙视链的顶端。之所以让人望而生畏,主要是由于它繁多的参数。但,这么强大的命令,并非无章可循,实际上是非常简单的。

今天就和xjjdog一起,寻觅sar命令的隐秘之处,共同沾得帝王之气,以便傲视群cmd,彰显自己侧漏的霸气!

EniQren.png!mobile

sar命令很简单,它的参数主要分为四部分。其中,第二部分和第三、四部分,是可选的,也就是说,最终要的参数,就剩下一个,那就是类型。这个参数的值非常的多,我们暂且放在一边,看一下以上命令的简单意义。

  1. 类型,也就是我们要获取的是哪个类型的指标数据,这里的 -n ,代表的是监控一些网络信息
  2. 类型参数,有的类型带有参数,有的没有。这里的 DEV ,代表的是监控网卡信息
  3. 时间间隔,表示多少 采样一次数据,这里的 1 就是1秒
  4. 次数,表示采样的次数。比如时间间隔是3,采样次数是4,那么sar命令将会阻塞12秒钟

我们来看小小偷窥一下它的输出。

# sar -n DEV 1 2
03:10:29 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil
03:10:30 PM lo 30.00 30.00 2.09 2.09 0.00 0.00 0.00 0.00
03:10:30 PM eth0 6.00 2.00 0.38 0.32 0.00 0.00 0.00 0.00

03:10:30 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil
03:10:31 PM lo 39.00 39.00 2.95 2.95 0.00 0.00 0.00 0.00
03:10:31 PM eth0 11.00 12.00 0.72 5.26 0.00 0.00 0.00 0.00

Average: IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil
Average: lo 33.00 33.00 2.38 2.38 0.00 0.00 0.00 0.00
Average: eth0 9.33 8.33 0.60 2.39 0.00 0.00 0.00 0.00

非常非常规整的二维数组,不像top命令那种张狂的显示( top -b -n 1 可以输出当前信息)。可以很方便的使用 sedawk 这样的工具进行处理。

了解这命令构成的各个部分,我们就可以放心大胆的来看具体的参数,都有哪些了。能不能抓到这只猹,在此一举。

之所以说sar命令,站在鄙视链的顶端,那是因为它的参数是非常丰富的。我们再也不需要各种 iostattopvmstat 等五花八门的命令,只需要一个sar,就能统一天下。

Linux下的资源监控,不外乎下面几种。有 磁盘CPU网络内存IO 等。不好意思,sar都能监控到,就是这么目空一切。

JRvEBzr.png!mobile

接下来,我们就来漫游一小把。

1. CPU信息

我们就先从cpu信息开始说起。作为计算机的大脑,作为一个指挥者,我们要监控它的一举一动。实际上,对于CPU有下面三种监控。

RFjaimI.png!mobile

(1)利用率,使用 sar -u ,我们看下它的执行结果。可以看到每种类型的使用情况,和top命令种的意义,是一样的。

# sar -u 1 1
03:37:39 PM CPU %user %nice %system %iowait %steal %idle
03:37:40 PM all 0.25 0.50 0.50 0.00 0.00 98.75
Average: all 0.25 0.50 0.50 0.00 0.00 98.75

(2)负载,使用 sar -q ,同样的,和top的参数意义是相似的。除了load值,它还显示了等待队列的长度,对于排查排队问题非常有帮助。

# sar -q  1 1
03:40:15 PM runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 blocked
03:40:16 PM 0 468 0.02 0.04 0.00 0
Average: 0 468 0.02 0.04 0.00 0

(3)中断,使用 sar -I ,注意i是大写的。由于有不同的换算方式,所以中断的参数,分为 默认SUMALL 等。

# sar -I SUM 1 2
03:44:36 PM INTR intr/s
03:44:37 PM sum 1118.00
03:44:38 PM sum 1024.00
Average: sum 1071.00

(4)上下文切换,使用 sar -w ,它经常与监控swap交换分区的使用情况的 sar -W 搞混,所以要注意。

# sar -w  1
04:08:33 PM proc/s cswch/s
04:08:34 PM 0.00 1686.00

2. 内存信息

看完了CPU就再看内存。CPU跑满了机器可能表现就是慢点,内存跑满了可是要死人的。

内存主要是分为下面这些部分,我们平常监控的,主要是 物理内存虚拟内存内核 等。

UjE3uai.png!mobile

(1)内存利用率,使用 sar -r 命令。有些sar版本可能会有 sar -R ,但一般小写的就够了。

# sar -r 1 1
03:48:39 PM kbmemfree kbavail kbmemused %memused kbbuffers kbcached kbcommit %commit kbactive kbinact kbdirty
03:48:40 PM 1663884 2650804 6057692 78.45 0 1001040 6954428 90.06 4915476 582184 100
Average: 1663884 2650804 6057692 78.45 0 1001040 6954428 90.06 4915476 582184 100

(2)swap交换分区。对于swap分区来说,就可以使用 sar -S 。效果如下。如果想要看交换分区的使用情况(非容量情况),就要切换到 sar -W 命令。

# sar -S 1 1
04:05:22 PM kbswpfree kbswpused %swpused kbswpcad %swpcad
04:05:23 PM 0 0 0.00 0 0.00
Average: 0 0 0.00 0 0.00

(3)内核使用情况,主要是使用 sar -v 命令。v一般在别的命令中用作版本展示,sar命令用来输出slab区的一些信息,可以说是特立独行,不走寻常路。

# sar -v  1
04:10:17 PM dentunusd file-nr inode-nr pty-nr
04:10:18 PM 115135 3776 111146 3
04:10:19 PM 115145 3776 111151 3
04:10:20 PM 115149 3776 111155 3

(4)sar还能监控到内存分页信息,它有一个牛x的名字 sar -B ,来看看它的效果。

# sar -B
04:15:39 PM pgpgin/s pgpgout/s fault/s majflt/s pgfree/s pgscank/s pgscand/s pgsteal/s %vmeff
04:15:40 PM 20.00 10.00 0.00 0.00 1.00 0.00 0.00 0.00 0.00
04:15:41 PM 16.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
04:15:42 PM 20.00 186.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

3. I/O信息

IO信息监控,同样是一个响亮的 sar -b ,不过这里的b,变成了小写的。

# sar -b 1 2

04:17:25 PM tps rtps wtps bread/s bwrtn/s
04:17:26 PM 6.00 4.00 2.00 32.00 23.00
04:17:27 PM 5.00 5.00 0.00 48.00 0.00
Average: 5.50 4.50 1.00 40.00 11.50

如果你要找问题,就要配合着iowait去找了。

你可能会说,这里面的输出,才有5个选项,完全没有iostat输出的多!有个鸟用?这是因为你还没用到 sar -d ,我们来看他的效果。呵呵,就是个iostat的翻版啊。

# sar -d   1
04:18:47 PM DEV tps rkB/s wkB/s areq-sz aqu-sz await svctm %util
04:18:48 PM dev253-0 4.00 16.00 0.00 4.00 0.00 0.50 1.75 0.70
04:18:49 PM dev253-0 5.00 84.00 0.00 16.80 0.00 0.60 1.80 0.90

4. 网络信息

接下来,我们看最复杂的网络信息。说它复杂,是因为它的参数非常的多,比如上面说到的DEV,就表示的网络流量。

  1. DEV网卡

  2. EDEV网卡 (错误)

  3. NFSNFS 客户端

  4. NFSDNFS 服务器

  5. SOCKSockets (套接字) (v4)

  6. IPIP 流 (v4)

  7. EIPIP 流 (v4) (错误)

  8. ICMPICMP 流 (v4)

  9. EICMPICMP 流 (v4) (错误)

  10. TCPTCP 流 (v4)

  11. ETCPTCP 流 (v4) (错误)

  12. UDPUDP 流 (v4)

  13. SOCK6Sockets (套接字) (v6)

  14. IP6IP 流 (v6)

  15. EIP6IP 流 (v6) (错误)

  16. ICMP6ICMP 流 (v6)

  17. EICMP6ICMP 流 (v6) (错误)

  18. UDP6UDP 流 (v6)

要命的是,这些参数的每个输出,还都不是一样的。可能是26个字母已经无法涵盖这么多参数了吧,所以sar命令统一把它加在了 sar -n 下面。好在我们平常使用的时候,只和DEV参数打交道既可以了。

5. 如何安装

我们介绍过各种linux命令,像什么 topvmstatmpstatiostat ...等等等等。

经过我们上面的介绍。发现,这些都不行。要数能力强,还得看 sar 命令。

sar(System ActivityReporter)是Linux最为全面的系统性能分析工具,可以监控CPU、内存、网络、I/O、文件读写、系统调用等各种资源,算是一个万能的小能手。

sar命令同样是sysstat工具包里的命令,如果你无法执行,需要像下面这样安装。

yum install sysstat

sar对比top这样的命令,有一个非常大的优势,那就是可以显示历史指标。

所以你刚开始安装以后,尝试执行sar。结果报错了。

[root@localhost ~]# sar
Cannot open /var/log/sa/sa08: No such file or directory

这就需要等一小会儿再执行,因为现在它还没有数据。一切面包牛奶,都会有的。

End

sar命令是可以看到历史记录的。那这些文件存在哪呢?我们可以在 /var/log/sa 目录下找到它们。但可惜的是,vim打开这些文件,是乱码!

可以使用下面的命令导出它们。后面的数字,一般是当天的日期。

sar -A -f /var/log/sa/sa21 > monitor

这个monitor文件,我们可以使用图形化的工具打开,也可以使用文本编辑器打开。这里以 kSar 为例(一个java便携的GUI),选择载入monitor文件,即可出现下面的效果。

a26bYny.png!mobile

有了sar这个强大的命令,你就可以对系统的参数了如指掌。和sar命令比起来,其他的命令可真的是渣。第一是因为sar能看到历史,第二是因为sar功能强大。但那些命令即使是渣,我也用的很欢。原因也有两个,一个就是用习惯了,不想换;另外一个,就是那么牛x的sar命令,参数实在是有点反人类,真的不好记忆。

作者简介: 小姐姐味道 (xjjdog),一个不允许程序员走弯路的公众号。聚焦基础架构和Linux。十年架构,日百亿流量,与你探讨高并发世界,给你不一样的味道。我的个人微信xjjdog0,欢迎添加好友,进一步交流。

推荐阅读:

一图解千愁,jvm内存从来没有这么简单过!

失联的架构师,只留下一段脚本

架构师写的BUG,非比寻常

nginx工程师,需要上承天命,下召九幽

实力解剖一枚挖矿脚本,风骚操作亮瞎双眼

又一P1故障,锅比脸圆

传统企业的人才们,先别忙着跳“互联网”!

面试官很牛,逼我尿遁

又一批长事务,P0故障谁来背锅?

一天有24个小时?别开玩笑了!

《程序人生》杀机!

可怕的“浏览器指纹”,让你在互联网上,无处可藏

2w字长文,让你瞬间拥有「调用链」开发经验

996的乐趣,你是无法想象的

作为高级Java,你应该了解的Linux知识(非广告)

必看!java后端,亮剑诛仙(最全知识点)

学完这100多技术,能当架构师么?(非广告)

Linux上,最常用的一批命令解析(10年精选)

数百篇「原创」文章,助你完成技术「体系化」

EnUneen.gif!mobile


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK