每个SysAdmin应该知道的30个Linux系统监视工具

是否需要监视Linux服务器性能?尝试使用这些内置命令和一些附加工具。大多数发行版都带有大量的Linux监视工具。这些工具提供了可用于获取有关系统活动信息的指标。您可以使用这些工具查找性能问题的可能原因。当涉及系统分析和调试Linux服务器问题时,以下讨论的命令是一些最基本的命令:

  1. 找出系统瓶颈
  2. 磁盘(存储)瓶颈
  3. CPU和内存瓶颈
  4. 网络瓶颈。

1. top –流程活动监视命令

top命令显示Linux进程。它提供正在运行的系统的动态实时视图,即实际过程活动。默认情况下,它显示服务器上运行的最耗CPU的任务,并每五秒钟更新一次列表。

top-Linux监视命令

图01:Linux top命令

常用的热键和顶级Linux监控工具

以下是有用的热键列表:

热键用法
t打开和关闭显示摘要信息。
m打开和关闭显示内存信息。
a按各种系统资源的主要使用者对显示进行排序。用于快速识别系统上需要大量性能的任务。
f进入顶部的交互式配置屏幕。有助于为特定任务设置顶部。
o使您可以交互地选择顶部的顺序。
r发出renice命令。
k发出kill命令。
z打开或关闭颜色/单色

如何查找Linux CPU利用率?

2. vmstat –虚拟内存统计信息

vmstat命令报告有关进程,内存,页面调度,块IO,陷阱和cpu活动的信息。
# vmstat 3
样本输出:

procs -----------内存---------- --- swap-- ----- io ---- --system-- ----- cpu ------ 
 rb swpd可用buff缓存在cs 
 中用sy id bost 0 0 0 2540988 522188 5130400 0 0 2 32 4 2 4 1 96 0 0 
 1 0 0 2540988 522188 5130400 0 0 0 720 1199 665 1 0 99 0 0 
 0 0 0 2540956 522188 5130400 0 0 0 0 1151 1569 4 1 95 0 0 
 0 0 0 2540956 522188 5130500 0 0 0 6 1117 439 1 0 99 0 
 0 0 0 2540940 522188 5130512 0 0 0 536 1189 932 1 0 98 0 0 
 0 0 0 2538444 522188 5130588 0 0 0 0 1187 1417 4 1 96 0 0 
 0 0 0 2490060 522188 5130640 0 0 0 18 1853 1123 5 1 94 0 0

显示内存利用率Slabinfo

# vmstat -m

获取有关活动/非活动内存页面的信息

# vmstat -a
如何找出Linux资源利用率来检测系统瓶颈?

3. w –找出谁登录以及他们在做什么

w命令显示有关计算机上当前用户及其进程的信息。样本输出:
# w username
# w vivek

17:58:47最多5天,20:28、2个用户,平均负载:0.36、0.26、0.24 
用户LOGIN @ IDLE JCPU PCPU的
用户身份root pts / 0 10.1.3.145 14:55 5.00s 0.04s 0.02s vim /etc/resolv.conf 
root pts / 1 10.1.3.145 17:43 0.00s 0.03s 0.00sw

4.uptime–告诉Linux系统已经运行了多长时间

uptime命令可用于查看服务器已运行多长时间。当前时间,系统已运行多长时间,当前登录了多少用户以及过去1、5和15分钟的平均系统负载。
# uptime
输出:

 18:02:41上41天,23:42,1个用户,平均负载:0.00、0.00、0.00

1可以认为是最佳负载值。负载可能因系统而异。对于单个CPU系统1-3和SMP系统6-10,负载值是可以接受的。

5. ps –显示Linux进程

ps命令将报告当前进程的快照。要选择所有进程,请使用-A或-e选项:
# ps -A
示例输出:

  PID TTY TIME CMD 
    1?00:00:02 init 
    2吗?00:00:02迁移/ 0 
    3吗?00:00:01 ksoftirqd / 0 
    4吗?00:00:00看门狗/ 0 
    5?00:00:00迁移/ 1 
    6吗?00:00:15 ksoftirqd / 1 
.... 
..... 
 4881?00:53:28 java 
 4885 tty1 00:00:00 mingetty 
 4886 tty2 00:00:00 mingetty 
 4887 tty3 00:00:00 mingetty 
 4888 tty4 00:00:00 mingetty 
 4891 tty5 00:00:00 mingetty 
 4892 tty6 00: 00:00 mingetty 
 4893 ttyS1 00:00:00 agetty 
