Collectl:用于Linux的高级一体化性能监控工具

Collectl是一个性能监视工具,用于收集有关系统资源的信息,例如cpu,磁盘,内存,网络,inode,nfs,进程等

Linux系统管理员最重要的职责是确保他/她正在管理的系统处于非常好的状态。 目前可供Linux系统管理员,可以帮助监控和系统中的显示过程,如许多工具顶部HTOP ,但没有这些工具可以collectl竞争。

在CentOS中安装Collectl

Collectl:Linux性能监控

collectl是一个很不错的功能丰富的命令行实用工具,可用于收集描述当前系统状态的性能数据。 与大多数其他监控工具不同,collectl不关注有限数量的系统指标,而是可以收集许多不同类型的系统资源的信息,如cpu,磁盘,内存,网络,套接字,tcp,inode,infiniband,光泽,内存,nfs,进程,二进制,slab和buddyinfo。

有关使用collectl一件非常好的事情是,它也可以起到这种设计只用一个特定的目的,如顶部,PS,公用事业中的作用iotop等等。 什么是一些功能,使colleclt一个有用的工具?

在做了大量的研究后,我编译了一些列表,其中一些最重要的功能collectl命令行实用程序为你们。

Collectl功能

  1. 它可以交互运行,作为守护程序或两者。
  2. 它可以显示多种格式的输出。
  3. 它具有监视几乎任何子系统的能力。
  4. 它可以发挥许多其他实用程序的作用,如ps,top,iotop,vmstat。
  5. 它具有记录和回放捕获的数据的能力。
  6. 它可以导出各种文件格式的数据。 (当您想要使用外部工具分析数据时,这是非常有用的)。
  7. 它可以作为服务运行以监视远程机器或整个服务器集群。
  8. 它可以在终端中显示数据,写入文件或套接字。

如何在Linux中安装collectl

collectl工具在所有Linux发行版上运行,它需要运行的唯一事情是perl的,所以一定要确保你有Perl安装在您的机器在你的机器上安装collectl之前。

在Debian / Ubuntu / Linux Mint

以下命令可用于在基于Debian的计算机(如Ubuntu)中安装collectl实用程序。

$ sudo apt-get install collectl
在RHEL / CentOS / Fedora上

如果你使用基于Red Hat的发行版,你可以使用yum命令轻松地从repos中获取它。

# yum install collectl

collectl实用程序的一些实际示例

一旦collectl工具的安装完成,您可以轻松地从终端运行它,即使没有任何选项。 以下命令将以非常短且可读的格式显示有关cpu,磁盘和网络统计信息。

# 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

正如你们可以从终端屏幕上显示的上述输出中看到的,很容易使用命令输出中存在的系统度量值,因为它显示在单个行上。

当执行collectl实用程序时没有任何选项,它显示有关以下子系统的信息:

  1. 中央处理器
  2. 磁盘
  3. 网络

注意 :在我们的情况下,一个子系统是每一种类型的可被测量的系统资源的。

您还可以通过在命令如下所示-all选项结合显示,除了地砖所有子系统的统计数据。

# 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

但是,如何通过该实用程序的帮助来监视cpu使用情况? '-s'选项应该用于控制哪个子系统数据是要收集或回放。

例如,以下命令可用于监视cpu用法的摘要。

# 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

当你把用“scdn”命令,会发生什么? 学习如何使用命令行工具的最好方法是尽可能多地练习,因此在终端中运行以下命令,看看会发生什么。

# 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

你可以很容易明白,默认选项为“CDN”,它代表了CPU,磁盘和网络数据。 该命令的结果是具有“collectl -SCN”的输出相同的

如果要收集有关内存的数据,请使用以下命令。

# 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

上面的输出是非常有用的,当你想得到一些关于你的内存使用,可用内存和其他重要的东西,为您的系统的性能的详细信息。

tcp上的一些数据怎么样? 使用以下命令来执行。

# 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

在你获得了一些经验后,你可以轻松地组合选项,以得到你想要的结果。 例如,您可以对TCP和“C”代表CPU结合“T”。 以下命令执行此操作。

# 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

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

  1. b -好友信息(内存碎片)
  2. Ç - CPU
  3. ð -磁盘
  4. 的F - NFS V3数据
  5. - i节点和文件系统
  6. 的J -中断
  7. L -光泽
  8. -内存
  9. N -网络
  10. -套接字
  11. - TCP
  12. 点¯x -互连
  13. Ÿ -板坯(系统对象缓存)

对于系统管理员或Linux用户来说,一个非常重要的数据是根据磁盘使用情况收集的数据。 以下命令将帮助您监视磁盘使用情况。

# 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”选项收集单个磁盘上的数据,但你必须要知道总的磁盘上的信息不会被报道。

# 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

您还可以使用其他详细子系统收集详细数据。 以下是详细子系统的列表。

  1. Ç - CPU
  2. ð -磁盘
  3. Ë -环境数据(风扇,电源,温度),通过的ipmitool
  4. 的F - NFS数据
  5. 的J -中断
  6. L - Lustre的OST细节或客户端文件系统的细节
  7. N -网络
  8. - 65只TCP情节格式提供计数器
  9. 点¯x -互连
  10. Ÿ -板坯(系统对象缓存)
  11. ž -过程

collectl实用程序中有许多可用选项,但没有足够的时间和空间在一篇文章中涵盖所有这些选项。 不过值得一提的,教如何使用该实用程序,topps。

这是很容易使collectl工作作为最高效用,只是在你的终端运行下面的命令,你会看到类似的输出,当它在你的Linux系统中执行顶部工具给你。

# 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!howtoing  20     1   40 R    1G  626M  0  0.01  0.14  15  28:48.24    0    0    0  109 /usr/lib/firefox/firefox 
3403  howtoing  20     1   40 R    1G  626M  1  0.00  0.20  20  28:48.44    0    0    0  600 /usr/lib/firefox/firefox 
5851  howtoing  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  howtoing  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  howtoing  20  4657    3 S  207M   17M  1  0.00  0.02   2  00:08.23    0    0    0  142 gnome-terminal 
2890  howtoing  20  2571    3 S  340M   68M  0  0.00  0.01   1  01:19.95    0    0    0    0 compiz 
3521  howtoing  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

现在最后但并非最不重要的是,要使用collectl实用程序作为ps工具,请在终端中运行以下命令。 当您在终端运行“PS”命令,你会得到关于你的系统相同的方式,你做的进程的信息。

# collectl -c1 -sZ -i:1
waiting for 1 second sample...
### RECORD    1 >>> howtoing-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系统管理员会喜欢这个工具,并将感觉到它的力量,当使用它最充分。 如果你想提高你的collectl的知识到下一级参考它的手册页,并继续练习。

只需在终端中键入以下命令并开始读取。

# man collectl

参考链接

collectl首页