collectl:一款高级的Linux一体化性能监测工具

译文
系统 Linux
对Linux系统管理员来说,最重要的任务莫过于确保他或她管理的系统处于非常良好的情况。Linux系统管理员可以使用好多工具,帮助监测和显示系统里面的进程,比如top和htop,但这些工具没有一个比得上collectl。

对Linux系统管理员来说,最重要的任务莫过于确保他或她管理的系统处于非常良好的情况。Linux系统管理员可以使用好多工具,帮助监测和显示系统里面的进程,比如top和htop,但这些工具没有一个比得上collectl。

 

collectl:Linux性能监测工具

collectl是一款非常棒的、功能丰富的命令实用工具,它可以用来收集描述系统当前状况的性能数据。不像大多数其他的监测工具,collectl并不着眼于数量有限的系统衡量指标,而是可以收集关于许多不同类型的系统资源的信息,比如处理器、磁盘、内存、网络、套接字、TCP、索引节点、Infiniband、Lustre、NFS、进程、quadric、slab和伙伴系统信息等资源。

使用collectl的一个非常好的方面是,它还能扮演像top、ps和iotop另外许多这些只针对某个特定用途设计的实用工具的角色。那么,哪些功能特性让colleclt成为一款实用工具呢?

我在进行了大量的研究后,整理出了一份清单,为大家列出了collectl命令行实用工具的一些最重要的功能特性。

collectl的功能特性

◦它能够以交互式运行、作为守护程序运行,或者两者兼而有之。

◦它能够显示采用多种格式的输出结果。

◦它能够监测几乎任何一个子系统。

◦它能扮演像ps、top、iotop或vmstat这些另外许多实用工具的角色。

◦它能够记录并回放捕获的数据。

◦它能够以众多文件格式导出数据。(如果你想借助外部工具来分析数据,这项功能就非常有用)。

◦它能够作为一项服务来运行,以监测远程机器或整个服务器集群。

◦它能够在终端中显示数据,并将数据写入到文件或套接字。

如何在Linux中安装collectl?

collectl实用工具可以在所有Linux发行版上运行,它只需要perl就能运行,所以确保你在机器中安装collectl之前已在机器中安装了Perl。

在Debian/Ubuntu/Linux Mint上

下面这个命令可用于将collectl实用工具安装在基于Debian的机器上,比如Ubuntu。

  1. $ sudo apt-get install collectl 

在RHEL/CentOS/Fedora上

如果你使用基于红帽的发行版,很容易借助yum命令,从软件库获取它。

  1. # yum install collectl 

collectl实用工具的一些实际例子

一旦collectl工具安装完毕,你很容易从终端来运行它,甚至不带任何选项。下面这个命令将以一种非常简短而易于阅读的格式,显示关于处理器、磁盘和网络统计数字等的信息。

 

  1. # collectl  
  2. waiting for 1 second sample...  
  3. #  
  4. #cpu  sys  inter  ctxsw KBRead  Reads KBWrit  Writes   KBIn  PktIn  KBOut  PktOut   
  5.   13   5   790   1322      0      0     92      7      4     13      0       5   
  6.   10   2   719   1186      0      0      0      0      3      9      0       4   
  7.   12   0   753   1188      0      0     52      3      2      5      0       6   
  8.   13   2   733   1063      0      0      0      0      1      1      0       1   
  9.   25   2   834   1375      0      0      0      0      1      1      0       1   
  10.   28   2   870   1424      0      0     36      7      1      1      0       1   
  11.   19   3   949   2271      0      0     44      3      1      1      0       1   
  12.   17   2   809   1384      0      0      0      0      1      6      0       6   
  13.   16   2   732   1348      0      0      0      0      1      1      0       1   
  14.   22   4   993   1615      0      0     56      3      1      2      0       3  

 

大家可以从终端屏幕中显示的上述输出结果中看到,处理命令输出中的系统衡量标准值非常容易,因为它就显示在单单一行上。

collectl实用工具不带任何选项执行后,它显示了关于下列子系统的信息:

◦处理器

◦磁盘

◦网络

