Collectl: 全能Linux 性能监控工具


对于一个 Linux 系统管理员来说确保自己管理的系统处于一个良好的状态是其首要责任。Linux 系统管理员可以找到有很多工具来帮助自己监控和显示系统中的进程,例如 top 和 htop ,但是这些工具都不能与 collectl 相媲美。

Collectl: Linux Performance Monitoring

在 Linux/UNIX 终端下使用 nload 实时监控网络流量和带宽使用

Linux 系统实时监控的瑞士军刀 —— Glances 

Linux性能优化和监控系列(一)——top工具

Linux流量监控工具 – iftop  

collectl是一款非常优秀并且有着丰富的命令行功能的实用程序,你可以用它来采集描述当前系统状态的性能数据。不同于大多数其它的系统监控工具,collectl 并非仅局限于有限的系统度量,相反,它可以收集许多不同类型系统资源的相关信息,如 cpu 、disk、memory 、network 、sockets 、 tcp 、inodes 、infiniband 、 lustre 、memory、nfs、processes、quadrics、slabs和buddyinfo等。

使用 collectl 的另一个好处就是它可以替代那些特定用途的工具如: top、ps、iotop 等等其它工具。那么 collectl 有什么特性而使其成为一个有用的工具呢?

经过许多研究后,我总结了 collectl 的命令行功能的一些非常重要的特性。

Collectl 特性

  • 可以交互式地运行或作为一个守护进程,或同时二者兼备地运行。

  • 可以以多种格式显示输出。

  • 可以监控几乎所有的子系统。

  • 可以替代许多工具如 ps、top、iotop、vmstat。

  • 可以记录并回放捕获的数据。

  • 可以将数据导出成多种数据格式。(这在你想用外部工具分析数据时非常有用)

  • 可以作为一个服务来监控远程机或者整个服务器集群。

  • 可以在终端显示数据,写入数据到文件或者一个套接字。

如何在Linux上安装collectl

collectl可以在所有的 Linux 发行版上运行,唯一需要的就是 perl 语言,所以在安装 collectl 之前,一定要确保你的电脑上已经安装了Perl。

对于Debian/Ubuntu/Linux Mint

下面的命令可以用来在以 Debian 为基础的设备如 Ubuntu 上安装 collectl。

  1. $ sudo apt-get install collectl

对于RHEL/CentOS/Fedora

如果你正在使用基于红帽的发行版,你可以用 yum 命令轻松获取它。

  1. # yum install collectl

一些关于collectl的实例

collectl 工具安装完成之后,你可以轻松地在终端运行它,你甚至不需要指定任何选项。下面的命令将会以简短易读的格式显示cpu、硬盘和网络信息。

  1. # collectl
  2. waiting for1 second sample...
  3. #
  4. #cpu sys inter ctxsw KBRead Reads KBWrit Writes KBIn PktIn KBOut PktOut
  5. 13579013220092741305
  6. 102719118600003904
  7. 1207531188005232506
  8. 132733106300001101
  9. 252834137500001101
  10. 2828701424003671101
  11. 1939492271004431101
  12. 172809138400001606
  13. 162732134800001101
  14. 2249931615005631203

正如上面终端上所显示的,我们很容易观察该命令输出的系统度量值,因为它每次以一行显示。

不加任何参数执行 collectl 会显示下面子系统的信息

  • cpu
  • 磁盘
  • 网络

提示:在这里,一个子系统就是每一种可以测量的系统资源。

你也可以显示除slabs以外各个子系统的统计数据,这要结合下面的 -all 选项来实现。

  1. # collectl --all
  2. waiting for1 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. 16381715424303901G175M1G683M193M1G nsslkjjebbk 002431101000062300081602408290000
  6. 11174513243164261G175M1G683M193M1G nsslkjjebbk 00000302000062200081602408280000
  7. 15279316833714241G175M1G683M193M1G ssslkjjebbk 00001101000062200081602408290000
  8. 16287218754274461G175M1G683M193M1G ssslkjjebbk 002431101000062200081602408280000
  9. 24284213834733681G175M1G683M193M1G ssslkjjebbk 0016861101000062200081602408280000
  10. 27384410994783651G175M1G683M193M1G nsslkjjebbk 00001619000062200081602408280000
  11. 26582312383964281G175M1G683M193M1G ssslkjjebbk 000021139000062200081602408280000
  12. 15175312763613911G175M1G683M193M1G ssslkjjebbk 004031203000062300081602408290000

但是,你如何用它来监控 cpu 的使用情况呢? ‘-s’ 选项可以用来控制哪个子系统的数据需要收集和回放。

例如下面的命令可以用来对cpu使用情况进行一个总结。

  1. # collectl -sc
  2. waiting for1 second sample...
  3. #
  4. #cpu sys inter ctxsw
  5. 1527491155
  6. 1637721445
  7. 1427931247
  8. 2748871292
  9. 2417961258
  10. 1617431113
  11. 1517431179
  12. 1417061078
  13. 1517641268

当你将这个命令与“scdn”结合时会发生什么呢?学习命令行工具最好的方式就是多加练习,所以在终端运行下面的命令看看会发生什么吧。

  1. # collectl -scdn
  2. waiting for1 second sample...
  3. #
  4. #cpu sys inter ctxsw KBRead Reads KBWrit Writes KBIn PktIn KBOut PktOut
  5. 254943333300001102
  6. 273825291000001101
  7. 275886253100000001
  8. 204872240600001101
  9. 2618542091002021101
  10. 3941004339800002836
  11. 4169552464004031203
  12. 257890160900001101
  13. 162814116500796432202
  14. 1417791383004861101
  15. 11279512850000214114

 

更多详情见请继续阅读下一页的精彩内容:

  • 1
  • 2
  • 下一页

相关内容