常用的Linux服务器监控命令

手册/FAQ (599) 2015-11-28 09:31:26

常用的Linux服务器监控命令

如果希望追求最佳性能,那么Linux服务器应该运行在runlevel 3级别,也就是支持网络和多用户功能,但不支持GUI功能。如果你真的需要GUI,那么可以在命令行输入startx进入GUI。

如果你的Linux系统默认就是进入GUI,你可以调一调配置,让他默认进入runlevel 3。具体方法就是:

1 打开一个终端,su到root账号

2 用你喜欢的编辑器(vi/emacs/...)打开/etc/inittab文件

3 查找initdefault关键字,将“id:5:initdefault:”修改为“id:3:initdefault:”

如果系统中根本就没有/etc/inittab文件的话,也没关系,直接创建这个文件,并添加新的一行“id:3”。这样的话,你再重启服务器,便会默认进入命令行状态。当然,如果你只想在临时进入命令行状态,那么直接在终端中输入“init 3”就好了。

至此,我们的命令行准备好了,下面就可以开始通过强大的命令来查看“到底服务器里发生了什么”:

[01    - iostat       ]

[02/03 - meminfo/free ]

[04    - mpstat       ]

[05    - netstat      ]

[06    - nmon         ]

[07    - pmap         ]

[08/09 - ps/pstree    ]

[10    - sar          ]

[11    - strace       ]

[12    - tcpdump      ]

[13    - top          ]

[14    - uptime       ]

[15    - vmstat       ]

[16    - wireshark    ]

[01 - iostat]

iostat命令显示的是你的存储系统的细节状态。你通常可以用这个命令去检测你的存储设备是否工作正常,

完全可以在用户抱怨服务器慢之前,通过这个命令发现系统IO方面的问题。

如下可以看到iostat既可以显示CPU使用情况,也可以看到每个磁盘的IO情况。

# iostat 1

Linux 2.6.32-220.4.1.el6.i686 (roclinux) 2012年12月22日 _i686_ (4 CPU)

 

avg-cpu: %user %nice %system %iowait %steal %idle

0.55 0.00 0.03 0.02 0.00 99.40

 

Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn

sdb 0.41 2.61 5.76 2558664 5653872

sda 0.24 0.80 4.12 784650 4038344

[02/03 - meminfo/free]

meminfo提供了很详细的内存使用状况。可以直接用cat命令查看:

cat /proc/meminfo

当然meminfo里包含了太多细节,你可以直接使用free命令来查看有关内存的综述。
 

# free -m

total used free shared buffers cached

Mem: 1513 1429 83 0 343 836

-/+ buffers/cache: 249 1263

Swap: 0 0 0

[04 - mpstat]

mpstat用在多处理器的服务器上,用来显示每一个CPU的状态。

另外,mpstat也会显示所有处理器的平均状况。

你可以设置显示每个服务器的CPU统计信息,或者每个处理的CPU统计信息。

# mpstat -P ALL

Linux 2.6.32-220.4.1.el6.i686 (roclinux) 2012年12月22日 _i686_ (4 CPU)

 

17时46分35秒 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle

17时46分35秒 all 0.55 0.00 0.03 0.02 0.00 0.00 0.00 0.00 99.40

17时46分35秒 0 0.84 0.00 0.04 0.03 0.00 0.01 0.00 0.00 99.08

17时46分35秒 1 0.51 0.00 0.03 0.02 0.00 0.00 0.00 0.00 99.44

17时46分35秒 2 0.45 0.00 0.02 0.01 0.00 0.00 0.00 0.00 99.51

17时46分35秒 3 0.40 0.00 0.02 0.01 0.00 0.00 0.00 0.00 99.56

 

# mpstat -P 0

Linux 2.6.32-220.4.1.el6.i686 (roclinux) 2012年12月22日 _i686_ (4 CPU)

 

17时46分39秒 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle

17时46分39秒 0 0.84 0.00 0.04 0.03 0.00 0.01 0.00 0.00 99.08

其中各个域的含义简述如下:

1 CPU:处理器编号,如果为all,则此行表示的是所有处理器的统计平均值

2 %usr:用户态的CPU利用率

3 %nice:具有调度优先级的用户态CPU利用率

4 %sys:内核态CPU利用率(此值不包括响应硬件中断和软件中断的时间)

5 %iowait:处理IO请求导致CPU处于IDLE状态的时间百分比

6 %irq:CPU响应硬件中断的时间比率

7 %soft:CPU响应软件中断的时间比率

8 %steal:当虚拟机监控器在服务于其他虚拟处理器时,虚拟CPU的被动等待时间比率

9 %guest:运行一个虚拟处理器所消耗的CPU时间比率

[05 - netstat]

netstat命令,是Linux系统管理员几乎每天都会用到的命令(它已经逐步在被ss命令取代),他可以显示很多有关网络方面的信息,例如socket使用情况、路由情况、网卡情况、协议情况、网络流量统计等等。

一些常用的netstat选项包括:

-a : 显示所有socke信息

-r : 显示路由信息

-i : 显示网卡借口统计

-s : 显示网络协议统计

[06 - nmon]

nmon是Nigel’s Monitor的缩写,它是一个很知名的监视Linux系统性能的工具。

nmon可以查看到处理器利用率、内存使用率、运行队列信息、磁盘IO统计、网络IO统计、换页统计等。

你可以通过一个基于curses的类GUI界面来查看到上述信息。

 [07 - pmap]

pmap命令可以显示进程占用的内存量。

你可以通过pmap找到那个占用内存量最多的进程。

如下就是nignx主进程所占用的内存情况:

# pmap 2395|head -n 10

2395: nginx: master process ./sbin/nginx

00110000 240K r-x-- /lib/libgssapi_krb5.so.2.2

0014c000 4K ----- /lib/libgssapi_krb5.so.2.2

0014d000 4K r---- /lib/libgssapi_krb5.so.2.2

0014e000 4K rw--- /lib/libgssapi_krb5.so.2.2

0014f000 12K r-x-- /lib/libcom_err.so.2.1

00152000 4K r---- /lib/libcom_err.so.2.1

00153000 4K rw--- /lib/libcom_err.so.2.1

00154000 48K r-x-- /lib/libnss_files-2.12.so

00160000 4K r---- /lib/libnss_files-2.12.so

...

b78e4000 20K rw--- [ anon ]

b78f3000 4K rw-s- /dev/zero (deleted)

b78f4000 4K rw--- [ anon ]

bfeaa000 84K rw--- [ stack ]

total 7280K

 

THE END