注意:在我们这个例子中,子系统是指可以测量的每一种系统资源。

你还可以显示除slab之外的所有子系统的统计数字,只要结合该命令和–all选项,如下所示。

 

  1. # collectl --all  
  2. waiting for 1 second sample...  
  3. #  
  4. #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   
  5.   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   
  6.   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   
  7.   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   
  8.   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   
  9.   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   
  10.   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   
  11.   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   
  12.   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  

 

但是,你如何借助该实用工具监测处理器的使用情况?“-s”选项可用于控制收集或回放哪些子系统数据。

比如说,下面这个命令可用于监测处理器使用情况的摘要。

 

  1. # collectl -sc  
  2. waiting for 1 second sample...  
  3. #  
  4. #cpu  sys inter  ctxsw   
  5.   15   2   749   1155   
  6.   16   3   772   1445   
  7.   14   2   793   1247   
  8.   27   4   887   1292   
  9.   24   1   796   1258   
  10.   16   1   743   1113   
  11.   15   1   743   1179   
  12.   14   1   706   1078   
  13.   15   1   764   1268 

 

如果你结合命令和“scdn”,会出现什么情况?想学习如何使用命令行工具,***的办法就是尽可能实际运用一下,所以在你的终端中运行下面这个命令,看看会出现什么情况。

 

  1. # collectl -scdn  
  2. waiting for 1 second sample...  
  3. #  
  4. #cpu  sys  inter  ctxsw KBRead  Reads KBWrit  Writes   KBIn  PktIn  KBOut  PktOut   
  5.   25   4   943   3333      0      0      0      0      1      1      0       2   
  6.   27   3   825   2910      0      0      0      0      1      1      0       1   
  7.   27   5   886   2531      0      0      0      0      0      0      0       1   
  8.   20   4   872   2406      0      0      0      0      1      1      0       1   
  9.   26   1   854   2091      0      0     20      2      1      1      0       1   
  10.   39   4  1004   3398      0      0      0      0      2      8      3       6   
  11.   41   6   955   2464      0      0     40      3      1      2      0       3   
  12.   25   7   890   1609      0      0      0      0      1      1      0       1   
  13.   16   2   814   1165      0      0    796     43      2      2      0       2   
  14.   14   1   779   1383      0      0     48      6      1      1      0       1   
  15.   11   2   795   1285      0      0      0      0      2     14      1      14  

 

你很容易明白:默认选项是“cdn”,它代表处理器、磁盘和网络数据。命令的结果与“collectl -scn”的输出结果一样。

如果你想收集关于内存的数据,使用下面这个命令。

 

  1. # collectl -sm  
  2. waiting for 1 second sample...  
  3. #  
  4. #Free  Buff  Cach Inac  Slab   Map   
  5.    1G 177M   1G 684M 193M   1G   
  6.    1G 177M   1G 684M 193M   1G   
  7.    1G 177M   1G 684M 193M   1G   
  8.    1G 177M   1G 684M 193M   1G   
  9.    1G 177M   1G 684M 193M   1G   
  10.    1G 177M   1G 684M 193M   1G   
  11.    1G 177M   1G 684M 193M   1G   
  12.    1G 177M   1G 684M 193M   1G  

 

如果你想获得关于内存使用情况、闲置内存以及对系统性能而言很重要的其他方面的一些详细信息,上述输出结果非常有用。

想获得关于tcp的一些数据?使用下面这个命令即可实现。

 

  1. # collectl -st  
  2. waiting for 1 second sample...  
  3. #  
  4. #  IP  Tcp  Udp Icmp   
  5.     0    0    0    0   
  6.     0    0    0    0   
  7.     0    0    0    0   
  8.     0    0    0    0   
  9.     0    0    0    0   
  10.     0    0    0    0   
  11.     0    0    0    0   
  12.     0    0    0    0   
  13.     0    0    0    0   
  14.     0    0    0    0   
  15. 0    0    0    0  

 

