25个Linux性能监控工具

时间:2020-03-05 15:28:37  来源:igfitidea点击:

如何为Linux和类似Unix的操作系统配置各种性能工具。
在本文中,我们列出了用于监视包装盒性能的最常用和最有用的工具。
我们为它们每个提供了一个链接,并将它们分为两类:命令行一和提供图形界面的一类。

命令行性能监控工具

1)dstat-多种资源统计工具

vmstat,iostat和ifstat的多功能组合。
它增加了新的特性和功能,使我们可以立即查看所有不同的资源,从而可以比较和组合不同的资源使用情况。
它使用颜色和块来清晰,轻松地查看信息。
它还允许我们以CVS格式导出数据以在电子表格应用程序中查看或者导入数据库。
我们可以使用此应用程序监视与时间相关的cpu,内存,eth0活动。

2)atop-ASCII改进的顶部

一个使用ASCII的命令行工具来显示性能监视器,该监视器能够报告所有进程的活动。
它显示每日记录的系统和过程活动以进行长期分析,并使用颜色突出显示过载的系统资源。
它包括与CPU,内存,交换,磁盘和网络层有关的指标。
只需运行以下命令即可访问atop的所有功能:

# atop

我们将能够使用交互式界面来显示和订购数据。

3)Nmon-用于类Unix系统的性能监视器

Nmon代表Nigel的Monitor,它是最初为AIX开发的系统监视工具。
如果具有在线模式,该模式使用curses进行有效的屏幕处理,该模式会频繁更新终端以进行实时监控,并具有捕获模式,在该模式下,数据以CSV格式保存在文件中,以便以后进行处理和绘制图形。

有关更多信息,请参见我们的nmon性能跟踪文章。

4)slabtop-有关内核slab缓存的信息

该应用程序将向我们展示Linux内核中的缓存内存分配器如何管理各种类型的对象。
该命令是类似顶部的命令,但重点是显示实时内核slab缓存信息。
它显示按列出的排序标准之一排序的顶级缓存的列表。
它还显示填充有平板层信息的统计信息标题。
这里有一些例子:

# slabtop --sort=a
# slabtop -s b
# slabtop -s c
# slabtop -s l
# slabtop -s v
# slabtop -s n
# slabtop -s o

有关更多信息,请参见内核平板缓存文章。

5)sar-性能监控和瓶颈检查

sar命令将操作系统中所选累积活动计数器的内容写入标准输出。
记帐系统基于count和interval参数中的值,以指定的时间间隔(以秒为单位)写入指定的次数的信息。
如果interval参数设置为零,则sar命令显示自系统启动以来的时间的平均统计信息。

有用的命令:

# sar -u 2 3
# sar –u –f /var/log/sa/sa05
# sar -P ALL 1 1
# sar -r 1 3
# sar -W 1 3

6)Saidar-简单的状态监控器

Saidar是用于系统信息的简单且轻量级的工具。
它没有主要的性能报告,但确实以简短而优美的方式显示了最有用的系统指标。
我们可以轻松地查看正常运行时间,平均负载,CPU,内存,进程,磁盘和网络接口状态。

Usage: saidar [-d delay] [-c] [-v] [-h]
-d Sets the update time in seconds
-c Enables coloured output
-v Prints version number
-h Displays this help information.

7)top-经典的Linux任务管理器

top是最著名的Linux实用程序之一,它是在大多数类Unix操作系统上发现的任务管理器。
它显示了用户可以使用不同条件订购的当前正在运行的进程的列表。
它主要显示系统进程使用了多少CPU和内存。
top是快速检查挂起系统的进程的地方。
我们还可以在此处找到使用率最高的示例列表。

我们可以通过运行top命令并进入交互模式来访问它:

Quick cheat sheet for interactive mode:
  • GLOBAL_Commands:<Ret/Sp>?,=,A,B,d,G,h,I,k,q,r,s,W,Z
  • summary_Area_Commands:l,m,t,1
  • TASK_Area_Commands外观:b,x,y,z内容:c,f,H,o,S,u大小:#,i,n排序:<,>,F,O,R
  • COLOR_Mapping:<Ret>,a,B,b,H,M,q,S,T,w,z,0-7
  • COMMANDS_for_Windows:-,_,=,+,A,a,G,g,w

