Linux系统管理员最重要的职责是确保他/她正在管理的系统处于非常好的状态。 目前可供Linux系统管理员,可以帮助监控和系统中的显示过程,如许多工具顶部和HTOP ,但没有这些工具可以collectl竞争。
Collectl:Linux性能监控
collectl是一个很不错的功能丰富的命令行实用工具,可用于收集描述当前系统状态的性能数据。 与大多数其他监控工具不同,collectl不关注有限数量的系统指标,而是可以收集许多不同类型的系统资源的信息,如cpu,磁盘,内存,网络,套接字,tcp,inode,infiniband,光泽,内存,nfs,进程,二进制,slab和buddyinfo。
有关使用collectl一件非常好的事情是,它也可以起到这种设计只用一个特定的目的,如顶部,PS,公用事业中的作用iotop等等。 什么是一些功能,使colleclt一个有用的工具?
在做了大量的研究后,我编译了一些列表,其中一些最重要的功能collectl命令行实用程序为你们。
Collectl功能
- 它可以交互运行,作为守护程序或两者。
- 它可以显示多种格式的输出。
- 它具有监视几乎任何子系统的能力。
- 它可以发挥许多其他实用程序的作用,如ps,top,iotop,vmstat。
- 它具有记录和回放捕获的数据的能力。
- 它可以导出各种文件格式的数据。 (当您想要使用外部工具分析数据时,这是非常有用的)。
- 它可以作为服务运行以监视远程机器或整个服务器集群。
- 它可以在终端中显示数据,写入文件或套接字。
如何在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实用程序时没有任何选项,它显示有关以下子系统的信息:
- 中央处理器
- 磁盘
- 网络
注意 :在我们的情况下,一个子系统是每一种类型的可被测量的系统资源的。
您还可以通过在命令如下所示-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
我们人类很难记住所有可用的选项,所以我发布了该工具支持的子系统的摘要列表。
- b -好友信息(内存碎片)
- Ç - CPU
- ð -磁盘
- 的F - NFS V3数据
- 我 - i节点和文件系统
- 的J -中断
- L -光泽
- 米 -内存
- N -网络
- 秒 -套接字
- 笔 - TCP
- 点¯x -互连
- Ÿ -板坯(系统对象缓存)
对于系统管理员或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
您还可以使用其他详细子系统收集详细数据。 以下是详细子系统的列表。
- Ç - CPU
- ð -磁盘
- Ë -环境数据(风扇,电源,温度),通过的ipmitool
- 的F - NFS数据
- 的J -中断
- L - Lustre的OST细节或客户端文件系统的细节
- N -网络
- 笔 - 65只TCP情节格式提供计数器
- 点¯x -互连
- Ÿ -板坯(系统对象缓存)
- ž -过程
collectl实用程序中有许多可用选项,但没有足够的时间和空间在一篇文章中涵盖所有这些选项。 不过值得一提的,教如何使用该实用程序,top和ps。
这是很容易使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!youcl 20 1 40 R 1G 626M 0 0.01 0.14 15 28:48.24 0 0 0 109 /usr/lib/firefox/firefox 3403 youcl 20 1 40 R 1G 626M 1 0.00 0.20 20 28:48.44 0 0 0 600 /usr/lib/firefox/firefox 5851 youcl 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 youcl 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 youcl 20 4657 3 S 207M 17M 1 0.00 0.02 2 00:08.23 0 0 0 142 gnome-terminal 2890 youcl 20 2571 3 S 340M 68M 0 0.00 0.01 1 01:19.95 0 0 0 0 compiz 3521 youcl 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 >>> youcl-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