你有了一定的经验后,就很容易结合诸多选项,获得所需要的结果。比如说,你可以结合代表tcp的“t”和代表处理器的“c”。下面这个命令就实现了这项功能。

 

  1. # collectl -stc  
  2. waiting for 1 second sample...  
  3. #  
  4. #cpu  sys  inter   ctxsw   IP  Tcp  Udp Icmp   
  5.   23   8   961   3136    0    0    0    0   
  6.   24   5   916   3662    0    0    0    0   
  7.   21   8   848   2408    0    0    0    0   
  8.   30  10   916   2674    0    0    0    0   
  9.   38   3   826   1752    0    0    0    0   
  10.   31   3   820   1408    0    0    0    0   
  11.   15   5   781   1335    0    0    0    0   
  12.   17   3   802   1314    0    0    0    0   
  13.   17   3   755   1218    0    0    0    0   
  14.   14   2   788   1321    0    0    0    0  

 

我们人类很难记住所有的可用选项,于是我列出了该工具支持的子系统摘要列表。

◦b – 伙伴系统信息(内存片段)

◦c – 处理器

◦d – 磁盘

◦f – NFS V3数据

◦i – 索引节点和文件系统

◦j – 中断

◦l – Lustre

◦m – 内存

◦n – 网络

◦s – 套接字

◦t – TCP

◦x – 互连

◦y – slabs(系统对象缓存)

对Linux用户的系统管理员来说,一个非常重要的数据就是磁盘使用情况方面所收集的数据。下面这个命令将帮助你监测磁盘的使用情况。

 

  1. # collectl -sd  
  2. waiting for 1 second sample...  
  3. #  
  4. #KBRead  Reads KBWrit Writes   
  5.       0      0      0      0   
  6.       0      0      0      0   
  7.       0      0     92      7   
  8.       0      0      0      0   
  9.       0      0     36      3   
  10.       0      0      0      0   
  11.       0      0      0      0   
  12.       0      0    100      7   
  13.       0      0      0      0  

 

你还可以使用“-sD”选项,收集关于单个磁盘的数据,但是你要知道关于全部磁盘的数据不会报告。

 

  1. # collectl -sD  
  2. waiting for 1 second sample...  
  3. # DISK STATISTICS (/sec)  
  4. #           Pct  
  5. #Name       KBytes Merged  IOs Size  Kbytes  Merged  IOs  Size  RWSize  QLen  Wait SvcTim Util  
  6. sda              0      0    0    0      52     11    2   26      26     1     8      8    1  
  7. sda              0      0    0    0       0      0    0    0       0     0     0      0    0  
  8. sda              0      0    0    0      24      0    2   12      12     0     0      0    0  
  9. sda              0      0    0    0     152      0    4   38      38     0     0      0    0  
  10. sda              0      0    0    0     192     45    3   64      64     1    20     20    5  
  11. sda              0      0    0    0     204      0    2  102     102     0     0      0    0  
  12. sda              0      0    0    0       0      0    0    0       0     0     0      0    0  
  13. sda              0      0    0    0     116     26    3   39      38     1    16     16    4  
  14. sda              0      0    0    0       0      0    0    0       0     0     0      0    0  
  15. sda              0      0    0    0       0      0    0    0       0     0     0      0    0  
  16. sda              0      0    0    0      32      5    3   11      10     1    16     16    4  
  17. sda              0      0    0    0       0      0    0    0       0     0     0      0    0  

 

你还可以使用其他的具体子系统来收集详细数据。下面列出了各个具体子系统。

◦C – 处理器

◦D – 磁盘

◦E – 环境数据(风扇、电源和温度),通过ipmitool

◦F – NFS数据

◦J – 中断

◦L – Lustre OST的细节,或者客户端文件系统的细节

◦N – 网络

◦T – 只有plot格式才有的65个TCP计数器

◦X – 互连

◦Y – Slabs(系统对象缓存)

◦Z – 进程

collectl实用工具有许多可用选项,而仅仅一篇文章没有足够的时间和篇幅来逐一细述。不过,有必要了解如何将该实用工具作为top和ps来使用。

