Linux系统管理员为了使系统良好的运转通常会使用otop,top,free,htop,sar等丰富的常规工具来监测cpu,内存,磁盘,网络等系统信息,本片文件和大家一款集测试/监控/分析系统性能为一体的Linux工具-collectl。

安装collectl工具
对Ubuntu/Debian用户来说Collectl是默认资源,所以使用apt命令便可获取。
- $ sudo apt-get install collectl
 
Fedora/CentOS用户使用yum命令便可获取。
- $ yum install collectl
 
使用
必要的了解 – Collectl子系统
子系统是可检测到的不同系统资源类型。像CPU,内存,带宽等等都可构成一个子系统。只运行collectl命令将以批处理模式输出CPU,磁盘和网络子系统信息,我们在上文已看到相关内容。
从操作说明可以看到,Collectl可以识别以下子系统。
- 总计子系统
 - b – 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 (system object caches)
 - 细节子系统
 - 这是一系列的详细信息,大部分情况下都会由相应的总计数据衍生出来。目前“环境变量”和“进程”2类没有相应的总计数据。如果有3个磁盘,选择-sd,将只会看到3个磁盘组合出的单一信息。如果选择-sD,将会分别显示各磁盘信息。
 - C – CPU
 - D – Disk
 - E – Environmental data (fan, power, temp), via ipmitool
 - F – NFS Data
 - J – Interrupts
 - L – Lustre OST detail OR client Filesystem detail
 - M – Memory node data, which is also known as numa data
 - N – Networks
 - T – 65 TCP counters only available in plot format
 - X – Interconnect
 - Y – Slabs (system object caches)
 - Z – Processes
 
使用“-s”来监测特定的子系统并向其添加子系统的识别项。现在让我们举几个例子。
1. 监测cpu使用率
用“-sc”实现CPU总使用率的监测
- $ collectl –sc
 - waiting for 1 second sample…
 - #CPU——–>
 - #cpu sys inter ctxsw
 - 3 0 1800 3729
 - 3 0 1767 3599
 
使用“-C”观察各个单独的CPU使用情况。结果将会输出多行,分别对应一个CPU。
- $ collectl –sC
 - waiting for 1 second sample…
 - # SINGLE CPU STATISTICS
 - # Cpu User Nice Sys Wait IRQ Soft Steal Idle
 - 0 3 0 0 0 0 0 0 96
 - 1 3 0 0 0 0 0 0 96
 - 2 2 0 0 0 0 0 0 97
 - 3 1 0 0 0 0 0 0 98
 - 0 2 0 0 0 0 0 0 97
 - 1 2 0 2 0 0 0 0 95
 - 2 1 0 0 0 0 0 0 98
 - 3 4 0 1 0 0 0 0 95
 
如果需要,可以同时使用C和c来获取单项CPU监测数据和汇总数据。
2. 内存监测
使用m子系统查看内存。
- $ collectl –sm
 - waiting for 1 second sample…
 - #Memory———–>
 - #Free Buff Cach Inac Slab Map
 - 2G 220M 1G 1G 210M 3G
 - 2G 220M 1G 1G 210M 3G
 - 2G 220M 1G 1G 210M 3G
 
不难解释。 M用来查看更多内存的详细信息。
- $ collectl –sM
 - waiting for 1 second sample…
 - # MEMORY STATISTICS
 - # Node Total Used Free Slab Mapped Anon Locked Inact Hit%
 - 0 7975M 5939M 2036M 215720K 372184K 0 6652K 1434M 0
 - 0 7975M 5939M 2036M 215720K 372072K 0 6652K 1433M 0
 
这类似于免费报告吗?
3. 查看磁盘使用情况
d和D可以查看磁盘使用的概况和详细情况。
- $ collectl –sd
 - waiting for 1 second sample…
 - #Disks———–>
 - #KBRead Reads KBWrit Writes
 - 4 1 136 24
 - 0 0 80 13
 - $ collectl –sD
 - waiting for 1 second sample…
 - # DISK STATISTICS (/sec)
 - # reads———>writes———>averages——–> Pct
 - #Name KBytes Merged IOs Size KBytes Merged IOs Size RWSize QLen Wait SvcTim Util
 - 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 1 0 2 1 17 1 5 3 2 2 6 2 1
 - sda 0 0 0 0 92 11 5 18 18 1 12 12 5
 
“–verbose”命令可以用来查看附加信息。和D命令不同,它将概况扩展,包含了更多信息。
- $ collectl –sd —verbose
 