12853吗?00:00:00 cifsoplockd 
12854吗?00:00:00通知
14231?00:10:34 lighttpd 
14232吗?00:00:00 php-cgi 
54981 pts / 0 00:00:00 vim 
55465吗?00:00:00 php-cgi 
55546吗?00:00:00 bind9-snmp-stat 
55704 pts / 1 00:00:00 ps

ps就像top一样,但是提供了更多信息。

显示长格式输出

# ps -Al
要打开额外的完整模式(它将显示传递给进程的命令行参数):
# ps -AlF

显示线程(LWP和NLWP)

# ps -AlFH

进程后监视线程

# ps -AlLm

在服务器上打印所有进程

# ps ax
# ps axu

是否要打印过程树?

# ps -ejH
# ps axjf
pstree

获取Linux进程的安全性信息

# ps -eo euser,ruser,suser,fuser,f,comm,label
# ps axZ
# ps -eM

让我们打印以用户Vivek运行的每个进程

# ps -U vivek -u vivek u

以用户定义的格式配置ps命令输出

# ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm
# ps axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm
# ps -eopid,tt,user,fname,tmout,f,wchan

尝试仅显示lighttpd的进程ID

# ps -C lighttpd -o pid=

# pgrep lighttpd

# pgrep -u vivek php-cgi

打印PID 55977的名称

# ps -p 55977 -o comm=

十大内存消耗过程

# ps -auxf | sort -nr -k 4 | head -10

向我们展示十大CPU消耗过程

# ps -auxf | sort -nr -k 3 | head -10
显示Linux中所有正在运行的进程

6. free –显示Linux服务器内存使用情况

free命令显示系统中空闲和已使用的物理内存和交换内存的总量,以及内核使用的缓冲区。
# free
样本输出:

            已使用的可用共享缓冲区总数(已缓存)
Mem:12302896 9739664 2563232 0 523124 5154740- 
/ +缓冲区/缓存:4061800 8241096 
交换:1052248 0 1052248
  1. Linux查找虚拟内存PAGESIZE
  2. Linux限制每个进程的CPU使用率
  3. 我的Ubuntu / Fedora Linux台式电脑有多少内存?

7. iostat – Montor Linux的平均CPU负载和磁盘活动

iostat命令报告中央处理器(CPU)统计信息以及设备,分区和网络文件系统(NFS)的输入/输出统计信息。
# iostat
样本输出:

Linux 2.6.18-128.1.14.el5(www03.nixcraft.in)2009年6月26日

avg-cpu:%user%nice%system%iowait%steal%idle 
           3.50 0.09 0.51 0.03 0.00 95.86 

Device:tps Blk_read / s Blk_wrtn / s Blk_read Blk_wrtn 
sda 22.04 31.88 512.03 16193351 260102868 
sda1 0.00 0.00 0.00 2166 180 
sda2 22.04 31.87 512.03 16189010 260102688 
sda3 0.00 0.00 0.00 1615 0

Linux跟踪NFS目录/磁盘I / O统计信息

8. sar –监视,收集和报告Linux系统活动

sar命令用于收集,报告和保存系统活动信息。要查看网络计数器,请输入:
# sar -n DEV | more
24号网络计数器:
# sar -n DEV -f /var/log/sa/sa24 | more
您还可以使用sar显示实时使用情况:
# sar 4 5
示例输出:

Linux 2.6.18-128.1.14.el5(www03.nixcraft.in)

2009/06/26 06:45:12 CPU%user%nice%system%iowait%steal%idle 
06:45:16 PM所有2.00 0.00全部0.22 0.00 0.00 97.78 
06:45:20 PM全部2.07 0.00 0.38 0.03 0.00 97.52 
06:45:24 PM全部0.94 0.00 0.28 0.00 0.00 98.78 
06:45:28 PM全部1.56 0.00 0.22 0.00 0.00 98.22 
06:45:32 PM全部3.53 0.00 0.25 0.03 0.00 96.19 
平均:全部2.02 0.00 0.27 0.01 0.00 97.70

9. mpstat –监视Linux上的多处理器使用情况

mpstat命令显示每个可用处理器的活动,处理器0是第一个。mpstat -P ALL显示每个处理器的平均CPU利用率:
# mpstat -P ALL
示例输出:

Linux 2.6.18-128.1.14.el5(www03.nixcraft.in)