很容易让collectl作为top实用工具来使用,只要在你的终端中运行下面这个命令,你会看到top工具在Linux系统中执行时提供的类似输出结果。

 

  1. # collectl --top  
  2. # TOP PROCESSES sorted by time (counters are /sec) 13:11:02  
  3. # PID  User     PR  PPID THRD S   VSZ   RSS CP  SysT  UsrT Pct  AccuTime  RKB  WKB MajF MinF Command  
  4. ^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   
  5.  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   
  6.  5851  tecmint  20  4666    0 R   17M   13M  0  0.02  0.06   8  00:01.28    0    0    0    0 /usr/bin/perl   
  7.  1682  root     20  1666    2 R  211M   55M  1  0.02  0.01   3  03:10.24    0    0    0   95 /usr/bin/X   
  8.  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   
  9.  4658  tecmint  20  4657    3 S  207M   17M  1  0.00  0.02   2  00:08.23    0    0    0  142 gnome-terminal   
  10.  2890  tecmint  20  2571    3 S  340M   68M  0  0.00  0.01   1  01:19.95    0    0    0    0 compiz   
  11.  3521  tecmint  20     1   24 S  710M  148M  1  0.01  0.00   1  01:47.84    0    0    0    0 skype   
  12.     1  root     20     0    0 S    3M    2M  0  0.00  0.00   0  00:02.57    0    0    0    0 /sbin/init   
  13.     2  root     20     0    0 S     0     0  1  0.00  0.00   0  00:00.00    0    0    0    0 kthreadd   
  14.     3  root     20     2    0 S     0     0  0  0.00  0.00   0  00:00.60    0    0    0    0 ksoftirqd/0   
  15.     5  root      0     2    0 S     0     0  0  0.00  0.00   0  00:00.00    0    0    0    0 kworker/0:0H   
  16.     7  root      0     2    0 S     0     0  0  0.00  0.00   0  00:00.00    0    0    0    0 kworker/u:0H   
  17.     8  root     RT     2    0 S     0     0  0  0.00  0.00   0  00:04.42    0    0    0    0 migration/0   
  18.     9  root     20     2    0 S     0     0  0  0.00  0.00   0  00:00.00    0    0    0    0 rcu_bh   
  19.    10  root     20     2    0 R     0     0  0  0.00  0.00   0  00:02.22    0    0    0    0 rcu_sched   
  20.    11  root     RT     2    0 S     0     0  0  0.00  0.00   0  00:00.05    0    0    0    0 watchdog/0   
  21.    12  root     RT     2    0 S     0     0  1  0.00  0.00   0  00:00.07    0    0    0    0 watchdog/1   
  22.    13  root     20     2    0 S     0     0  1  0.00  0.00   0  00:00.73    0    0    0    0 ksoftirqd/1   
  23.    14  root     RT     2    0 S     0     0  1  0.00  0.00   0  00:01.96    0    0    0    0 migration/1   
  24.    16  root      0     2    0 S     0     0  1  0.00  0.00   0  00:00.00    0    0    0    0 kworker/1:0H   
  25.    17  root      0     2    0 S     0     0  1  0.00  0.00   0  00:00.00    0    0    0    0 cpuset  

 

