首頁>技術>

我決定把今年裝x的機會,留給sar命令。它是一個Linux下的監控工具,一直站在鄙視鏈的頂端。之所以讓人望而生畏,主要是由於它繁多的引數。但,這麼強大的命令,並非無章可循,實際上是非常簡單的。

今天就和xjjdog一起,尋覓sar命令的隱秘之處,共同沾得帝王之氣,以便傲視群cmd,彰顯自己側漏的霸氣!

​​

sar命令很簡單,它的引數主要分為四部分。其中,第二部分和第三、四部分,是可選的,也就是說,最終要的引數,就剩下一個,那就是型別。這個引數的值非常的多,我們暫且放在一邊,看一下以上命令的簡單意義。

型別,也就是我們要獲取的是哪個型別的指標資料,這裡的-n,代表的是監控一些網路資訊型別引數,有的型別帶有引數,有的沒有。這裡的DEV,代表的是監控網絡卡資訊時間間隔,表示多少秒取樣一次資料,這裡的1就是1秒次數,表示取樣的次數。比如時間間隔是3,取樣次數是4,那麼sar命令將會阻塞12秒鐘

我們來看小小偷窺一下它的輸出。

# sar -n DEV 1 203:10:29 PM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s   %ifutil03:10:30 PM        lo     30.00     30.00      2.09      2.09      0.00      0.00      0.00      0.0003:10:30 PM      eth0      6.00      2.00      0.38      0.32      0.00      0.00      0.00      0.0003:10:30 PM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s   %ifutil03:10:31 PM        lo     39.00     39.00      2.95      2.95      0.00      0.00      0.00      0.0003:10:31 PM      eth0     11.00     12.00      0.72      5.26      0.00      0.00      0.00      0.00Average:        IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s   %ifutilAverage:           lo     33.00     33.00      2.38      2.38      0.00      0.00      0.00      0.00Average:         eth0      9.33      8.33      0.60      2.39      0.00      0.00      0.00      0.00

非常非常規整的二維陣列,不像top命令那種張狂的顯示(top -b -n 1可以輸出當前資訊)。可以很方便的使用sed,awk這樣的工具進行處理。

瞭解這命令構成的各個部分,我們就可以放心大膽的來看具體的引數,都有哪些了。能不能抓到這隻猹,在此一舉。

之所以說sar命令,站在鄙視鏈的頂端,那是因為它的引數是非常豐富的。我們再也不需要各種iostat、top、vmstat等五花八門的命令,只需要一個sar,就能統一天下。

Linux下的資源監控,不外乎下面幾種。有磁碟、CPU、網路、記憶體、IO等。不好意思,sar都能監控到,就是這麼目空一切。

​​

接下來,我們就來漫遊一小把。

1. CPU資訊

我們就先從cpu資訊開始說起。作為計算機的大腦,作為一個指揮者,我們要監控它的一舉一動。實際上,對於CPU有下面三種監控。

​​

(1)利用率,使用sar -u,我們看下它的執行結果。可以看到每種型別的使用情況,和top命令種的意義,是一樣的。

# sar -u 1 103:37:39 PM     CPU     %user     %nice   %system   %iowait    %steal     %idle03:37:40 PM     all      0.25      0.50      0.50      0.00      0.00     98.75Average:        all      0.25      0.50      0.50      0.00      0.00     98.75複製程式碼

(2)負載,使用sar -q,同樣的,和top的引數意義是相似的。除了load值,它還顯示了等待佇列的長度,對於排查排隊問題非常有幫助。

# sar -q  1 103:40:15 PM   runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15   blocked03:40:16 PM         0       468      0.02      0.04      0.00         0Average:            0       468      0.02      0.04      0.00         0複製程式碼

(3)中斷,使用sar -I,注意i是大寫的。由於有不同的換算方式,所以中斷的引數,分為預設、SUM、ALL等。

# sar -I SUM 1 203:44:36 PM      INTR    intr/s03:44:37 PM       sum   1118.0003:44:38 PM       sum   1024.00Average:          sum   1071.00

(4)上下文切換,使用sar -w,它經常與監控swap交換分割槽的使用情況的sar -W搞混,所以要注意。

# sar -w  104:08:33 PM    proc/s   cswch/s04:08:34 PM      0.00   1686.00
2. 記憶體資訊

​​

看完了CPU就再看記憶體。CPU跑滿了機器可能表現就是慢點,記憶體跑滿了可是要死人的。

記憶體主要是分為下面這些部分,我們平常監控的,主要是物理記憶體、虛擬記憶體、核心等。

(1)記憶體利用率,使用sar -r命令。有些sar版本可能會有sar -R,但一般小寫的就夠了。

# sar -r 1 103:48:39 PM kbmemfree   kbavail kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit  kbactive   kbinact   kbdirty03:48:40 PM   1663884   2650804   6057692     78.45         0   1001040   6954428     90.06   4915476    582184       100Average:      1663884   2650804   6057692     78.45         0   1001040   6954428     90.06   4915476    582184       100複製程式碼

