- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章Linux安装使用系统监控工具Collectl的方法由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
作为Linux系统监控工具,Collectl是款值得推荐的软件,使用Collectl能够及时掌握系统的运行状况,还能像iotop命令一样使用collectl进行智能统计,下面小编就给大家介绍下Collectl的安装及使用.
系统资源监控 。
Collectl作为一个轻量级的监控工具,在同类工具中是功能最全的。用户可监测不同的复杂系统矩阵值,并可保留数据以做之后的分析。不同于其他只用来监测特定系统参数的工具,Collectl可以同时监测不同的变量,并以合适的方式记录它们.
不同于或聚焦于一小组统计数据、采用唯一输出方式,或采用迭代、作为守护进程运行的大部分监测工具,collectl可以同时全部实现。用户可选择各种子系统中的任一系统来监测包括内存,CPU,磁盘,索引节点,无线带宽,lustre,内存,网络,网络文件系统,进程,二次型,slabs,套接口及TCP等信息.
深入学习前让我们先看以下命令.
$ collectl 。
waiting for1 second sample.。.
#《--------CPU--------》《----------Disks-----------》《----------Network----------》 。
#cpu sys inter ctxsw KBRead Reads KBWrit Writes KBIn PktIn KBOut PktOut 。
00864177200000100 。
521338273400820001 。
1012222647009230201 。
107631722008030102 。
CPU使用率,磁盘输入输出和网络活动以每秒为单位来加载。对可以理解这些数据的人来说这些信息很容易读懂。这项列表在给定的时间间隔里会持续增加,并可直接形成一项文件跟踪日志。collectl工具提供了各种命令来对这些数据进行记录,查找及做其他处理.
安装collectl工具 。
对Ubuntu/Debian用户来说Collectl是默认资源,所以使用apt命令便可获取.
$ sudo apt-get install collectl 。
Fedora/CentOS用户使用yum命令便可获取.
$ yum install collectl 。
使用 。
必要的了解 - Collectl子系统 。
子系统是可检测到的不同系统资源类型。像CPU,内存,带宽等等都可构成一个子系统。只运行collectl命令将以批处理模式输出CPU,磁盘和网络子系统信息,我们在上文已看到相关内容.
从操作说明可以看到,Collectl可以识别以下子系统.
总计子系统 。
b - buddy info (内存片段) 。
c - CPU 。
d -Disk 。
f - NFS V3 Data 。
i -InodeandFileSystem 。
j -Interrupts 。
l -Lustre 。
m -Memory 。
n -Networks 。
s -Sockets 。
t - TCP 。
x -Interconnect 。
y -Slabs(system object caches) 。
细节子系统 。
这是一系列的详细信息,大部分情况下都会由相应的总计数据衍生出来。目前“环境变量”和“进程”2类没有相应的总计数据。如果有3个磁盘,选择-sd,将只会看到3个磁盘组合出的单一信息。如果选择-sD,将会分别显示各磁盘信息.
C - CPU 。
D -Disk 。
E -Environmental data (fan, power, temp), via ipmitool 。
F - NFS Data 。
J -Interrupts 。
L -Lustre OST detail OR client Filesystem detail 。
M -Memory node data, which is also known as numa data 。
N -Networks 。
T -65 TCP counters only available in plot format 。
X -Interconnect 。
Y -Slabs(system object caches) 。
Z -Processes 。
使用“-s”来监测特定的子系统并向其添加子系统的识别项。现在让我们举几个例子.
1. 监测cpu使用率 。
用“-sc”实现CPU总使用率的监测 。
$ collectl -sc 。
waiting for1 second sample.。.
#《--------CPU--------》 。
#cpu sys inter ctxsw 。
3018003729 。
3017673599 。
使用“-C”观察各个单独的CPU使用情况。结果将会输出多行,分别对应一个CPU.
$ collectl -sC 。
waiting for1 second sample.。.
# SINGLE CPU STATISTICS 。
# Cpu User Nice Sys Wait IRQ Soft Steal Idle 。
0300000096 。
1300000096 。
2200000097 。
3100000098 。
0200000097 。
1202000095 。
2100000098 。
3401000095 。
如果需要,可以同时使用C和c来获取单项CPU监测数据和汇总数据.
2. 内存监测 。
使用m子系统查看内存.
$ collectl -sm 。
waiting for1 second sample.。.
#《-----------Memory-----------》 。
#Free Buff Cach Inac Slab Map 。
2G220M1G1G210M3G 。
2G220M1G1G210M3G 。
2G220M1G1G210M3G 。
不难解释。 M用来查看更多内存的详细信息.
$ collectl -sM 。
waiting for1 second sample.。.
# MEMORY STATISTICS 。
# Node Total Used Free Slab Mapped Anon Locked Inact Hit% 。
07975M5939M2036M215720K372184K06652K1434M0 。
07975M5939M2036M215720K372072K06652K1433M0 。
3. 查看磁盘使用情况 。
d和D可以查看磁盘使用的概况和详细情况.
$ collectl -sd 。
waiting for1 second sample.。.
#《----------Disks-----------》 。
#KBRead Reads KBWrit Writes 。
4113624 。
008013 。
$ collectl -sD 。
waiting for1 second sample.。.
# DISK STATISTICS (/sec) 。
# 《---------reads---------》《---------writes---------》《--------averages--------》 Pct 。
#Name KBytes Merged IOs Size KBytes Merged IOs Size RWSize QLen Wait SvcTim Util 。
sda 0000000000000 。
sda 0000000000000 。
sda 10211715322621 。
sda 0000921151818112125 。
“--verbose”命令可以用来查看附加信息。和D命令不同,它将概况扩展,包含了更多信息.
$ collectl -sd --verbose 。
4. 同时报告多系统情况 。
如果想要同时得到CPU,内存和磁盘报告,那么同时使用子命令组合来实现.
$ collectl -scmd 。
waiting for1 second sample.。.
#《--------CPU--------》《-----------Memory-----------》《----------Disks-----------》 。
#cpu sys inter ctxsw Free Buff Cach Inac Slab Map KBRead Reads KBWrit Writes 。
40218743341G221M1G1G210M3G0000 。
30189640651G221M1G1G210M3G00205 。
5. 显示统计时间 。
若要将每行的监测信息和时间一同显示,使用T选项。通过在“-o”参数来指定.
$ collectl -scmd -oT 。
waiting for1 second sample.。.
# 《--------CPU--------》《-----------Memory-----------》《----------Disks-----------》 。
#Time cpu sys inter ctxsw Free Buff Cach Inac Slab Map KBRead Reads KBWrit Writes 。
12:03:0530196140131G225M1G1G212M3G0000 。
12:03:0630188438101G225M1G1G212M3G0000 。
12:03:0730201140601G225M1G1G212M3G0000 。
使用“-oTm”可将时间换成毫秒显示.
6. 改变样本计数 。
collectl报告的每行都是一份快照或样本,它通常设定定期间隔如1秒来取样。i可用来设置时间间隔,c用来设置样本计数.
$ collectl -c1 -sm 。
waiting for1 second sample.。.
#《-----------Memory-----------》 。
#Free Buff Cach Inac Slab Map 。
1G261M1G1G228M3G 。
使用i命令可改变更新时间间隔.
$ collectl -sm -i2 。
waiting for2 second sample.。.
#《-----------Memory-----------》 。
#Free Buff Cach Inac Slab Map 。
1G261M1G1G229M3G 。
上面的命令设定每2秒收集一次内存信息.
7. 像iotop一样使用collectl 。
top命令将collectl像iostat/top工具一样进行智能统计。列表会持续更新,且可以使用不同字段实现排序.
$ collectl --top iokb 。
输出如下 。
# TOP PROCESSES sorted by iokb (counters are /sec) 09:44:57 。
# PID User PR PPID THRD S VSZ RSS CP SysT UsrT Pct AccuTime RKB WKB MajF MinF Command 。
3104 enlighte 2026833 S 938M33M00.000.00000:09.160400/usr/bin/ktorrent 。
1 root 2000 S 26M3M20.000.00000:01.300000/sbin/init 。
2 root 2000 S 0030.000.00000:00.000000 kthreadd 。
3 root 2020 S 0000.000.00000:00.020000 ksoftirqd/0 。
4 root 2020 S 0000.000.00000:00.000000 kworker/0:0 。
5 root 020 S 0000.000.00000:00.000000 kworker/0:0H 。
7 root RT 20 S 0000.000.00000:00.080000 migration/0 。
8 root 2020 S 0020.000.00000:00.000000 rcu_bh 。
9 root 2020 S 0000.000.00000:00.000000 rcuob/0 。
上面的输出很像top命令,并且它以磁盘数量降序排列进程.
若只想显示上面的5项进程,可用以下命令实现 。
$ collectl --top iokb,5 。
若想学习上面的列表里哪些字段可以排序,使用如下命令 。
$ collectl --showtopopts 。
下面是应用于进程或数据的最高排序类型列表。某些情况下你可能会使用某一字段进行排序,但它并非显示的一部分.
TOP PROCESS SORT FIELDS 。
进程排序字段 。
Memory 。
vsz virtual memory 。
rss resident (physical) memory 。
Time 。
syst system time 。
usrt user time 。
time total time 。
accum accumulated time 。
I/O 。
rkb KB read 。
wkb KB written 。
iokb total I/O KB 。
rkbc KB read from pagecache 。
wkbc KB written to pagecache 。
iokbc total pagecacge I/O 。
ioall total I/O KB (iokb+iokbc) 。
rsys read system calls 。
wsys write system calls 。
iosys total system calls 。
iocncl Cancelled write bytes 。
PageFaults 。
majf major page faults 。
minf minor page faults 。
flt total page faults 。
ContextSwitches 。
vctx volunary context switches 。
nctx non-voluntary context switches 。
Miscellaneous(best when used with--procfilt) 。
cpu cpu number 。
pid process pid 。
thread total process threads (not counting main) 。
TOP SLAB SORT FIELDS 。
numobj total number of slab objects 。
actobj active slab objects 。
objsize sizes of slab objects 。
numslab number of slabs 。
objslab number of objects in a slab 。
totsize total memory sizes taken by slabs 。
totchg change in memory sizes 。
totpct percent change in memory sizes 。
name slab names 。
8. 像top一样使用collectl 。
为使collectl像top,我们只需以CPU使用率排序输出进程.
$ collectl --top 。
输出如下 。
# TOP PROCESSES sorted by time (counters are /sec) 14:08:46 。
# PID User PR PPID THRD S VSZ RSS CP SysT UsrT Pct AccuTime RKB WKB MajF MinF Command 。
9471 enlighte 2091020 R 63M22M30.030.101300:00.810003/usr/bin/perl 。
3076 enlighte 2026832 S 521M40M20.000.03300:55.140002/usr/bin/yakuake 。
3877 enlighte 20335641 S 1G218M10.000.03310:10.500000/opt/google/chrome/chrome 。
4625 enlighte 20289536 S 1G241M20.000.02208:24.3900012/usr/lib/firefox/firefox 。
5638 enlighte 2033563 S 1G265M10.000.02209:55.040002/opt/google/chrome/chrome 。
1186 root 2011524 S 502M76M00.000.01103:02.960000/usr/bin/X 。
1334 www-data 2013290 S 87M1M20.000.01100:00.850000 nginx:
上面的命令也可用于显示子系统信息.
$ collectl --top -scm 。
9. 像ps一样列出进程 。
为像ps命令一样列出所有进程且没有后续更新,用“c”命令让其计数至1. $ collectl -c1 -sZ -i:1 。
上面的命令将会列出类似“ps -e”命令的所有进程。“procfilt”用于从所有进程中过滤出特定的进程信息。“procopts”用于指定另一组微调进程列表显示的命令.
10. 像vmstat一样使用collectl 。
Collectl有内置命令来完成像vmstat一样的功能.
$ collectl --vmstat 。
waiting for1 second sample.。.
#procs ---------------memory (KB)--------------- --swaps-- -----io---- --system-- ----cpu----- 。
# r b swpd free buff cache inact active si so bi bo in cs us sy id wa 。
1001733M242M1922M1137M710M0001081982391820951 。
1001733M242M1922M1137M710M00001906388610980 。
1001733M242M1922M1137M710M00001739348030960 。
11. 子系统的详细信息 。
下面的命令以一秒为间隔,统计5次CPU信息并和时间一起显示出详细信息(冗长).
$ collectl -sc -c5 -i1 --verbose -oT 。
waiting for1 second sample.。.
# CPU SUMMARY (INTR, CTXSW & PROC /sec) 。
#Time User Nice Sys Wait IRQ Soft Steal Idle CPUs Intr Ctxsw Proc RunQ Run Avg1 Avg5 Avg15 RunT BlkT 。
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这些监控命令一样的功能,且还有其他的功能,比单纯的使用命令简单.
最后此篇关于Linux安装使用系统监控工具Collectl的方法的文章就讲到这里了,如果你想了解更多关于Linux安装使用系统监控工具Collectl的方法的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于 Stack Overflow 来说是偏离主题的,
Linux 管道可以缓冲多少数据?这是可配置的吗? 如果管道的两端在同一个进程中,但线程不同,这会有什么不同吗? 请注意:这个“同一个进程,两个线程”的问题是理论上的边栏,真正的问题是关于缓冲的。 最
我找到了here [最后一页] 一种有趣的通过 Linux 启动 Linux 的方法。不幸的是,它只是被提及,我在网上找不到任何有用的链接。那么有人听说过一种避免引导加载程序而使用 Linux 的方法
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
我试图了解 ld-linux.so 如何在 Linux 上解析对版本化符号的引用。我有以下文件: 测试.c: void f(); int main() { f(); } a.c 和 b.c:
与 RetroPie 的工作原理类似,我可以使用 Linux 应用程序作为我的桌面环境吗?我实际上并不需要像实际桌面和安装应用程序这样的东西。我只需要一种干净简单的方法来在 RaspberryPi 上
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwar
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 关闭 10 年前。 Improve thi
有什么方法可以覆盖现有的源代码,我应该用 PyQt、PyGTK、Java 等从头开始构建吗? 最佳答案 如果您指的是软件本身而不是它所连接的存储库,那么自定义应用程序的方法就是 fork 项目。据我所
我的情况是:我在一个磁盘上安装了两个 linux。我将第一个安装在/dev/sda1 中,然后在/dev/sda2 中安装第二个然后我运行第一个系统,我写了一个脚本来在第一个系统运行时更新它。
我在 i2c-0 总线上使用地址为 0x3f 的系统监视器设备。该设备在设备树中配置有 pmbus 驱动程序。 问题是,加载 linux 内核时,这个“Sysmon”设备没有供电。因此,当我在总线 0
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 关闭 11 年前。 Improve thi
我正试图在 linux 模块中分配一大块内存,而 kalloc 做不到。 我知道唯一的方法是使用 alloc_bootmem(unsigned long size) 但我只能从 linux 内核而不是
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwar
我有 .sh 文件来运行应用程序。在该文件中,我想动态设置服务器名称,而不是每次都配置。 我尝试了以下方法,它在 CentOS 中运行良好。 nohup /voip/java/jdk1.8.0_71/
我是在 Linux 上开发嵌入式 C++ 程序的新手。我有我的 Debian 操作系统,我在其中开发和编译了我的 C++ 项目(一个简单的控制台进程)。 我想将我的应用程序放到另一个 Debian 操
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 4 年前。 Improve this ques
我使用4.19.78版本的稳定内核,我想找到带有企鹅二进制数据的C数组。系统启动时显示。我需要在哪里搜索该内容? 我在 include/linux/linux_logo.h 文件中只找到了一些 Log
我知道可以使用 gdb 的服务器模式远程调试代码,我知道可以调试针对另一种架构交叉编译的代码,但是是否可以更进一步,从远程调试 Linux 应用程序OS X 使用 gdbserver? 最佳答案 当然
是否有任何可能的方法来运行在另一个 Linux 上编译的二进制文件?我知道当然最简单的是在另一台机器上重建它,但假设我们唯一能得到的是一个二进制文件,那么这可能与否? (我知道这可能并不容易,但我只是
我是一名优秀的程序员,十分优秀!