4. 同时报告多系统情况
如果想要同时得到CPU,内存和磁盘报告,那么同时使用子命令组合来实现。
- $ collectl –scmd
 - waiting for 1 second sample…
 - #CPU——–>Memory———–>Disks———–>
 - #cpu sys inter ctxsw Free Buff Cach Inac Slab Map KBRead Reads KBWrit Writes
 - 4 0 2187 4334 1G 221M 1G 1G 210M 3G 0 0 0 0
 - 3 0 1896 4065 1G 221M 1G 1G 210M 3G 0 0 20 5
 
5. 显示统计时间
若要将每行的监测信息和时间一同显示,使用T选项。通过在“-o”参数来指定。
- $ collectl –scmd –oT
 - waiting for 1 second sample…
 - # CPU——–>Memory———–>Disks———–>
 - #Time cpu sys inter ctxsw Free Buff Cach Inac Slab Map KBRead Reads KBWrit Writes
 - 12:03:05 3 0 1961 4013 1G 225M 1G 1G 212M 3G 0 0 0 0
 - 12:03:06 3 0 1884 3810 1G 225M 1G 1G 212M 3G 0 0 0 0
 - 12:03:07 3 0 2011 4060 1G 225M 1G 1G 212M 3G 0 0 0 0
 
使用“-oTm”可将时间换成毫秒显示。
6. 改变样本计数
collectl报告的每行都是一份快照或样本,它通常设定定期间隔如1秒来取样。i可用来设置时间间隔,c用来设置样本计数。
- $ collectl –c1 –sm
 - waiting for 1 second sample…
 - #Memory———–>
 - #Free Buff Cach Inac Slab Map
 - 1G 261M 1G 1G 228M 3G
 
使用i命令可改变更新时间间隔。
- $ collectl –sm –i2
 - waiting for 2 second sample…
 - #Memory———–>
 - #Free Buff Cach Inac Slab Map
 - 1G 261M 1G 1G 229M 3G
 
上面的命令设定每2秒收集一次内存信息。
7. 像iotop一样使用collectl
top命令将collectl像iostat/top工具一样进行智能统计。列表会持续更新,且可以使用不同字段实现排序。
- $ collectl —top iokb
 
输出如下
- # TOP PROCESSES sorted by iokb (counters are /sec) 09:44:57
 - # PID User PR PPID THRD S VSZ RSS CP SysT UsrT Pct AccuTime RKB WKB MajF MinF Command
 - 3104 enlighte 20 2683 3 S 938M 33M 0 0.00 0.00 0 00:09.16 0 4 0 0 /usr/bin/ktorrent
 - 1 root 20 0 0 S 26M 3M 2 0.00 0.00 0 00:01.30 0 0 0 0 /sbin/init
 - 2 root 20 0 0 S 0 0 3 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.02 0 0 0 0 ksoftirqd/0
 - 4 root 20 2 0 S 0 0 0 0.00 0.00 0 00:00.00 0 0 0 0 kworker/0: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 RT 2 0 S 0 0 0 0.00 0.00 0 00:00.08 0 0 0 0 migration/0
 - 8 root 20 2 0 S 0 0 2 0.00 0.00 0 00:00.00 0 0 0 0 rcu_bh
 - 9 root 20 2 0 S 0 0 0 0.00 0.00 0 00:00.00 0 0 0 0 rcuob/0
 
上面的输出很像top命令,并且它以磁盘数量降序排列进程。
若只想显示上面的5项进程,可用以下命令实现
- $ collectl —top iokb,5
 
若想学习上面的列表里哪些字段可以排序,使用如下命令
- $ collectl —showtopopts
 - 下面是应用于进程或数据的最高排序类型列表。某些情况下你可能会使用某一字段进行排序,但它并非显示的一部分。
 - TOP PROCESS SORT FIELDS
 - 进程排序字段
 - Memory
 - vsz virtual memory
 - rss resident (physical) memory
 - Time
 - syst system time
 - usrt user time
 - time total time
 - accum accumulated time
 - I/O
 - rkb KB read
 - wkb KB written
 - iokb total I/O KB
 - rkbc KB read from pagecache
 - wkbc KB written to pagecache
 - iokbc total pagecacge I/O
 - ioall total I/O KB (iokb+iokbc)
 - rsys read system calls
 - wsys write system calls
 - iosys total system calls
 - iocncl Cancelled write bytes
 - Page Faults
 - majf major page faults
 - minf minor page faults
 - flt total page faults
 - Context Switches
 - vctx volunary context switches
 - nctx non–voluntary context switches
 - Miscellaneous (best when used with —procfilt)
 - cpu cpu number
 - pid process pid
 - thread total process threads (not counting main)
 - TOP SLAB SORT FIELDS
 - numobj total number of slab objects
 - actobj active slab objects
 - objsize sizes of slab objects
 - numslab number of slabs
 - objslab number of objects in a slab
 - totsize total memory sizes taken by slabs
 - totchg change in memory sizes
 - totpct percent change in memory sizes
 - name slab names
 