06/26/2009 06:48:11 PM CPU%user%nice%sys%iowait%irq%soft%steal%idle ins / s 
06:全部48:11 PM 3.50 0.09 0.34 0.03 0.01 0.17 0.00 95.86 1218.04 
06:48:11 PM 0 3.44 0.08 0.31 0.02 0.00 0.12 0.00 96.04 1000.31 
06:48:11 PM 1 3.10 0.08 0.32 0.09 0.02 0.11 0.00 96.28 34.93 
06:48:下午11点2 4.16 0.11 0.36 0.02 0.00 0.11 0.00 95.25 0.00 
06:48:11 PM 3 3.77 0.11 0.38 0.03 0.01 0.24 0.00 95.46 44.80 
06:48:11 PM 4 2.96 0.07 0.29 0.04 0.02 0.10 0.00 96.52 25.91
06:48:11 PM 5 3.26 0.08 0.28 0.03 0.01 0.10 0.00 96.23 14.98 
06:48:11 PM 6 4.00 0.10 0.34 0.01 0.00 0.13 0.00 95.42 3.75 
06:48:11 PM 7 3.30 0.11 0.39 0.03 0.01 0.46 0.00 95.69 76.89
 

Linux分别显示每个SMP CPU处理器的利用率

10. pmap – Linux上的Montor进程内存使用情况

pmap命令报告进程的内存映射。使用此命令找出内存瓶颈的原因。
# pmap -d PID
要显示pid#47394的进程内存信息,请输入:
# pmap -d 47394
示例输出:

47394:/ usr / bin / php-cgi 
地址
千字节模式偏移设备映射0000000000400000 2584 rx-- 0000000000000000 008:00002 php-cgi 
0000000000886000 140 rw --- 0000000000286000 008:00002 php-cgi 
00000000008a9000 52 rw --- 00000000008a9000 000: 00000 [anon] 
0000000000aa8000 76 rw --- 00000000002a8000 008:00002 php-cgi 
000000000f678000 1980 rw --- 000000000f678000 000:00000 [anon] 
000000314a600000 112 rx-- 0000000000000000 008:00002 ld-2.5.so 
000000314a81b000 4 r --- -000000000001b000 008:00002 ld-2.5.so 
000000314a81c000 4 rw --- 000000000001c000 008:00002 ld-2.5.so 
000000314aa00000 1328 rx-- 0000000000000000 008:00002 libc-2.5.so
000000314ab4c000 2048 ----- 000000000014c000 008:00002 libc-2.5.so 
..... 
...... 
.. 
00002af8d48fd000 4 rw --- 0000000000006000 008:00002 xsl.so 
00002af8d490c000 40 rx-- 0000000000000000 008: 00002 
libnss_files-2.5.so 00002af8d4916000 2044 ----- 000000000000a000 008:00002 
libnss_files-2.5.so 00002af8d4b15000 4 r ---- 0000000000009000 008:00002 
libnss_files-2.5.so 00002af8d4b16000 4 rw --- 000000000000a000 008:00-libnss_file 2.5.so 
00002af8d4b17000 768000 rw-s- 0000000000000000 000:00009零(已删除)
00007fffc95fe000 84 rw --- 00007ffffffea000 000:00000 [堆栈] 
ffffffffff600000 8192 ----- 0000000000000000 000:00000 [anon]
映射:933712K可写/私有:4304K共享:768000K

最后一行非常重要:

  • 映射:933712K映射到文件的内存总量
  • 可写/专用:4304K专用地址空间量
  • 共享:768000K此过程与其他人共享的地址空间量

Linux使用pmap命令查找程序/进程使用的内存

11. netstat – Linux网络和统计监视工具

netstat命令显示网络连接,路由表,接口统计信息,伪装连接和多播成员身份。
# netstat -tulpn
# netstat -nat

12. ss –网络统计

ss命令用于转储套接字统计信息。它允许显示类似于netstat的信息。请注意,netstat通常已过时。因此,您需要使用ss命令。在Linux上ss的所有TCP和UDP套接字:
# ss -t -a

# ss -u -a
显示具有进程SELinux安全上下文的所有TCP套接字:
# ss -t -a -Z
请参阅以下有关ss和netstat命令的资源:

13. iptraf –在Linux上获取实时网络统计信息

iptraf命令是交互式彩色IP LAN监视器。它是基于ncurses的IP LAN监视器,它生成各种网络统计信息,包括TCP信息,UDP计数,ICMP和OSPF信息,以太网负载信息,节点状态,IP校验和错误等。它可以以易于阅读的格式提供以下信息:

  • TCP连接的网络流量统计
  • 通过网络接口的IP流量统计
  • 协议网络流量统计
  • 通过TCP / UDP端口和数据包大小进行的网络流量统计
  • 第2层地址的网络流量统计