现在***但并非最不重要的是,想把collectl实用工具用作ps工具,在你的终端中运行下面这个命令。你会获得关于系统中进程的信息,就跟你在终端中运行“ps”命令所得到的输出一样。

 

  1. # collectl -c1 -sZ -i:1  
  2. waiting for 1 second sample...  
  3. ### RECORD    1 >>> tecmint-vgn-z13gn <<< (1397979716.001) (Sun Apr 20 13:11:56 2014) ###  
  4. # PROCESS SUMMARY (counters are /sec)  
  5. # PID  User     PR  PPID THRD S   VSZ   RSS CP  SysT  UsrT Pct  AccuTime  RKB  WKB MajF MinF Command  
  6.     1  root     20     0    0 S    3M    2M  0  0.00  0.00   0  00:02.57    0    0    0    0 /sbin/init   
  7.     2  root     20     0    0 S     0     0  1  0.00  0.00   0  00:00.00    0    0    0    0 kthreadd   
  8.     3  root     20     2    0 S     0     0  0  0.00  0.00   0  00:00.60    0    0    0    0 ksoftirqd/0   
  9.     5  root      0     2    0 S     0     0  0  0.00  0.00   0  00:00.00    0    0    0    0 kworker/0:0H   
  10.     7  root      0     2    0 S     0     0  0  0.00  0.00   0  00:00.00    0    0    0    0 kworker/u:0H   
  11.     8  root     RT     2    0 S     0     0  0  0.00  0.00   0  00:04.42    0    0    0    0 migration/0   
  12.     9  root     20     2    0 S     0     0  0  0.00  0.00   0  00:00.00    0    0    0    0 rcu_bh   
  13.    10  root     20     2    0 S     0     0  0  0.00  0.00   0  00:02.24    0    0    0    0 rcu_sched   
  14.    11  root     RT     2    0 S     0     0  0  0.00  0.00   0  00:00.05    0    0    0    0 watchdog/0   
  15.    12  root     RT     2    0 S     0     0  1  0.00  0.00   0  00:00.07    0    0    0    0 watchdog/1   
  16.    13  root     20     2    0 S     0     0  1  0.00  0.00   0  00:00.73    0    0    0    0 ksoftirqd/1   
  17.    14  root     RT     2    0 S     0     0  1  0.00  0.00   0  00:01.96    0    0    0    0 migration/1   
  18.    16  root      0     2    0 S     0     0  1  0.00  0.00   0  00:00.00    0    0    0    0 kworker/1:0H   
  19.    17  root      0     2    0 S     0     0  1  0.00  0.00   0  00:00.00    0    0    0    0 cpuset   
  20.    18  root      0     2    0 S     0     0  1  0.00  0.00   0  00:00.00    0    0    0    0 khelper   
  21.    19  root     20     2    0 S     0     0  0  0.00  0.00   0  00:00.00    0    0    0    0 kdevtmpfs   
  22.    20  root      0     2    0 S     0     0  0  0.00  0.00   0  00:00.00    0    0    0    0 netns   
  23.    21  root     20     2    0 S     0     0  0  0.00  0.00   0  00:00.00    0    0    0    0 bdi-default   
  24.    22  root      0     2    0 S     0     0  0  0.00  0.00   0  00:00.00    0    0    0    0 kintegrityd  

 

我非常确信,许多Linux系统管理员会喜欢这款工具,如果最充分地使用它,就会领略其强大的功能。如果你想进一步了解collectl,可以参阅参考手册页,并且不断实际运用一下。

只要在终端中键入下面这个命令,就可以开始阅读参考手册页了。

  1. # man collectl 

参考链接

collectl的主页:http://collectl.sourceforge.net/index.html

英文链接: http://www.tecmint.com/linux-performance-monitoring-with-collectl-tool/

 

责任编辑:牛小雨 来源: 51CTO
相关推荐

2009-12-03 15:34:41

Suse Linux

2022-08-07 21:10:28

Koodo开源电子书阅读器

2015-12-09 15:01:48

Linux性能监控工具

2019-11-11 08:00:00

Doppler远程监测工具Linux

2013-12-26 09:46:43

Monitorix监测工具

2023-08-07 15:46:48

Anytype开源

2021-01-29 19:57:30

NLP 工具TurboNLPExp

2017-07-03 10:54:24

UbuntuLinux MintuCareSystem

2009-09-07 23:09:17

2017-05-16 10:46:06

博阳咨询流程管理

2019-07-22 09:24:54

LinuxMySQL数据库

2023-07-19 22:13:25

一体化推送平台

2009-07-02 09:32:00

2024-03-25 08:15:02

数据分析AI 一体化大数据

2014-05-12 15:51:03

浪潮BIM一体化

2011-05-24 09:26:02

有线无线3G

2009-08-17 22:32:25

IT运维管理监控运维一体化摩卡

2009-05-13 08:21:11

SUSELinux桌面

2022-08-18 11:12:51

Cloudera​数据湖仓SaaS
点赞
收藏

51CTO技术栈公众号