8)Sysdig-系统进程的高级视图

Sysdig是一种工具,可为管理员和开发人员提供有关其系统行为的前所未有的可见性。
开发团队希望通过提供对存储,处理,网络和内存子系统的统一,一致且细粒度的可见性,从而可以为系统活动创建跟踪文件,从而改善系统级监视和故障排除的方式。
我们可以随时轻松对其进行分析。

快速示例:

# sysdig proc.name=vim
# sysdig -p"%proc.name %fd.name" "evt.type=accept and proc.name!=httpd"
# sysdig evt.type=chdir and user.name=root
# sysdig -l # sysdig -L
# sysdig -c topprocs_net
# sysdig -c fdcount_by fd.sport "evt.type=accept"
# sysdig -p"%proc.name %fd.name" "evt.type=accept and proc.name!=httpd"
# sysdig -c topprocs_file
# sysdig -c fdcount_by proc.name "fd.type=file"
# sysdig -p "%12user.name %6proc.pid %12proc.name %3fd.num %fd.typechar %fd.name" evt.type=open
# sysdig -c topprocs_cpu
# sysdig -c topprocs_cpu evt.cpu=0
# sysdig -p"%evt.arg.path" "evt.type=chdir and user.name=root"
# sysdig evt.type=open and fd.name contains /etc

我们的文章中提供了有关如何使用sysdig进行改进的系统级监视和故障排除的更多信息。

9)netstat-显示打开的端口和连接

Linux管理员用来显示各种网络信息的工具,例如打开了哪些端口,建立了哪些网络连接以及由哪个进程运行该连接。
它还显示了有关在各种程序之间打开的Unix套接字的各种信息。
它是大多数Linux发行版的一部分。
有关netstat及其各种输出的文章中介绍了许多命令。

最常用的命令是:

$netstat | head -20
$netstat -r
$netstat -rC
$netstat -i
$netstat -ie
$netstat -s
$netstat -g
$netstat -tapn

10)tcpdump-对网络数据包的洞察

tcpdump可用于查看网络连接上数据包的内容。
它显示有关通过的数据包内容的各种信息。
为了使输出有用,它允许我们使用各种过滤器来仅获取所需的信息。
有关如何使用它的一些示例:

# tcpdump -i eth0 not port 22
# tcpdump -c 10 -i eth0
# tcpdump -ni eth0 -c 10 not port 22
# tcpdump -w aloft.cap -s 0
# tcpdump -r aloft.cap
# tcpdump -i eth0 dst port 80

我们可以在我们有关tcpdump和捕获数据包的文章中详细描述它们

11)vmstat-虚拟内存统计信息

vmstat代表虚拟内存统计信息,它是一个内存监视工具,用于收集和显示有关内存,进程,中断,分页和块I/O的摘要信息。
它是大多数Linux发行版,Solaris和FreeBSD上可用的开源程序。
它用于诊断大多数内存性能问题等等。

有关vmstat命令的文章中的更多信息。

12)空闲-内存统计

另一个命令行工具将向标准输出显示有关内存使用和交换使用的一些统计信息。
由于它是一个简单的工具,因此可以用于查找有关内存使用情况的快速信息,也可以在不同的脚本和应用程序中使用它。
我们可以看到这个小型应用程序有很多用途,几乎所有系统管理员每天都使用此工具:-)

13)Htop-更友好的顶部

Htop基本上是top的改进版本,它显示了更多统计信息,并且具有更加丰富多彩的方式,使我们可以按照本文中所见的不同方式对它们进行排序。
它提供了更加用户友好的界面。

我们可以在我们的htop和top比较中找到更多信息

14)SS-现代网络工具的替代品

ss是iproute2软件包的一部分。
iproute2旨在代替一整套标准Unix网络工具,这些工具以前曾用于配置网络接口,路由表和管理ARP表的任务。

ss实用程序用于转储套接字统计信息,它允许显示类似于netstat的信息,并且可以显示更多TCP和状态信息。
几个例子:

