centos效能監控系列二:Collectl初解
對於一個 Linux 系統管理員來說確保自己管理的系統處於一個良好的狀態是其首要責任。
Linux 系統管理員可以找到有很多工具來協助自己監控和顯示系統中的進程,例如 top 和 htop
今天介紹一款工具collectl,使用比較方便;
介紹:collectl是一款非常優秀並且有著豐富的命令列功能的公用程式,你可以用它來採集描述當前系統狀態的效能資料。不同於大多數其它的系統監控工具,collectl 並非僅局限於有限的系統度量,相反,它可以收集許多不同類型系統資源的相關資訊,如 cpu 、disk、memory 、network 、sockets 、 tcp 、inodes 、infiniband 、 lustre 、memory、nfs、processes、quadrics、slabs和buddyinfo等。
使用 collectl 的另一個好處就是它可以替代那些特定用途的工具如: top、ps、iotop 等等其它工具。那麼 collectl 有什麼特性而使其成為一個有用的工具呢?
Collectl 特性
可以互動式地運行或作為一個守護進程,或同時二者兼備地運行。
可以以多種格式顯示輸出。
可以監控幾乎所有的子系統。
可以替代許多工具如 ps、top、iotop、vmstat。
可以記錄並回放捕獲的資料。
可以將資料匯出成多種資料格式。(這在你想用外部工具分析資料時非常有用)
可以作為一個服務來監控遠程機或者整個伺服器叢集。
可以在終端顯示資料,寫入資料到檔案或者一個通訊端。
如何在Linux上安裝collectl
collectl可以在所有的 Linux 發行版上運行,唯一需要的就是 perl 語言,所以在安裝 collectl 之前,一定要確保你的電腦上已經安裝了Perl。
對於Debian/Ubuntu/Linux Mint
下面的命令可以用來在以 Debian 為基礎的裝置如 Ubuntu 上安裝 collectl。
對於RHEL/CentOS/Fedora
如果你正在使用基於紅帽的發行版,你可以用 yum 命令輕鬆擷取它。
一些關於collectl的執行個體
collectl 工具安裝完成之後,你可以輕鬆地在終端運行它,你甚至不需要指定任何選項。下面的命令將會以簡短易讀的格式顯示cpu、硬碟和網路資訊。
正如上面終端上所顯示的,我們很容易觀察該命令輸出的系統度量值,因為它每次以一行顯示。
不加任何參數執行 collectl 會顯示下面子系統的資訊
$ sudo apt-get install collectl# yum install collectl# collectl waiting for 1 second sample...##cpu sys inter ctxsw KBRead Reads KBWrit Writes KBIn PktIn KBOut PktOut13 5 790 1322 0 0 92 7 4 13 0 510 2 719 1186 0 0 0 0 3 9 0 412 0 753 1188 0 0 52 3 2 5 0 613 2 733 1063 0 0 0 0 1 1 0 125 2 834 1375 0 0 0 0 1 1 0 128 2 870 1424 0 0 36 7 1 1 0 119 3 949 2271 0 0 44 3 1 1 0 117 2 809 1384 0 0 0 0 1 6 0 616 2 732 1348 0 0 0 0 1 1 0 122 4 993 1615 0 0 56 3 1 2 0 3cpu
磁碟
網路
但是,你如何用它來監控 cpu 的使用方式呢? ‘-s’ 選項可以用來控制哪個子系統的資料需要收集和回放。
例如下面的命令可以用來對cpu使用方式進行一個總結。
當你想要進一步瞭解記憶體使用量資訊、閒置記憶體或者與你系統效能有關的重要資料時,上面的輸出將是非常有用的。
如果想搜集一點兒 tcp 的資料呢?使用下面的命令來實現吧。
當你熟練到一定程度時,你就可以很輕鬆地得到你想要的結果了。例如你可以將關於 tcp 的“t”選項和關於 cpu 的“c”選項組合到一起。下面的命令就是如此。
以上簡單舉幾個例子;
對於我們普通福士來說記住這些選項很困難,所以在這裡,我整理出了一個列表來總結這個工具支援的選項。
# collectl -sc waiting for 1 second sample...##cpu sys inter ctxsw15 2 749 115516 3 772 144514 2 793 124727 4 887 129224 1 796 125816 1 743 111315 1 743 117914 1 706 107815 1 764 1268# collectl -st waiting for 1 second sample...## IP Tcp Udp Icmp0 0 0 00 0 0 00 0 0 00 0 0 00 0 0 00 0 0 00 0 0 00 0 0 00 0 0 00 0 0 00 0 0 0# collectl -stc waiting for 1 second sample...##cpu sys inter ctxsw IP Tcp Udp Icmp23 8 961 3136 0 0 0 024 5 916 3662 0 0 0 021 8 848 2408 0 0 0 030 10 916 2674 0 0 0 038 3 826 1752 0 0 0 031 3 820 1408 0 0 0 015 5 781 1335 0 0 0 017 3 802 1314 0 0 0 017 3 755 1218 0 0 0 014 2 788 1321 0 0 0 0b – buddy info (記憶體片段)
c – CPU
d – Disk
f – NFS V3 Data
i – Inode and File System
j – Interrupts
l – Lustre
m – Memory
n – Networks
s – Sockets
t – TCP
x – Interconnect
y – Slabs (系統對象緩衝)
對於一個系統管理員或者一個 Linux 使用者來說很重要的一種資料就是硬碟的使用方式。下面的命令可以幫你監控硬碟使用方式。
你也可以使用“-sD”選項來採集單個硬碟的資料,不過你必須知道這就不會顯示全部硬碟的資訊。
你也可以使用其它詳細的子系統來採集詳細的資料。下面是詳細子系統的一個列表。
# collectl -sd waiting for 1 second sample...##KBRead Reads KBWrit Writes0 0 0 00 0 0 00 0 92 70 0 0 00 0 36 30 0 0 00 0 0 00 0 100 70 0 0 0# collectl -sD waiting for 1 second sample... # DISK STATISTICS (/sec)# Pct#Name KBytes Merged IOs Size KBytes Merged IOs Size RWSize QLen Wait SvcTim Utilsda 0 0 0 0 52 11 2 26 26 1 8 8 1sda 0 0 0 0 0 0 0 0 0 0 0 0 0sda 0 0 0 0 24 0 2 12 12 0 0 0 0sda 0 0 0 0 152 0 4 38 38 0 0 0 0sda 0 0 0 0 192 45 3 64 64 1 20 20 5sda 0 0 0 0 204 0 2 102 102 0 0 0 0sda 0 0 0 0 0 0 0 0 0 0 0 0 0sda 0 0 0 0 116 26 3 39 38 1 16 16 4sda 0 0 0 0 0 0 0 0 0 0 0 0 0sda 0 0 0 0 0 0 0 0 0 0 0 0 0sda 0 0 0 0 32 5 3 11 10 1 16 16 4sda 0 0 0 0 0 0 0 0 0 0 0 0 0C – CPU
D – Disk
E – Environmental data (fan, power, temp), via ipmitool
F – NFS Data
J – Interrupts
L – Lustre OST detail OR client Filesystem detail
N – Networks
T – 65 TCP counters only available in plot format
X – Interconnect
Y – Slabs (system object caches)
Z – Processes
collectl 工具中有許多選項,但是僅用一篇文章來介紹肯定是介紹不過來的。然而如果將它當作 top 和 ps 工具來使用還是值得一提的。
很容易將 collectl 當作 top 來使用,只要在 Linux 系統的終端運行下面的命令你就會看到和 top 工具類似的輸出。
還有不瞭解的額,在你的終端鍵入下面的命令開始閱讀吧。