Linux一體化性能監(jiān)測(cè)工具collectl怎么用,相信很多沒有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。
成都創(chuàng)新互聯(lián)公司是一家以成都網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)、品牌設(shè)計(jì)、軟件運(yùn)維、成都網(wǎng)站推廣、小程序App開發(fā)等移動(dòng)開發(fā)為一體互聯(lián)網(wǎng)公司。已累計(jì)為葡萄架等眾行業(yè)中小客戶提供優(yōu)質(zhì)的互聯(lián)網(wǎng)建站和軟件開發(fā)服務(wù)。
對(duì)Linux系統(tǒng)管理員來(lái)說(shuō),最重要的任務(wù)莫過于確保他或她管理的系統(tǒng)處于非常良好的情況。Linux系統(tǒng)管理員可以使用好多工具,幫助監(jiān)測(cè)和顯示系統(tǒng)里面的進(jìn)程,比如top和htop,但這些工具沒有一個(gè)比得上collectl。
collectl:Linux性能監(jiān)測(cè)工具
collectl是一款非常棒的、功能豐富的命令實(shí)用工具,它可以用來(lái)收集描述系統(tǒng)當(dāng)前狀況的性能數(shù)據(jù)。不像大多數(shù)其他的監(jiān)測(cè)工具,collectl并不著眼于數(shù)量有限的系統(tǒng)衡量指標(biāo),而是可以收集關(guān)于許多不同類型的系統(tǒng)資源的信息,比如處理器、磁盤、內(nèi)存、網(wǎng)絡(luò)、套接字、TCP、索引節(jié)點(diǎn)、Infiniband、Lustre、NFS、進(jìn)程、quadric、slab和伙伴系統(tǒng)信息等資源。
使用collectl的一個(gè)非常好的方面是,它還能扮演像top、ps和iotop另外許多這些只針對(duì)某個(gè)特定用途設(shè)計(jì)的實(shí)用工具的角色。那么,哪些功能特性讓colleclt成為一款實(shí)用工具呢?
我在進(jìn)行了大量的研究后,整理出了一份清單,為大家列出了collectl命令行實(shí)用工具的一些最重要的功能特性。
collectl的功能特性
?它能夠以交互式運(yùn)行、作為守護(hù)程序運(yùn)行,或者兩者兼而有之。
?它能夠顯示采用多種格式的輸出結(jié)果。
?它能夠監(jiān)測(cè)幾乎任何一個(gè)子系統(tǒng)。
?它能扮演像ps、top、iotop或vmstat這些另外許多實(shí)用工具的角色。
?它能夠記錄并回放捕獲的數(shù)據(jù)。
?它能夠以眾多文件格式導(dǎo)出數(shù)據(jù)。(如果你想借助外部工具來(lái)分析數(shù)據(jù),這項(xiàng)功能就非常有用)。
?它能夠作為一項(xiàng)服務(wù)來(lái)運(yùn)行,以監(jiān)測(cè)遠(yuǎn)程機(jī)器或整個(gè)服務(wù)器集群。
?它能夠在終端中顯示數(shù)據(jù),并將數(shù)據(jù)寫入到文件或套接字。
如何在Linux中安裝collectl?
collectl實(shí)用工具可以在所有Linux發(fā)行版上運(yùn)行,它只需要perl就能運(yùn)行,所以確保你在機(jī)器中安裝collectl之前已在機(jī)器中安裝了Perl。
在Debian/Ubuntu/Linux Mint上
下面這個(gè)命令可用于將collectl實(shí)用工具安裝在基于Debian的機(jī)器上,比如Ubuntu。
$ sudo apt-get install collectl
在RHEL/CentOS/Fedora上
如果你使用基于紅帽的發(fā)行版,很容易借助yum命令,從軟件庫(kù)獲取它。
# yum install collectl
collectl實(shí)用工具的一些實(shí)際例子
一旦collectl工具安裝完畢,你很容易從終端來(lái)運(yùn)行它,甚至不帶任何選項(xiàng)。下面這個(gè)命令將以一種非常簡(jiǎn)短而易于閱讀的格式,顯示關(guān)于處理器、磁盤和網(wǎng)絡(luò)統(tǒng)計(jì)數(shù)字等的信息。
# collectl waiting for 1 second sample... # #cpu sys inter ctxsw KBRead Reads KBWrit Writes KBIn PktIn KBOut PktOut 13 5 790 1322 0 0 92 7 4 13 0 5 10 2 719 1186 0 0 0 0 3 9 0 4 12 0 753 1188 0 0 52 3 2 5 0 6 13 2 733 1063 0 0 0 0 1 1 0 1 25 2 834 1375 0 0 0 0 1 1 0 1 28 2 870 1424 0 0 36 7 1 1 0 1 19 3 949 2271 0 0 44 3 1 1 0 1 17 2 809 1384 0 0 0 0 1 6 0 6 16 2 732 1348 0 0 0 0 1 1 0 1 22 4 993 1615 0 0 56 3 1 2 0 3
大家可以從終端屏幕中顯示的上述輸出結(jié)果中看到,處理命令輸出中的系統(tǒng)衡量標(biāo)準(zhǔn)值非常容易,因?yàn)樗惋@示在單單一行上。
collectl實(shí)用工具不帶任何選項(xiàng)執(zhí)行后,它顯示了關(guān)于下列子系統(tǒng)的信息:
?處理器
?磁盤
?網(wǎng)絡(luò)
注意:在我們這個(gè)例子中,子系統(tǒng)是指可以測(cè)量的每一種系統(tǒng)資源。
你還可以顯示除slab之外的所有子系統(tǒng)的統(tǒng)計(jì)數(shù)字,只要結(jié)合該命令和–all選項(xiàng),如下所示。
# collectl --all waiting for 1 second sample... # #cpu sys inter ctxsw Cpu0 Cpu1 Free Buff Cach Inac Slab Map Fragments KBRead Reads KBWrit Writes KBIn PktIn KBOut PktOut IP Tcp Udp Icmp Tcp Udp Raw Frag Handle Inodes Reads Writes Meta Comm 16 3 817 1542 430 390 1G 175M 1G 683M 193M 1G nsslkjjebbk 0 0 24 3 1 1 0 1 0 0 0 0 623 0 0 0 8160 240829 0 0 0 0 11 1 745 1324 316 426 1G 175M 1G 683M 193M 1G nsslkjjebbk 0 0 0 0 0 3 0 2 0 0 0 0 622 0 0 0 8160 240828 0 0 0 0 15 2 793 1683 371 424 1G 175M 1G 683M 193M 1G ssslkjjebbk 0 0 0 0 1 1 0 1 0 0 0 0 622 0 0 0 8160 240829 0 0 0 0 16 2 872 1875 427 446 1G 175M 1G 683M 193M 1G ssslkjjebbk 0 0 24 3 1 1 0 1 0 0 0 0 622 0 0 0 8160 240828 0 0 0 0 24 2 842 1383 473 368 1G 175M 1G 683M 193M 1G ssslkjjebbk 0 0 168 6 1 1 0 1 0 0 0 0 622 0 0 0 8160 240828 0 0 0 0 27 3 844 1099 478 365 1G 175M 1G 683M 193M 1G nsslkjjebbk 0 0 0 0 1 6 1 9 0 0 0 0 622 0 0 0 8160 240828 0 0 0 0 26 5 823 1238 396 428 1G 175M 1G 683M 193M 1G ssslkjjebbk 0 0 0 0 2 11 3 9 0 0 0 0 622 0 0 0 8160 240828 0 0 0 0 15 1 753 1276 361 391 1G 175M 1G 683M 193M 1G ssslkjjebbk 0 0 40 3 1 2 0 3 0 0 0 0 623 0 0 0 8160 240829 0 0 0 0
但是,你如何借助該實(shí)用工具監(jiān)測(cè)處理器的使用情況?“-s”選項(xiàng)可用于控制收集或回放哪些子系統(tǒng)數(shù)據(jù)。
比如說(shuō),下面這個(gè)命令可用于監(jiān)測(cè)處理器使用情況的摘要。
# collectl -sc waiting for 1 second sample... # #cpu sys inter ctxsw 15 2 749 1155 16 3 772 1445 14 2 793 1247 27 4 887 1292 24 1 796 1258 16 1 743 1113 15 1 743 1179 14 1 706 1078 15 1 764 1268
如果你結(jié)合命令和“scdn”,會(huì)出現(xiàn)什么情況?想學(xué)習(xí)如何使用命令行工具,***的辦法就是盡可能實(shí)際運(yùn)用一下,所以在你的終端中運(yùn)行下面這個(gè)命令,看看會(huì)出現(xiàn)什么情況。
# collectl -scdn waiting for 1 second sample... # #cpu sys inter ctxsw KBRead Reads KBWrit Writes KBIn PktIn KBOut PktOut 25 4 943 3333 0 0 0 0 1 1 0 2 27 3 825 2910 0 0 0 0 1 1 0 1 27 5 886 2531 0 0 0 0 0 0 0 1 20 4 872 2406 0 0 0 0 1 1 0 1 26 1 854 2091 0 0 20 2 1 1 0 1 39 4 1004 3398 0 0 0 0 2 8 3 6 41 6 955 2464 0 0 40 3 1 2 0 3 25 7 890 1609 0 0 0 0 1 1 0 1 16 2 814 1165 0 0 796 43 2 2 0 2 14 1 779 1383 0 0 48 6 1 1 0 1 11 2 795 1285 0 0 0 0 2 14 1 14
你很容易明白:默認(rèn)選項(xiàng)是“cdn”,它代表處理器、磁盤和網(wǎng)絡(luò)數(shù)據(jù)。命令的結(jié)果與“collectl -scn”的輸出結(jié)果一樣。
如果你想收集關(guān)于內(nèi)存的數(shù)據(jù),使用下面這個(gè)命令。
# collectl -sm waiting for 1 second sample... # #Free Buff Cach Inac Slab Map 1G 177M 1G 684M 193M 1G 1G 177M 1G 684M 193M 1G 1G 177M 1G 684M 193M 1G 1G 177M 1G 684M 193M 1G 1G 177M 1G 684M 193M 1G 1G 177M 1G 684M 193M 1G 1G 177M 1G 684M 193M 1G 1G 177M 1G 684M 193M 1G
如果你想獲得關(guān)于內(nèi)存使用情況、閑置內(nèi)存以及對(duì)系統(tǒng)性能而言很重要的其他方面的一些詳細(xì)信息,上述輸出結(jié)果非常有用。
想獲得關(guān)于tcp的一些數(shù)據(jù)?使用下面這個(gè)命令即可實(shí)現(xiàn)。
# collectl -st waiting for 1 second sample... # # IP Tcp Udp Icmp 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
你有了一定的經(jīng)驗(yàn)后,就很容易結(jié)合諸多選項(xiàng),獲得所需要的結(jié)果。比如說(shuō),你可以結(jié)合代表tcp的“t”和代表處理器的“c”。下面這個(gè)命令就實(shí)現(xiàn)了這項(xiàng)功能。
# collectl -stc waiting for 1 second sample... # #cpu sys inter ctxsw IP Tcp Udp Icmp 23 8 961 3136 0 0 0 0 24 5 916 3662 0 0 0 0 21 8 848 2408 0 0 0 0 30 10 916 2674 0 0 0 0 38 3 826 1752 0 0 0 0 31 3 820 1408 0 0 0 0 15 5 781 1335 0 0 0 0 17 3 802 1314 0 0 0 0 17 3 755 1218 0 0 0 0 14 2 788 1321 0 0 0 0
我們?nèi)祟惡茈y記住所有的可用選項(xiàng),于是我列出了該工具支持的子系統(tǒng)摘要列表。
?b – 伙伴系統(tǒng)信息(內(nèi)存片段)
?c – 處理器
?d – 磁盤
?f – NFS V3數(shù)據(jù)
?i – 索引節(jié)點(diǎn)和文件系統(tǒng)
?j – 中斷
?l – Lustre
?m – 內(nèi)存
?n – 網(wǎng)絡(luò)
?s – 套接字
?t – TCP
?x – 互連
?y – slabs(系統(tǒng)對(duì)象緩存)
對(duì)Linux用戶的系統(tǒng)管理員來(lái)說(shuō),一個(gè)非常重要的數(shù)據(jù)就是磁盤使用情況方面所收集的數(shù)據(jù)。下面這個(gè)命令將幫助你監(jiān)測(cè)磁盤的使用情況。
# collectl -sd waiting for 1 second sample... # #KBRead Reads KBWrit Writes 0 0 0 0 0 0 0 0 0 0 92 7 0 0 0 0 0 0 36 3 0 0 0 0 0 0 0 0 0 0 100 7 0 0 0 0
你還可以使用“-sD”選項(xiàng),收集關(guān)于單個(gè)磁盤的數(shù)據(jù),但是你要知道關(guān)于全部磁盤的數(shù)據(jù)不會(huì)報(bào)告。
# collectl -sD waiting for 1 second sample... # DISK STATISTICS (/sec) # Pct #Name KBytes Merged IOs Size Kbytes Merged IOs Size RWSize QLen Wait SvcTim Util sda 0 0 0 0 52 11 2 26 26 1 8 8 1 sda 0 0 0 0 0 0 0 0 0 0 0 0 0 sda 0 0 0 0 24 0 2 12 12 0 0 0 0 sda 0 0 0 0 152 0 4 38 38 0 0 0 0 sda 0 0 0 0 192 45 3 64 64 1 20 20 5 sda 0 0 0 0 204 0 2 102 102 0 0 0 0 sda 0 0 0 0 0 0 0 0 0 0 0 0 0 sda 0 0 0 0 116 26 3 39 38 1 16 16 4 sda 0 0 0 0 0 0 0 0 0 0 0 0 0 sda 0 0 0 0 0 0 0 0 0 0 0 0 0 sda 0 0 0 0 32 5 3 11 10 1 16 16 4 sda 0 0 0 0 0 0 0 0 0 0 0 0 0
你還可以使用其他的具體子系統(tǒng)來(lái)收集詳細(xì)數(shù)據(jù)。下面列出了各個(gè)具體子系統(tǒng)。
?C – 處理器
?D – 磁盤
?E – 環(huán)境數(shù)據(jù)(風(fēng)扇、電源和溫度),通過ipmitool
?F – NFS數(shù)據(jù)
?J – 中斷
?L – Lustre OST的細(xì)節(jié),或者客戶端文件系統(tǒng)的細(xì)節(jié)
?N – 網(wǎng)絡(luò)
?T – 只有plot格式才有的65個(gè)TCP計(jì)數(shù)器
?X – 互連
?Y – Slabs(系統(tǒng)對(duì)象緩存)
?Z – 進(jìn)程
collectl實(shí)用工具有許多可用選項(xiàng),而僅僅一篇文章沒有足夠的時(shí)間和篇幅來(lái)逐一細(xì)述。不過,有必要了解如何將該實(shí)用工具作為top和ps來(lái)使用。
很容易讓collectl作為top實(shí)用工具來(lái)使用,只要在你的終端中運(yùn)行下面這個(gè)命令,你會(huì)看到top工具在Linux系統(tǒng)中執(zhí)行時(shí)提供的類似輸出結(jié)果。
# collectl --top # TOP PROCESSES sorted by time (counters are /sec) 13:11:02 # PID User PR PPID THRD S VSZ RSS CP SysT UsrT Pct AccuTime RKB WKB MajF MinF Command ^COuch!tecmint 20 1 40 R 1G 626M 0 0.01 0.14 15 28:48.24 0 0 0 109 /usr/lib/firefox/firefox 3403 tecmint 20 1 40 R 1G 626M 1 0.00 0.20 20 28:48.44 0 0 0 600 /usr/lib/firefox/firefox 5851 tecmint 20 4666 0 R 17M 13M 0 0.02 0.06 8 00:01.28 0 0 0 0 /usr/bin/perl 1682 root 20 1666 2 R 211M 55M 1 0.02 0.01 3 03:10.24 0 0 0 95 /usr/bin/X 3454 tecmint 20 3403 8 S 216M 45M 1 0.01 0.02 3 01:23.32 0 0 0 0 /usr/lib/firefox/plugin-container 4658 tecmint 20 4657 3 S 207M 17M 1 0.00 0.02 2 00:08.23 0 0 0 142 gnome-terminal 2890 tecmint 20 2571 3 S 340M 68M 0 0.00 0.01 1 01:19.95 0 0 0 0 compiz 3521 tecmint 20 1 24 S 710M 148M 1 0.01 0.00 1 01:47.84 0 0 0 0 skype 1 root 20 0 0 S 3M 2M 0 0.00 0.00 0 00:02.57 0 0 0 0 /sbin/init 2 root 20 0 0 S 0 0 1 0.00 0.00 0 00:00.00 0 0 0 0 kthreadd 3 root 20 2 0 S 0 0 0 0.00 0.00 0 00:00.60 0 0 0 0 ksoftirqd/0 5 root 0 2 0 S 0 0 0 0.00 0.00 0 00:00.00 0 0 0 0 kworker/0:0H 7 root 0 2 0 S 0 0 0 0.00 0.00 0 00:00.00 0 0 0 0 kworker/u:0H 8 root RT 2 0 S 0 0 0 0.00 0.00 0 00:04.42 0 0 0 0 migration/0 9 root 20 2 0 S 0 0 0 0.00 0.00 0 00:00.00 0 0 0 0 rcu_bh 10 root 20 2 0 R 0 0 0 0.00 0.00 0 00:02.22 0 0 0 0 rcu_sched 11 root RT 2 0 S 0 0 0 0.00 0.00 0 00:00.05 0 0 0 0 watchdog/0 12 root RT 2 0 S 0 0 1 0.00 0.00 0 00:00.07 0 0 0 0 watchdog/1 13 root 20 2 0 S 0 0 1 0.00 0.00 0 00:00.73 0 0 0 0 ksoftirqd/1 14 root RT 2 0 S 0 0 1 0.00 0.00 0 00:01.96 0 0 0 0 migration/1 16 root 0 2 0 S 0 0 1 0.00 0.00 0 00:00.00 0 0 0 0 kworker/1:0H 17 root 0 2 0 S 0 0 1 0.00 0.00 0 00:00.00 0 0 0 0 cpuset
現(xiàn)在***但并非最不重要的是,想把collectl實(shí)用工具用作ps工具,在你的終端中運(yùn)行下面這個(gè)命令。你會(huì)獲得關(guān)于系統(tǒng)中進(jìn)程的信息,就跟你在終端中運(yùn)行“ps”命令所得到的輸出一樣。
# collectl -c1 -sZ -i:1 waiting for 1 second sample... ### RECORD 1 >>> tecmint-vgn-z13gn <<< (1397979716.001) (Sun Apr 20 13:11:56 2014) ### # PROCESS SUMMARY (counters are /sec) # PID User PR PPID THRD S VSZ RSS CP SysT UsrT Pct AccuTime RKB WKB MajF MinF Command 1 root 20 0 0 S 3M 2M 0 0.00 0.00 0 00:02.57 0 0 0 0 /sbin/init 2 root 20 0 0 S 0 0 1 0.00 0.00 0 00:00.00 0 0 0 0 kthreadd 3 root 20 2 0 S 0 0 0 0.00 0.00 0 00:00.60 0 0 0 0 ksoftirqd/0 5 root 0 2 0 S 0 0 0 0.00 0.00 0 00:00.00 0 0 0 0 kworker/0:0H 7 root 0 2 0 S 0 0 0 0.00 0.00 0 00:00.00 0 0 0 0 kworker/u:0H 8 root RT 2 0 S 0 0 0 0.00 0.00 0 00:04.42 0 0 0 0 migration/0 9 root 20 2 0 S 0 0 0 0.00 0.00 0 00:00.00 0 0 0 0 rcu_bh 10 root 20 2 0 S 0 0 0 0.00 0.00 0 00:02.24 0 0 0 0 rcu_sched 11 root RT 2 0 S 0 0 0 0.00 0.00 0 00:00.05 0 0 0 0 watchdog/0 12 root RT 2 0 S 0 0 1 0.00 0.00 0 00:00.07 0 0 0 0 watchdog/1 13 root 20 2 0 S 0 0 1 0.00 0.00 0 00:00.73 0 0 0 0 ksoftirqd/1 14 root RT 2 0 S 0 0 1 0.00 0.00 0 00:01.96 0 0 0 0 migration/1 16 root 0 2 0 S 0 0 1 0.00 0.00 0 00:00.00 0 0 0 0 kworker/1:0H 17 root 0 2 0 S 0 0 1 0.00 0.00 0 00:00.00 0 0 0 0 cpuset 18 root 0 2 0 S 0 0 1 0.00 0.00 0 00:00.00 0 0 0 0 khelper 19 root 20 2 0 S 0 0 0 0.00 0.00 0 00:00.00 0 0 0 0 kdevtmpfs 20 root 0 2 0 S 0 0 0 0.00 0.00 0 00:00.00 0 0 0 0 netns 21 root 20 2 0 S 0 0 0 0.00 0.00 0 00:00.00 0 0 0 0 bdi-default 22 root 0 2 0 S 0 0 0 0.00 0.00 0 00:00.00 0 0 0 0 kintegrityd
我非常確信,許多Linux系統(tǒng)管理員會(huì)喜歡這款工具,如果最充分地使用它,就會(huì)領(lǐng)略其強(qiáng)大的功能。如果你想進(jìn)一步了解collectl,可以參閱參考手冊(cè)頁(yè),并且不斷實(shí)際運(yùn)用一下。
只要在終端中鍵入下面這個(gè)命令,就可以開始閱讀參考手冊(cè)頁(yè)了。
# man collectl
看完上述內(nèi)容,你們掌握Linux一體化性能監(jiān)測(cè)工具collectl怎么用的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!