Linux系统监控神器--Collectl


系统资源监控

为使系统良好运转,Linux系统管理员经常需要监测cpu,内存,磁盘,网络等系统信息。Linux上已有iotop,top,free,htop,sar等丰富的常规工具来实现监测功能。今天让我们走进Collectl来了解这个集测试/监控/分析系统性能为一体的Linux工具。

Collectl作为一个轻量级的监控工具,在同类工具中是功能最全的。用户可监测不同的复杂系统矩阵值,并可保留数据以做之后的分析。不同于其他只用来监测特定系统参数的工具,Collectl可以同时监测不同的变量,并以合适的方式记录它们。

摘自Collectl官网 ...

不同于或聚焦于一小组统计数据、采用唯一输出方式,或采用迭代、作为守护进程运行的大部分监测工具,collectl可以同时全部实现。用户可选择各种子系统中的任一系统来监测包括内存,CPU,磁盘,索引节点,无线带宽,lustre,内存,网络,网络文件系统,进程,二次型,slabs,套接口及TCP等信息。

深入学习前让我们先看以下命令。

  1. $ collectl
  2. waiting for1 second sample...
  3. #<--------CPU--------><----------Disks-----------><----------Network---------->
  4. #cpu sys inter ctxsw KBRead Reads KBWrit Writes KBIn PktIn KBOut PktOut
  5. 00864177200000100
  6. 521338273400820001
  7. 1012222647009230201
  8. 107631722008030102

CPU使用率,磁盘输入输出和网络活动以每秒为单位来加载。对可以理解这些数据的人来说这些信息很容易读懂。这项列表在给定的时间间隔里会持续增加,并可直接形成一项文件跟踪日志。collectl工具提供了各种命令来对这些数据进行记录,查找及做其他处理。

安装collectl工具

对Ubuntu/Debian用户来说Collectl是默认资源,所以使用apt命令便可获取。

  1. $ sudo apt-get install collectl

Fedora/CentOS用户使用yum命令便可获取。

  1. $ yum install collectl

使用

必要的了解 - Collectl子系统

子系统是可检测到的不同系统资源类型。像CPU,内存,带宽等等都可构成一个子系统。只运行collectl命令将以批处理模式输出CPU,磁盘和网络子系统信息,我们在上文已看到相关内容。

从操作说明可以看到,Collectl可以识别以下子系统。

  1. 总计子系统
  2. b - buddy info (内存片段)
  3. c - CPU
  4. d -Disk
  5. f - NFS V3 Data
  6. i -InodeandFileSystem
  7. j -Interrupts
  8. l -Lustre
  9. m -Memory
  10. n -Networks
  11. s -Sockets
  12. t - TCP
  13. x -Interconnect
  14. y -Slabs(system object caches)
  15. 细节子系统
  16. 这是一系列的详细信息,大部分情况下都会由相应的总计数据衍生出来。目前“环境变量”和“进程”2类没有相应的总计数据。如果有3个磁盘,选择-sd,将只会看到3个磁盘组合出的单一信息。如果选择-sD,将会分别显示各磁盘信息。
  17. C - CPU
  18. D -Disk
  19. E -Environmental data (fan, power, temp), via ipmitool
  20. F - NFS Data
  21. J -Interrupts
  22. L -Lustre OST detail OR client Filesystem detail
  23. M -Memory node data, which is also known as numa data
  24. N -Networks
  25. T -65 TCP counters only available in plot format
  26. X -Interconnect
  27. Y -Slabs(system object caches)
  28. Z -Processes

使用“-s”来监测特定的子系统并向其添加子系统的识别项。现在让我们举几个例子。

1. 监测cpu使用率

用“-sc”实现CPU总使用率的监测

  1. $ collectl -sc
  2. waiting for1 second sample...
  3. #<--------CPU-------->
  4. #cpu sys inter ctxsw
  5. 3018003729
  6. 3017673599

使用“-C”观察各个单独的CPU使用情况。结果将会输出多行,分别对应一个CPU。

  1. $ collectl -sC
  2. waiting for1 second sample...
  3. # SINGLE CPU STATISTICS
  4. # Cpu User Nice Sys Wait IRQ Soft Steal Idle
  5. 0300000096
  6. 1300000096
  7. 2200000097
  8. 3100000098
  9. 0200000097
  10. 1202000095
  11. 2100000098
  12. 3401000095

如果需要,可以同时使用C和c来获取单项CPU监测数据和汇总数据。

2. 内存监测

使用m子系统查看内存。

  1. $ collectl -sm
  2. waiting for1 second sample...
  3. #<-----------Memory----------->
  4. #Free Buff Cach Inac Slab Map
  5. 2G220M1G1G210M3G
  6. 2G220M1G1G210M3G
  7. 2G220M1G1G210M3G

不难解释。 M用来查看更多内存的详细信息。

  1. $ collectl -sM
  2. waiting for1 second sample...
  3. # MEMORY STATISTICS
  4. # Node Total Used Free Slab Mapped Anon Locked Inact Hit%
  5. 07975M5939M2036M215720K372184K06652K1434M0
  6. 07975M5939M2036M215720K372072K06652K1433M0

这类似于免费报告吗?

3. 查看磁盘使用情况

d和D可以查看磁盘使用的概况和详细情况。

  1. $ collectl -sd
  2. waiting for1 second sample...
  3. #<----------Disks----------->
  4. #KBRead Reads KBWrit Writes
  5. 4113624
  6. 008013
  7. $ collectl -sD
  8. waiting for1 second sample...
  9. # DISK STATISTICS (/sec)
  10. # <---------reads---------><---------writes---------><--------averages--------> Pct
  11. #Name KBytes Merged IOs Size KBytes Merged IOs Size RWSize QLen Wait SvcTim Util
  12. sda 0000000000000
  13. sda 0000000000000
  14. sda 10211715322621
  15. sda 0000921151818112125

“--verbose”命令可以用来查看附加信息。和D命令不同,它将概况扩展,包含了更多信息。

  1. $ collectl -sd --verbose

4. 同时报告多系统情况

如果想要同时得到CPU,内存和磁盘报告,那么同时使用子命令组合来实现。

  1. $ collectl -scmd
  2. waiting for1 second sample...
  3. #<--------CPU--------><-----------Memory-----------><----------Disks----------->
  4. #cpu sys inter ctxsw Free Buff Cach Inac Slab Map KBRead Reads KBWrit Writes
  5. 40218743341G221M1G1G210M3G0000
  6. 30189640651G221M1G1G210M3G00205

5. 显示统计时间

若要将每行的监测信息和时间一同显示,使用T选项。通过在“-o”参数来指定。

  1. $ collectl -scmd -oT
  2. waiting for1 second sample...
  3. # <--------CPU--------><-----------Memory-----------><----------Disks----------->
  4. #Time cpu sys inter ctxsw Free Buff Cach Inac Slab Map KBRead Reads KBWrit Writes
  5. 12:03:0530196140131G225M1G1G212M3G0000
  6. 12:03:0630188438101G225M1G1G212M3G0000
  7. 12:03:0730201140601G225M1G1G212M3G0000

使用“-oTm”可将时间换成毫秒显示。

  • 1
  • 2
  • 下一页

相关内容