一文掌握linux实战技能系统管理篇(每一个系统管理员都应该知道的30个Linux系统监控工具)
您需要监控Linux服务器性能吗?可以试着使用这些内置命令和一些附加工具。大多数发行版都附带了大量的Linux监控工具。那个经典的工具图本文就不贴了。本文暂且介绍一下最为常用的性能检测和调优工具,您可以使用这些工具来查找性能问题的可能原因。下面讨论的命令是系统分析和调试Linux服务器问题时最基本的一些命令,主要包括如下几个方面:
- 找出系统瓶颈
- 磁盘(存储)瓶颈
- CPU和内存瓶颈
- 网络瓶颈。
top命令显示Linux进程。它提供运行系统的动态实时视图,即实际进程的活动。默认情况下,它显示服务器上运行的CPU密集型任务,并每隔五秒钟更新一次列表。
图1. Linux top命令
与top监控工具一起使用的常用热键,下面是一个有用的热键列表:
t - 关闭和打开显示摘要信息。
M- 显示关闭和打开内存信息。
a - 按不同系统资源的顶级使用者对显示进行排序。有助于快速识别系统中需要性能的任务。
F - 进入顶部的交互式配置屏幕。有助于为特定任务设置top。
o - 使您能够交互选择顶部的顺序。
r - 发出renice命令。
k - 发出kill命令。
Z - 打开或关闭颜色/单声道
vmstat – 虚拟内存统计vmstat命令报告有关进程、内存、分页、块IO、陷阱和CPU活动的信息。
# vmstat 3
输出样例:
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------ r b swpd free buff cache si so bi bo in cs us sy id wa st 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 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 1253 1123 5 1 94 0 0
显示Slab内存利用率
# vmstat -m
获取有关活动/非活动内存页的信息
# vmstat -a
w – 了解谁登录以及他们在做什么w命令显示有关计算机上的当前用户及其进程的信息。
# w username # w vivek
输出样例:
17:58:47 up 5 days, 20:28, 2 users, load average: 0.36, 0.26, 0.24 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT 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.00s w
uptime – 告诉Linux系统运行了多长时间可以使用uptime命令查看服务器运行了多长时间。当前时间、系统运行时间、当前登录的用户数以及过去1、5和15分钟的系统平均负载。
# uptime
输出样例:
18:02:41 up 41 days, 23:42, 1 user, load average: 0.00, 0.00, 0.00
1可被视为最佳负荷值。负载情况在每个系统上是有差异的,不能一概而论。对于单个CPU的系统1–3认为是良好的,而对于具体多个CPU的SMP系统,6-10负载值也是可接受的。
ps – 显示Linux的进程列表ps命令将报告当前进程的快照。要选择所有进程,请使用-A或-e选项:
# ps -A
输出样例:
PID TTY TIME CMD 1 ? 00:00:02 init 2 ? 00:00:02 migration/0 3 ? 00:00:01 ksoftirqd/0 4 ? 00:00:00 watchdog/0 5 ? 00:00:00 migration/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 cifsdnotifyd 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 and 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=
前10个内存消耗进程
# ps -auxf | sort -nr -k 4 | head -10
向我们展示10大消耗CPU的进程
# ps -auxf | sort -nr -k 3 | head -10
free – 显示Linux服务器内存使用情况free命令显示系统中可用和已用物理内存和交换内存的总量,以及内核使用的缓冲区。
# free
输出样例:
total used free shared buffers cached Mem: 12302896 9739664 2563232 0 523124 5154740 -/ buffers/cache: 4061800 8241096 Swap: 1052248 0 1052248
iostat – Montor Linux average CPU load and disk activityiostat命令报告设备、分区和网络文件系统(NFS)的中央处理器(CPU)统计信息和输入/输出统计信息。
# iostat
输出样例:
Linux 2.6.18-128.1.14.el5 (www03.nixcraft.in) 06/26/2009 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
sar – 监视、收集和报告Linux系统活动sar命令用于收集、报告和保存系统活动信息。要查看网络统计信息,输入如下命令:
# sar -n DEV | more
从0点开始的网络统计信息:
# sar -n DEV -f /var/log/sa/sa24 | more
显示实时利用率信息:
# sar 4 5
输出样例:
Linux 2.6.18-128.1.14.el5 (www03.nixcraft.in) 06/26/2009 06:45:12 PM CPU %user %nice %system %iowait %steal %idle 06:45:16 PM all 2.00 0.00 0.22 0.00 0.00 97.78 06:45:20 PM all 2.07 0.00 0.38 0.03 0.00 97.52 06:45:24 PM all 0.94 0.00 0.28 0.00 0.00 98.78 06:45:28 PM all 1.56 0.00 0.22 0.00 0.00 98.22 06:45:32 PM all 3.53 0.00 0.25 0.03 0.00 96.19 Average: all 2.02 0.00 0.27 0.01 0.00 97.70
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 intr/s 06:48:11 PM all 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 PM 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
pmap – 在Linux上监控进程内存使用情况pmap命令报告进程的内存映射。使用此命令查找内存性能瓶颈的原因。
# pmap -d PID
要显示PID 47394的进程内存信息,请输入:
# pmap -d 47394
输出样例:
47394: /usr/bin/php-cgi Address Kbytes Mode Offset Device Mapping 0000000000400000 2584 r-x-- 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 r-x-- 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 r-x-- 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 r-x-- 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:00002 libnss_files-2.5.so 00002af8d4b17000 768000 rw-s- 0000000000000000 000:00009 zero (deleted) 00007fffc95fe000 84 rw--- 00007ffffffea000 000:00000 [ stack ] ffffffffff600000 8192 ----- 0000000000000000 000:00000 [ anon ] mapped: 933712K writeable/private: 4304K shared: 768000K
最后一行非常重要
- mapped: 933712K 映射到文件的内存总量
- writeable/private: 4304K 专用地址空间的数量
- shared: 768000K 此进程与其他进程共享的地址空间量
netstat命令显示网络连接、路由表、接口统计信息、伪装连接和多播成员身份。
# netstat -tulpn
# netstat -nat
ss – 网络统计ss命令用于转储套接字统计信息。它允许显示类似于netstat的信息。请注意,netstat基本上是过时的。因此需要使用ss命令。要在Linux上SS所有TCP和UDP套接字,请执行以下操作:
# ss -t -a
或者
# ss -u -a
显示具有进程selinux安全上下文的所有TCP套接字:
# ss -t -a -Z
iptraf – 获取Linux上的实时网络统计信息iptraf命令是交互式彩色IP LAN监视器。它是一个基于ncurses的IP LAN监视器,可以生成各种网络统计信息,包括TCP信息、UDP计数、ICMP和OSPF信息、以太网负载信息、节点状态、IP校验和错误等。它可以以易于阅读的格式提供以下信息:
- TCP连接的网络流量统计
- 按网络接口的IP流量统计
- 按协议的网络流量统计
- 按TCP/UDP端口和数据包大小统计的网络流量
- 按第2层地址列出的网络流量统计信息
图2. iptraf一般接口统计
图3 通过TCP连接统计网络传输情况
tcpdump –详细的网络流量分析tcpdump命令是在网络上转储数据的简单命令。但是,您需要很好地理解TCP/IP协议才能使用此工具。例如,要显示有关DNS的流量信息,请输入:
# tcpdump -i eth1 'udp port 53'
查看进出端口80的所有IPv4 HTTP数据包,即仅打印包含数据的数据包,而不是syn和fin数据包和ack-only数据包,输入:
# tcpdump 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'
显示到202.54.1.5的所有ftp会话,输入:
# tcpdump -i eth1 'dst 202.54.1.5 and (port 21 or 20'
显示到192.168.1.5的所有HTTP会话:
# tcpdump -ni eth0 'dst 192.168.1.5 and tcp and port http'
使用wireshark查看有关文件的详细信息,输入:
# tcpdump -n -i eth1 -s 0 -w output.txt src or dst port 80
iotop – Linux I/O 监控iotop命令监视器I/O利用率信息,基于Linux内核。它显示了按服务器上的进程或线程排序的当前I/O使用情况表。
$ sudo iotop
输出样例:
htop – interactive process viewer
htop是一个基于ncurses的免费开源Linux进程查看器。它比top命令要好用得多。非常容易使用,您可以在不使用PIDS或离开htop接口的情况下选择要终止或重新冻结的进程。
$ htop
输出样例:
atop – 高级Linux系统和进程监视器
atop是一个非常强大的交互式监视器,可以查看Linux系统上的负载。它从性能角度显示最关键的硬件资源。您可以快速看到CPU、内存、磁盘和网络性能。它显示了在进程级别上,哪些进程负责与CPU和内存负载相关的指示负载。
$ atop
ac and lastcomm
您必须监视Linux服务器上的进程和登录活动。psacct或acct包包含多个用于监控流程活动的实用程序,包括:
- ac命令:显示有关用户连接时间的统计信息
- lastcomm命令:显示有关以前执行的命令的信息
- accton命令:打开或关闭进程记帐
- sa命令:汇总会计信息
monit是一个免费开源的软件,充当进程的看门狗。它具有重新启动失败服务的能力。您可以使用systemd、daemontools或任何其他类似的工具来实现相同的目的。
nethogs- 找出在Linux上占用带宽最多的pidsNetHogs是一种小型但方便的网络top工具。它按进程名(如firefox、wget等)对带宽进行分组。如果网络流量突然爆发,启动网管。您将看到哪个PID导致带宽激增。
$ sudo nethogs
iftop – 按主机显示接口上的带宽使用情况
iftop命令监听给定接口名(如eth0)上的网络流量。它按主机对显示当前带宽使用情况的列表。
$ sudo iftop
vnstat – 基于控制台的网络流量监视器vnstat 是一个易于使用的基于控制台的Linux网络流量监视器。它为所选接口保留每小时、每天和每月网络流量的日志。
$ vnstat
nmon – Linux系统管理员、调优者、基准测试工具nmon是linux系统管理员的终极工具,它主要用于性能调优。它可以从控制台显示CPU、内存、网络、磁盘、文件系统、NFS、顶级进程资源和分区信息。
$ nmon
glances – 给Linux系统按一个眼睛
glances是一个开源的跨平台监控工具。它在小屏幕上提供大量信息。它还可以在客户机/服务器模式下工作。
$ glances
strace – 在Linux上监视系统调用要跟踪Linux系统调用和信号吗?尝试strace命令。这对于调试Web服务器和其他服务器问题很有用。了解如何使用跟踪流程并了解它在做什么。
/proc/ 文件系统 – 各种Linux内核统计信息/proc file system提供有关各种硬件设备和其他Linux内核信息的详细信息。有关更多详细信息,请参阅Linux内核/proc文档。常见/过程示例:
# cat /proc/cpuinfo
# cat /proc/meminfo
# cat /proc/zoneinfo
# cat /proc/mounts
Nagios – Linux服务器/网络监控Nagios是一款流行的开源计算机系统和网络监控应用软件。您可以轻松地监视所有主机、网络设备和服务。它可以在出现问题时发出警报,在情况好转时再次发出警报。风扇是“全自动Nagios”。Fan的目标是提供Nagios安装,包括Nagios社区提供的大多数工具。Fan以标准ISO格式提供了一个cdrom映像,使安装Nagios服务器变得容易。此外,为了改善Nagios周围的用户体验,发行版中还包括了大量工具。
Cacti – 基于Web的Linux监控工具Cacti是一个完整的网络绘图解决方案,旨在利用rrdtool的数据存储和绘图功能。Cacti提供了快速轮询、高级图形模板、多种数据采集方法和开箱即用的用户管理功能。所有这些都被包装在一个直观、易于使用的界面中,这对于局域网大小的安装(包括具有数百个设备的复杂网络)是有意义的。它可以提供关于网络、CPU、内存、登录用户、Apache、DNS服务器等的数据。请参阅centos/rhel下的如何安装和配置cacti网络绘图工具。
KDE 系统守卫 –实时Linux系统报告和绘图ksysguard是一个用于KDE桌面的网络化的任务和系统监控应用程序。这个工具可以在ssh会话上运行。它提供了许多功能,例如客户端/服务器体系结构,可以监视本地和远程主机。图形前端使用所谓的传感器来检索它显示的信息。传感器可以返回简单的值或更复杂的信息,如表。对于每种类型的信息,提供一个或多个显示器。在工作表中组织显示,这些工作表可以相互独立地保存和加载。因此,ksysguard不仅是一个简单的任务管理器,而且是一个非常强大的工具来控制大型服务器场。
图 KDE系统监控软件
Gnome Linux 系统监控系统监视器应用程序使您能够显示基本的系统信息和监视系统进程、系统资源的使用情况和文件系统情况。还可以使用系统监视器修改系统的行为。虽然不如KDE系统保护功能强大,但它提供了对新用户有用的基本信息。
- 显示有关计算机硬件和软件的各种基本信息。
- Linux内核版本
- GNOME 版
- 硬件
- 已安装内存
- 处理器和速度
- 系统状态
- 当前可用磁盘空间
- 过程
- 内存和交换空间
- 网络使用
- 文件系统
- 列出所有安装的文件系统以及每个文件系统的基本信息。
Gnome系统监控程序
除了上述介绍的监控工具外,还有大名鼎鼎的zabbix和Open-Falcon等适合在局域网内进行监控的工具。本文就不再详细介绍了。
,免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com