Linux安装使用系统监控工具Collectl的方法




Linux安装使用系统监控工具Collectl的方法

2022-07-20 20:28:16 网络知识 官方管理员

  作为Linux系统监控工具,Collectl是款值得推荐的软件,使用Collectl能够及时掌握系统的运行状况,还能像iotop命令一样使用collectl进行智能统计,下面小编就给大家介绍下Collectl的安装及使用。

  系统资源监控

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

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

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

  $collectl

  waitingfor1secondsample.。。

  #《--------CPU--------》《----------Disks-----------》《----------Network----------》

  #cpusysinterctxswKBReadReadsKBWritWritesKBInPktInKBOutPktOut

  00864177200000100

  521338273400820001

  1012222647009230201

  107631722008030102

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

  安装collectl工具

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

  $sudoapt-getinstallcollectl

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

  $yuminstallcollectl

  使用

  必要的了解-Collectl子系统

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

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

  总计子系统

  b-buddyinfo(内存片段)

  c-CPU

  d-Disk

  f-NFSV3Data

  i-InodeandFileSystem

  j-Interrupts

  l-Lustre

  m-Memory

  n-Networks

  s-Sockets

  t-TCP

  x-Interconnect

  y-Slabs(systemobjectcaches)

  细节子系统

  这是一系列的详细信息,大部分情况下都会由相应的总计数据衍生出来。目前环境变量和进程2类没有相应的总计数据。如果有3个磁盘,选择-sd,将只会看到3个磁盘组合出的单一信息。如果选择-sD,将会分别显示各磁盘信息。

  C-CPU

  D-Disk

  E-Environmentaldata(fan,power,temp),viaipmitool

  F-NFSData

  J-Interrupts

  L-LustreOSTdetailORclientFilesystemdetail

  M-Memorynodedata,whichisalsoknownasnumadata

  N-Networks

  T-65TCPcountersonlyavailableinplotformat

  X-Interconnect

  Y-Slabs(systemobjectcaches)

  Z-Processes

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

  1.监测cpu使用率

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

  $collectl-sc

  waitingfor1secondsample.。。

  #《--------CPU--------》

  #cpusysinterctxsw

  3018003729

  3017673599

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

  $collectl-sC

  waitingfor1secondsample.。。

  #SINGLECPUSTATISTICS

  #CpuUserNiceSysWaitIRQSoftStealIdle

  0300000096

  1300000096

  2200000097

  3100000098

  0200000097

  1202000095

  2100000098

  3401000095

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

  2.内存监测

  使用m子系统查看内存。

  $collectl-sm

  waitingfor1secondsample.。。

  #《-----------Memory-----------》

  #FreeBuffCachInacSlabMap

  2G220M1G1G210M3G

  2G220M1G1G210M3G

  2G220M1G1G210M3G

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

  $collectl-sM

  waitingfor1secondsample.。。

  #MEMORYSTATISTICS

  #NodeTotalUsedFreeSlabMappedAnonLockedInactHit%

  07975M5939M2036M215720K372184K06652K1434M0

  07975M5939M2036M215720K372072K06652K1433M0

  3.查看磁盘使用情况

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

  $collectl-sd

  waitingfor1secondsample.。。

  #《----------Disks-----------》

  #KBReadReadsKBWritWrites

  4113624

  008013

  $collectl-sD

  waitingfor1secondsample.。。

  #DISKSTATISTICS(/sec)

  #《---------reads---------》《---------writes---------》《--------averages--------》Pct

  #NameKBytesMergedIOsSizeKBytesMergedIOsSizeRWSizeQLenWaitSvcTimUtil

  sda0000000000000

  sda0000000000000

  sda10211715322621

  sda0000921151818112125

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

  $collectl-sd--verbose

  4.同时报告多系统情况

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

  $collectl-scmd

  waitingfor1secondsample.。。

  #《--------CPU--------》《-----------Memory-----------》《----------Disks-----------》

  #cpusysinterctxswFreeBuffCachInacSlabMapKBReadReadsKBWritWrites

  40218743341G221M1G1G210M3G0000

  30189640651G221M1G1G210M3G00205

  5.显示统计时间

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

  $collectl-scmd-oT

  waitingfor1secondsample.。。

  #《--------CPU--------》《-----------Memory-----------》《----------Disks-----------》

  #TimecpusysinterctxswFreeBuffCachInacSlabMapKBReadReadsKBWritWrites

  12:03:0530196140131G225M1G1G212M3G0000

  12:03:0630188438101G225M1G1G212M3G0000

  12:03:0730201140601G225M1G1G212M3G0000

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

  6.改变样本计数

  collectl报告的每行都是一份快照或样本,它通常设定定期间隔如1秒来取样。i可用来设置时间间隔,c用来设置样本计数。

  $collectl-c1-sm

  waitingfor1secondsample.。。

  #《-----------Memory-----------》

  #FreeBuffCachInacSlabMap

  1G261M1G1G228M3G

  使用i命令可改变更新时间间隔。

  $collectl-sm-i2

  waitingfor2secondsample.。。

  #《-----------Memory-----------》

  #FreeBuffCachInacSlabMap

  1G261M1G1G229M3G

  上面的命令设定每2秒收集一次内存信息。

  7.像iotop一样使用collectl

  top命令将collectl像iostat/top工具一样进行智能统计。列表会持续更新,且可以使用不同字段实现排序。

  $collectl--topiokb

  输出如下

  #TOPPROCESSESsortedbyiokb(countersare/sec)09:44:57

  #PIDUserPRPPIDTHRDSVSZRSSCPSysTUsrTPctAccuTimeRKBWKBMajFMinFCommand

  3104enlighte2026833S938M33M00.000.00000:09.160400/usr/bin/ktorrent

  1root2000S26M3M20.000.00000:01.300000/sbin/init

  2root2000S0030.000.00000:00.000000kthreadd

  3root2020S0000.000.00000:00.020000ksoftirqd/0

  4root2020S0000.000.00000:00.000000kworker/0:0

  5root020S0000.000.00000:00.000000kworker/0:0H

  7rootRT20S0000.000.00000:00.080000migration/0

  8root2020S0020.000.00000:00.000000rcu_bh

  9root2020S0000.000.00000:00.000000rcuob/0

  上面的输出很像top命令,并且它以磁盘数量降序排列进程。

  若只想显示上面的5项进程,可用以下命令实现

  $collectl--topiokb,5

  若想学习上面的列表里哪些字段可以排序,使用如下命令

  $collectl--showtopopts

  下面是应用于进程或数据的最高排序类型列表。某些情况下你可能会使用某一字段进行排序,但它并非显示的一部分。

  TOPPROCESSSORTFIELDS

  进程排序字段

  Memory

  vszvirtualmemory

  rssresident(physical)memory

  Time

  systsystemtime

  usrtusertime

  timetot altime

  accumaccumulatedtime

  I/O

  rkbKBread

  wkbKBwritten

  iokbtotalI/OKB

  rkbcKBreadfrompagecache

  wkbcKBwrittentopagecache

  iokbctotalpagecacgeI/O

  ioalltotalI/OKB(iokb+iokbc)

  rsysreadsystemcalls

  wsyswritesystemcalls

  iosystotalsystemcalls

  iocnclCancelledwritebytes

  PageFaults

  majfmajorpagefaults

  minfminorpagefaults

  flttotalpagefaults

  ContextSwitches

  vctxvolunarycontextswitches

  nctxnon-voluntarycontextswitches

  Miscellaneous(bestwhenusedwith--procfilt)

  cpucpunumber

  pidprocesspid

  threadtotalprocessthreads(notcountingmain)

  TOPSLABSORTFIELDS

  numobjtotalnumberofslabobjects

  actobjactiveslabobjects

  objsizesizesofslabobjects

  numslabnumberofslabs

  objslabnumberofobjectsinaslab

  totsizetotalmemorysizestakenbyslabs

  totchgchangeinmemorysizes

  totpctpercentchangeinmemorysizes

  nameslabnames

  8.像top一样使用collectl

  为使collectl像top,我们只需以CPU使用率排序输出进程。

  $collectl--top

  输出如下

  #TOPPROCESSESsortedbytime(countersare/sec)14:08:46

  #PIDUserPRPPIDTHRDSVSZRSSCPSysTUsrTPctAccuTimeRKBWKBMajFMinFCommand

  9471enlighte2091020R63M22M30.030.101300:00.810003/usr/bin/perl

  3076enlighte2026832S521M40M20.000.03300:55.140002/usr/bin/yakuake

  3877enlighte20335641S1G218M10.000.03310:10.500000/opt/google/chrome/chrome

  4625enlighte20289536S1G241M20.000.02208:24.3900012/usr/lib/firefox/firefox

  5638enlighte2033563S1G265M10.000.02209:55.040002/opt/google/chrome/chrome

  1186root2011524S502M76M00.000.01103:02.960000/usr/bin/X

  1334www-data2013290S87M1M20.000.01100:00.850000nginx:

  上面的命令也可用于显示子系统信息。

  $collectl--top-scm

  9.像ps一样列出进程

  为像ps命令一样列出所有进程且没有后续更新,用c命令让其计数至1.$collectl-c1-sZ-i:1

  上面的命令将会列出类似ps-e命令的所有进程。procfilt用于从所有进程中过滤出特定的进程信息。procopts用于指定另一组微调进程列表显示的命令。

  10.像vmstat一样使用collectl

  Collectl有内置命令来完成像vmstat一样的功能。

  $collectl--vmstat

  waitingfor1secondsample.。。

  #procs---------------memory(KB)-----------------swaps-------io------system------cpu-----

  #rbswpdfreebuffcacheinactactivesisobiboincsussyidwa

  1001733M242M1922M1137M710M0001081982391820951

  1001733M242M1922M1137M710M00001906388610980

  1001733M242M1922M1137M710M00001739348030960

  11.子系统的详细信息

  下面的命令以一秒为间隔,统计5次CPU信息并和时间一起显示出详细信息(冗长)。

  $collectl-sc-c5-i1--verbose-oT

  waitingfor1secondsample.。。

  #CPUSUMMARY(INTR,CTXSW&PROC/sec)

  #TimeUserNiceSysWaitIRQSoftStealIdleCPUsIntrCtxswProcRunQRunAvg1Avg5Avg15RunTBlkT

  14:22:101100000087413122691086610.780.860.7810

  14:22:111500000084412832496086610.780.860.7810

  14:22:121700000082413422658086600.780.860.7800

  14:22:131500000084412412429086610.780.860.7810

  14:22:141100000088412702488086600.800.870.7800

  改变-s变量查看不同的子系统。

  总结

  本文的介绍不过是对collectl这个强大工具的一些浅见。本文本希望展示它有多灵活,其实通过以上的讨论让我们了解了包括记录及回寻捕获的数据,以多种文件格式导出数据并将数据转换为可被广泛的工具分析的格式等等功能的实现。

  collectl提供的另一大功能便是像服务一样运行,对远程Linux机器或完整的服务器集群提供远程监控,其表现堪称完美。

  Collectl同另一批可用于处理分析收集数据的名为Collectl实用工具(colmux,colgui,colplot)的功能相契合。

  上面就是Linux安装和使用Collectl的方法介绍了,Collectl能够完成像ps、top、vmstat这些监控命令一样的功能,且还有其他的功能,比单纯的使用命令简单。


发表评论:

最近发表
网站分类
标签列表