8. 像top一样使用collectl
为使collectl像top,我们只需以CPU使用率排序输出进程。
- $ collectl —top
 
输出如下
- # TOP PROCESSES sorted by time (counters are /sec) 14:08:46
 - # PID User PR PPID THRD S VSZ RSS CP SysT UsrT Pct AccuTime RKB WKB MajF MinF Command
 - 9471 enlighte 20 9102 0 R 63M 22M 3 0.03 0.10 13 00:00.81 0 0 0 3 /usr/bin/perl
 - 3076 enlighte 20 2683 2 S 521M 40M 2 0.00 0.03 3 00:55.14 0 0 0 2 /usr/bin/yakuake
 - 3877 enlighte 20 3356 41 S 1G 218M 1 0.00 0.03 3 10:10.50 0 0 0 0 /opt/google/chrome/chrome
 - 4625 enlighte 20 2895 36 S 1G 241M 2 0.00 0.02 2 08:24.39 0 0 0 12 /usr/lib/firefox/firefox
 - 5638 enlighte 20 3356 3 S 1G 265M 1 0.00 0.02 2 09:55.04 0 0 0 2 /opt/google/chrome/chrome
 - 1186 root 20 1152 4 S 502M 76M 0 0.00 0.01 1 03:02.96 0 0 0 0 /usr/bin/X
 - 1334 www–data 20 1329 0 S 87M 1M 2 0.00 0.01 1 00:00.85 0 0 0 0 nginx:
 
上面的命令也可用于显示子系统信息。
- $ collectl —top –scm
 
9. 像ps一样列出进程
为像ps命令一样列出所有进程且没有后续更新,用“c”命令让其计数至1. $ collectl -c1 -sZ -i:1
上面的命令将会列出类似“ps -e”命令的所有进程。“procfilt”用于从所有进程中过滤出特定的进程信息。“procopts”用于指定另一组微调进程列表显示的命令。
10. 像vmstat一样使用collectl
Collectl有内置命令来完成像vmstat一样的功能。
- $ collectl —vmstat
 - waiting for 1 second sample…
 - #procs —————memory (KB)————— —swaps— —–io—- —system— —-cpu—–
 - # r b swpd free buff cache inact active si so bi bo in cs us sy id wa
 - 1 0 0 1733M 242M 1922M 1137M 710M 0 0 0 108 1982 3918 2 0 95 1
 - 1 0 0 1733M 242M 1922M 1137M 710M 0 0 0 0 1906 3886 1 0 98 0
 - 1 0 0 1733M 242M 1922M 1137M 710M 0 0 0 0 1739 3480 3 0 96 0
 
11. 子系统的详细信息
下面的命令以一秒为间隔,统计5次CPU信息并和时间一起显示出详细信息(冗长)。
- $ collectl –sc –c5 –i1 —verbose –oT
 - waiting for 1 second sample…
 - # CPU SUMMARY (INTR, CTXSW & PROC /sec)
 - #Time User Nice Sys Wait IRQ Soft Steal Idle CPUs Intr Ctxsw Proc RunQ Run Avg1 Avg5 Avg15 RunT BlkT
 - 14:22:10 11 0 0 0 0 0 0 87 4 1312 2691 0 866 1 0.78 0.86 0.78 1 0
 - 14:22:11 15 0 0 0 0 0 0 84 4 1283 2496 0 866 1 0.78 0.86 0.78 1 0
 - 14:22:12 17 0 0 0 0 0 0 82 4 1342 2658 0 866 0 0.78 0.86 0.78 0 0
 - 14:22:13 15 0 0 0 0 0 0 84 4 1241 2429 0 866 1 0.78 0.86 0.78 1 0
 - 14:22:14 11 0 0 0 0 0 0 88 4 1270 2488 0 866 0 0.80 0.87 0.78 0 0
 
改变”-s”变量查看不同的子系统。
为各位朋友分享的相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多


		
			    	微信扫一扫打赏
			    
			    	支付宝扫一扫打赏	
			    