图02:常规接口统计信息:按网络接口的IP流量统计信息

图02:常规接口统计信息:按网络接口的IP流量统计信息

图03 TCP连接的网络流量统计

图03 TCP连接的网络流量统计

在Centos / RHEL / Fedora Linux上安装IPTraf以获取网络统计信息

14. tcpdump –详细的网络流量分析

tcpdump命令是在网络上转储流量的简单命令。但是,您需要充分了解TCP / IP协议才能使用此工具。例如,要显示有关DNS的流量信息,请输入:
# tcpdump -i eth1 'udp port 53'
查看往返端口80的所有IPv4 HTTP数据包,即仅打印包含数据的数据包,而不打印例如SYN和FIN数据包以及仅ACK数据包,输入:
# tcpdump 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'
Show all FTP会话到202.54.1.5,输入:将
# tcpdump -i eth1 'dst 202.54.1.5 and (port 21 or 20'
所有HTTP会话打印到192.168.1.5:
# tcpdump -ni eth0 'dst 192.168.1.5 and tcp and port http'
使用wirehark查看有关文件的详细信息,输入:
# tcpdump -n -i eth1 -s 0 -w output.txt src or dst port 80

15. iotop – Linux I / O监视器

iotop命令监视器,使用Linux内核的I / O使用信息。它显示了按服务器上的进程或线程排序的当前I / O使用情况表。
$ sudo iotop
示例输出:Linux iotop:检查什么在压力和增加硬盘上的负载
iotop监控linux磁盘读写IO

16. htop –交互式过程查看器

htop是针对Linux的免费且开源的基于ncurses的进程查看器。它比top命令好得多。很好用。您可以选择不使用其PID或退出htop界面进行杀死或重新注册的进程。
$ htop
样本输出:
适用于Linux的htop进程查看器

17.atop–高级Linux系统和进程监视器

atop是一个非常强大的交互式监视器,可以查看Linux系统上的负载。从性能的角度来看,它显示了最关键的硬件资源。您可以快速查看CPU,内存,磁盘和网络性能。它显示哪些进程负责在进程级别上指示的与CPU和内存负载有关的负载。
$ atop
命令行工具之上以监视Linux性能

18. ac和lastcomm –

您必须监视Linux服务器上的进程和登录活动。psacct或acct软件包包含多个实用程序,用于监视流程活动,包括:

  1. ac命令:显示有关用户连接时间的统计信息
  2. lastcomm命令:显示有关先前执行的命令的信息
  3. accton命令:打开或关闭进程记帐
  4. sa命令:汇总会计信息

如何对Linux系统上正在执行的操作进行详细的审计跟踪

19. monit –流程监督

Monit是一个免费的开源软件,可充当过程监督。它具有重启失败服务的能力。您可以出于相同目的使用Systemd,daemontools或任何其他此类工具。本教程显示了如何在Debian或Ubuntu Linux上将monit安装和配置为进程监督

20. nethogs-找出在Linux上使用最多带宽的PID

NetHogs是一个小型但方便的网络顶部工具。它按进程名称(例如Firefox,wget等)将带宽分组。如果网络流量突然爆发,请启动NetHogs。您将看到哪个PID引起带宽激增。Linux:使用Nethogs工具查看每个进程的带宽使用情况
$ sudo nethogs
nethogs linux监控工具开源

21. iftop –按主机显示接口上的带宽使用情况

iftop命令在给定的接口名称(例如eth0)上侦听网络流量。它按主机对显示当前带宽使用情况的表
$ sudo iftop
iftop在行动

22. vnstat –基于控制台的网络流量监视器

vnstat是易于使用的基于控制台的Linux网络流量监视器。它会记录选定接口的每小时,每日和每月网络流量。
$ vnstat
vnstat linux网络流量监控器

23. nmon – Linux系统管理员,调谐器,基准测试工具

nmon是用于调整目的的Linux sysadmin的终极工具。它可以显示来自cli的CPU,内存,网络,磁盘,文件系统,NFS,顶级进程资源和分区信息。安装和使用nmon工具监视Linux系统性能
$ nmon
nmon命令

24.glances–密切关注Linux系统

glances是一个开源的跨平台监视工具。它在小屏幕上提供了大量信息。它也可以在客户端/服务器模式下工作。Linux:通过Glances Monitor监视您的系统
$ glances
扫视

25. strace –监视Linux上的系统调用