(2)swap交換分割槽。對於swap分割槽來說,就可以使用sar -S。效果如下。如果想要看交換分割槽的使用情況(非容量情況),就要切換到sar -W命令。

# sar -S 1 104:05:22 PM kbswpfree kbswpused  %swpused  kbswpcad   %swpcad04:05:23 PM         0         0      0.00         0      0.00Average:            0         0      0.00         0      0.00複製程式碼

(3)核心使用情況,主要是使用sar -v命令。v一般在別的命令中用作版本展示,sar命令用來輸出slab區的一些資訊,可以說是特立獨行,不走尋常路。

# sar -v  104:10:17 PM dentunusd   file-nr  inode-nr    pty-nr04:10:18 PM    115135      3776    111146         304:10:19 PM    115145      3776    111151         304:10:20 PM    115149      3776    111155         3複製程式碼

(4)sar還能監控到記憶體分頁資訊,它有一個牛x的名字sar -B,來看看它的效果。

# sar -B04:15:39 PM  pgpgin/s pgpgout/s   fault/s  majflt/s  pgfree/s pgscank/s pgscand/s pgsteal/s    %vmeff04:15:40 PM     20.00     10.00      0.00      0.00      1.00      0.00      0.00      0.00      0.0004:15:41 PM     16.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.0004: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 204:17:25 PM       tps      rtps      wtps   bread/s   bwrtn/s04:17:26 PM      6.00      4.00      2.00     32.00     23.0004:17:27 PM      5.00      5.00      0.00     48.00      0.00Average:         5.50      4.50      1.00     40.00     11.50

如果你要找問題,就要配合著iowait去找了。

你可能會說,這裡面的輸出,才有5個選項,完全沒有iostat輸出的多!有個鳥用?這是因為你還沒用到sar -d,我們來看他的效果。呵呵,就是個iostat的翻版啊。

# sar -d   104:18:47 PM       DEV       tps     rkB/s     wkB/s   areq-sz    aqu-sz     await     svctm     %util04:18:48 PM  dev253-0      4.00     16.00      0.00      4.00      0.00      0.50      1.75      0.7004:18:49 PM  dev253-0      5.00     84.00      0.00     16.80      0.00      0.60      1.80      0.90複製程式碼
4. 網路資訊

接下來,我們看最複雜的網路資訊。說它複雜,是因為它的引數非常的多,比如上面說到的DEV,就表示的網路流量。

DEV 網絡卡EDEV 網絡卡 (錯誤)NFS NFS 客戶端NFSD NFS 伺服器SOCK Sockets (套接字) (v4)IP IP 流 (v4)EIP IP 流 (v4) (錯誤)ICMP ICMP 流 (v4)EICMP ICMP 流 (v4) (錯誤)TCP TCP 流 (v4)ETCP TCP 流 (v4) (錯誤)UDP UDP 流 (v4)SOCK6 Sockets (套接字) (v6)IP6 IP 流 (v6)EIP6 IP 流 (v6) (錯誤)ICMP6 ICMP 流 (v6)EICMP6 ICMP 流 (v6) (錯誤)UDP6 UDP 流 (v6)

要命的是,這些引數的每個輸出,還都不是一樣的。可能是26個字母已經無法涵蓋這麼多引數了吧,所以sar命令統一把它加在了sar -n下面。好在我們平常使用的時候,只和DEV引數打交道既可以了。

5. 如何安裝

我們介紹過各種linux命令,像什麼top、vmstat、mpstat、iostat...等等等等。

最常用的一套“Vim“技巧最常用的一套“Sed“技巧最常用的一套“AWK“技巧

經過我們上面的介紹。發現,這些都不行。要說能力強,還得看sar命令。

sar(System ActivityReporter)是Linux最為全面的系統性能分析工具,可以監控CPU、記憶體、網路、I/O、檔案讀寫、系統呼叫等各種資源,算是一個萬能的小能手。

sar命令同樣是sysstat工具包裡的命令,如果你無法執行,需要像下面這樣安裝。

yum install sysstat

sar對比top這樣的命令,有一個非常大的優勢,那就是可以顯示歷史指標。

所以你剛開始安裝以後,嘗試執行sar。結果報錯了。

[root@localhost ~]# sarCannot 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檔案,即可出現下面的效果。

​​

有了sar這個強大的命令,你就可以對系統的引數瞭如指掌。和sar命令比起來,其他的命令可真的是渣。第一是因為sar能看到歷史,第二是因為sar功能強大。但那些命令即使是渣,我也用的很歡。原因也有兩個,一個就是用習慣了,不想換;另外一個,就是那麼牛x的sar命令,引數實在是有點反人類,真的不好記憶。

22
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 2020年最強10款Python工具包,個個都是精品