# ss -tnap
# ss -tnap6
# ss -tnap
# ss -s
# ss -tn -o state established -p

15)lsof-列出打开的文件

lsof是一个命令,意为“列出打开的文件”,在许多类Unix系统中使用该命令报告所有打开文件的列表以及打开这些文件的进程。
大多数Linux发行版和其他类似Unix的操作系统都使用它,系统管理员可以使用它检查各种进程打开的文件。

# lsof +p process_id
# lsof | less
# lsof –u username
# lsof /etc/passwd
# lsof –i TCP:ftp
# lsof –i TCP:80

我们可以在lsof文章中找到更多示例

16)iftop-网络连接的顶部

iftop是另一个基于网络信息的顶级应用程序。
它显示了根据带宽使用情况或者上载或者下载的数据量分类的各种当前网络连接。
它还提供了各种估计的下载时间。

有关更多信息,请参见有关使用iftop的网络流量的文章

17)iperf-网络性能工具

iperf是一种网络测试工具,可以创建TCP和UDP数据连接并测量承载它们的网络的性能。
它支持调整与时序,协议和缓冲区有关的各种参数。
对于每个测试,它都会报告带宽,损耗和其他参数。

如果我们想使用该工具,请查看有关如何安装和使用iperf的文章。

18)Smem-高级内存报告

Smem是Linux命令行中最先进的工具之一,它提供有关系统中已使用和共享的实际内存的信息,试图提供所使用的实际内存的更逼真的镜像。

$smem -m
$smem -m -p | grep firefox
$smem -u -p
$smem -w -p

查看我们在Smem上的文章以获取更多示例

基于GUI或者Web的性能工具

19)Icinga-Nagios的社区分叉

Icinga是免费的开源系统和网络监控应用程序。
它是Nagios的一个分支,保留了其前任产品的大多数现有功能,并在此基础上添加了用户社区要求的许多期待已久的补丁和功能。

有关安装和配置的更多信息,请参见我们的Icinga文章。

20)Nagios-最受欢迎的监视工具。

Linux上最常用和流行的监视解决方案。
它具有一个守护程序,该守护程序收集有关各种进程的信息,并具有从远程主机收集信息的能力。
然后,通过一个功能强大的Web界面提供所有信息。

我们可以在我们的文章中找到有关如何安装Nagios的信息

21)Linux进程浏览器-procexp用于Linux

Linux进程浏览器是Linux的图形化进程浏览器。
它显示了各种过程信息,例如过程树,TCP/IP连接和每个过程的性能指标。
它是procin在Windows中发现并由Sysinternals开发的副本,旨在使用户比top和ps更友好。

查看我们的Linux进程资源管理器文章,了解更多信息。

22)Collectl-性能监控工具

这是一个性能监视工具,我们可以在交互模式下使用它,也可以让它将报告写到磁盘上并通过Web服务器访问它们。
它以易于阅读和管理的格式报告有关CPU,磁盘,内存,网络,nfs,进程,平板等的统计信息。

有关更多信息,请参见我们的Collectl文章

23)MRTG-经典图形工具

这是一个网络流量监视器,它将使用rrdtool为我们提供图形。
它是提供图形的最古老的工具之一,并且是在类似Unix的操作系统上最常用的工具之一。
查看我们有关如何使用MRTG的文章,以获取有关安装和配置过程的信息

24)Monit-简单易用的监控工具

Monit是一个开源的小型Linux实用程序,旨在监视进程,系统负载,文件系统,目录和文件。
我们可以让它运行自动维护和修复,并可以在错误情况下执行操作或者发送电子邮件报告以警告系统管理员。
如果我们想使用此工具,可以查看我们的《如何使用Monit》一文。

25)Munin-服务器监视和警报服务

Munin是一个联网的资源监视工具,可以帮助分析资源趋势并查看弱点是什么以及导致性能问题的原因。
开发它的团队希望它易于使用且易于使用。
该应用程序是用Perl编写的,并使用rrdtool生成带有Web界面的图形。
开发人员使用目前可用的大约500个监视插件来宣传应用程序的“即插即用”功能。