是否要跟踪Linux系统调用和信号?尝试使用strace命令。这对于调试Web服务器和其他服务器问题很有用。了解如何使用它来跟踪过程,并查看它在做什么。

26. /proc/filesystem–各种Linux内核统计信息

/ proc文件系统提供有关各种硬件设备的详细信息以及其他Linux内核信息。有关更多详细信息,请参见Linux内核/ proc文档。常见的/ proc示例:
# cat /proc/cpuinfo
# cat /proc/meminfo
# cat /proc/zoneinfo
# cat /proc/mounts

27. Nagios – Linux服务器/网络监控

Nagios是流行的开源计算机系统和网络监视应用程序软件。您可以轻松监视所有主机,网络设备和服务。当出现问题时,它可以发送警报;当情况变得更好时,它可以再次发出警报。FAN是 “全自动Nagios”。FAN的目标是提供Nagios安装,其中包括Nagios社区提供的大多数工具。FAN提供标准ISO格式的CDRom映像,可以轻松地轻松安装Nagios服务器。除此之外,发行版中还包含了大量工具,以改善Nagios的用户体验。

28. Cacti –基于Web的Linux监视工具

Cacti是一个完整的网络图形解决方案,旨在利用RRDTool的数据存储和图形功能。Cacti开箱即用地提供了快速轮询器,高级图形模板,多种数据采集方法以及用户管理功能。所有这些都封装在一个直观,易于使用的界面中,该界面对于LAN大小的安装以及具有数百个设备的复杂网络都是有意义的。它可以提供有关网络,CPU,内存,登录用户,Apache,DNS服务器等的数据。请参阅如何在CentOS / RHEL下安装和配置Cacti网络绘图工具。

29. KDE System Guard –实时Linux系统报告和图形化

KSysguard是用于KDE桌面的启用网络的任务和系统监视器应用程序。该工具可以在ssh会话上运行。它提供了许多功能,例如支持监视本地和远程主机的客户端/服务器体系结构。图形前端使用所谓的传感器来检索其显示的信息。传感器可以返回简单值或更复杂的信息(例如表格)。对于每种信息,都提供一个或多个显示。显示组织在工作表中,可以相互独立保存和加载。因此,KSysguard不仅是简单的任务管理器,还是控制大型服务器场的非常强大的工具。

图05 KDE System Guard

图05 KDE System Guard {图片来源:维基百科}

有关详细用法,请参见KSysguard手册

30. Gnome Linux系统监视器

使用“系统监视器”应用程序,您可以显示基本系统信息并监视系统进程,系统资源的使用情况和文件系统。您还可以使用系统监视器来修改系统的行为。尽管不如KDE System Guard强大,但它提供了可能对新用户有用的基本信息:

  • 显示有关计算机硬件和软件的各种基本信息。
  • Linux内核版本
  • GNOME版本
  • 硬件
  • 安装的内存
  • 处理器和速度
  • 系统状态
  • 当前可用磁盘空间
  • 工艺流程
  • 内存和交换空间
  • 网络使用
  • 文件系统
  • 列出所有已挂载的文件系统以及有关每个文件系统的基本信息。

图06 Gnome系统监视器应用程序

图06 Gnome系统监视器应用程序

奖励:其他工具

其他一些工具:

  • nmap –扫描服务器中的开放端口。
  • lsof –列出打开的文件,网络连接等等。
  • ntop基于Web的工具– ntop是查看网络使用情况的最佳工具,其方式类似于top命令对进程所做的方式,即它是网络流量监视软件。您可以查看网络状态,UDP,TCP,DNS,HTTP和其他协议的流量的协议明智分布。
  • Conky – X窗口系统的另一个很好的监视工具。它是高度可配置的,并且能够监视许多系统变量,包括CPU的状态,内存,交换空间,磁盘存储,温度,进程,网络接口,电池电量,系统消息,电子邮件收件箱等。
  • GKrellM –可用于监视CPU,主内存,硬盘,网络接口,本地和远程邮箱以及许多其他东西的状态。
  • mtr – mtr在单个网络诊断工具中结合了traceroute和ping程序的功能。
  • vtop – Linux上的图形终端活动监视器
  • gtop – 出色的Linux / macOS Unix终端系统监控仪表板

我错过了什么?请在评论中添加您喜欢的系统驱动工具。

 

发言者: Vivek Gite

作者是nixCraft的创建者,经验丰富的sysadmin,DevOps工程师以及Linux操作系统/ Unix shell脚本的培训师。通过RSS / XML feed每周的电子邮件通讯获取有关SysAdmin,Linux / Unix和开源主题最新教程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值