linux服务器监控查看命令

[01 - iostat ]                     检测存储设备是否工作正常

[02/03 - meminfo/free ]   查看内存使用情况

[04 - mpstat ]                  多处理器服务器,查看每一个CUP的状态

[05 - netstat ]                 显示很多有关网络方面的信息,例如socket使用情况、路由情况、网卡情况、协议情况、网络流量统计等等

[06 - nmon ]                   监视Linux系统性能的工具

[07 - pmap ]                   显示进程占用的内存量

[08/09 - ps/pstree ]        显示处于运行状态的进程的列表

[10 - sar ]                       sar和nmon的最大区别在于,sar更适用于长期的系统监控,而nmon则更适用于快速查看信息

[11 - strace ]                  解析和记录进程的系统调用行为,这使得strace成为了一个非常有用的诊断、调查和纠错工具

[12 - tcpdump ]              网络监控工具

[13 - top ]                      显示系统中的进程信息

[14 - uptime ]                查看系统已经运行了多久,可以统计当前处于登陆状态的用户数量,还可以显示当前服务器的负载情况

[15 - vmstat ]                查看系统的虚拟内存情况,因为Linux通常会通过虚拟内存来获得更好的存储性能

[16 - wireshark ]           是tcpdump命令的大师兄,因为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界面来查看到上述信息。


nmon监控工具

[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

[08/09 - ps/pstree]

ps和pstree在Linux系统里是一对好兄弟,它们都是用来列出处于运行状态的进程的列表的。

ps告诉我们每个进程使用的内存量以及所消耗的CPU时间。

pstree则会告诉我们进程间的父子关系,如下便是mysql的一些父子关系信息:

# pstree -p 1829

mysqld_safe(1829)───mysqld(2307)─┬─{mysqld}(2309)

├─{mysqld}(2310)

├─{mysqld}(2311)

├─{mysqld}(2312)

├─{mysqld}(2313)

├─{mysqld}(2314)

├─{mysqld}(2315)

├─{mysqld}(2316)

├─{mysqld}(2317)

├─{mysqld}(2318)

├─{mysqld}(2320)

├─{mysqld}(2321)

├─{mysqld}(2322)

├─{mysqld}(2323)

├─{mysqld}(2325)

├─{mysqld}(2544)

├─{mysqld}(2548)

├─{mysqld}(7912)

├─{mysqld}(7914)

├─{mysqld}(7916)

├─{mysqld}(24689)

├─{mysqld}(27329)

└─{mysqld}(27331)

[10 - sar]

sar命令堪称系统监控工具里的瑞士军刀。

sar命令实际上是由三个程序组成的,即sar(用于显示数据)、sa1(用于采集数据)和sa2(用于存储数据)。

sar可以涵盖到CPU利用率信息、内存换页信息、网络IO传输信息、进程创建行为和存储设备行为。

sar和nmon的最大区别在于,sar更适用于长期的系统监控,而nmon则更适用于快速查看信息。

如果希望更详细的学习sar命令,可以阅读《sar访谈》-linux命令五分钟系列之二十九

[11 - strace]

starce经常被用来作为追查程序问题的工具,但他的功能远非如此。

它可以解析和记录进程的系统调用行为,这使得strace成为了一个非常有用的诊断、调查和纠错工具。

举例来说,你可以适用strace来追查到一个程序在启动之初所需加载的配置文件信息。

当然,strace也有它自身的缺陷,那就是strace会严重拖慢调查对象(某个进程)的性能和运行速度。

顺便推荐一篇非常好的strace的文章:《strace使用详解

另外,如果你使用MAC,strace的替代品是truss。

[12 - tcpdump]

tcpdump是一个简单的、好用的网络监控工具。它的网络协议分析能力使得它能够看清网络中到底发生了什么,如果你希望更细节的调查的话,可以考虑适用功能更为强大的wireshark工具。

tcpdump的系列教程“在这里”。

[13 - top]

top命令可以显示系统中的进程信息。默认情况下,top会按照CPU使用率从高到低来显示系统中的进程,并且每5秒刷新一次排行榜。

当然,你也可以让top按照PID、进程寿命、CPU耗时、内存消耗等维度对进程进行排序。(我经常使用的是P和M快捷键,分别是按CPU利用率排序、按内存使用量排序)

通过top命令,你可以很快的发现那些失去控制或不符合预期的进程。

[14 - uptime]

通过uptime命令可以查看系统已经运行了多久,可以统计当前处于登陆状态的用户数量,还可以显示当前服务器的负载情况。

# uptime

18:35:17 up 11 days, 9:30, 1 user, load average: 0.00, 0.00, 0.00

[15 - vmstat]

大多数情况下,你可以使用vmstat命令去查看系统的虚拟内存情况,因为Linux通常会通过虚拟内存来获得更好的存储性能。

如果你的程序占用了大量了内存,那么系统会进行内存页换出的动作,以便把程序从内存中移动到系统SWAP空间中,也就是硬盘中。

如果系统的内存页的换入换出动作频度超过一个临界值,那么这种状态被叫做“Thrashing”。当系统处于thrashing状态时,性能会急剧下降。

vmstat命令便可以帮助人们及时发现此类问题,找出那个拖慢系统的元凶。

# vmstat 1

procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----

r b swpd free buff cache si so bi bo in cs us sy id wa st

2 0 0 57484 356864 861332 0 0 0 1 7 3 1 0 99 0 0

0 0 0 57468 356864 861360 0 0 0 0 336 145 6 1 94 0 0

0 0 0 57468 356864 861360 0 0 0 0 43 51 0 0 100 0 0

0 0 0 57468 356864 861360 0 0 0 16 51 62 0 0 100 0 0

[16 - wireshark]

Wireshark的前身叫做Ethereal,我们可以认为wireshark是tcpdump命令的大师兄,因为wireshark会更为专业,也具有更高级的协议分析和统计能力。

Wireshark同时具有GUI界面和shell借口。

如果你是一位资深的网络管理员,那么你一定使用过ethereal。而如果你正在使用wireshark/ethereal,那么我推荐你阅读Chris Sander的一本非常好的书《Practical Packet Analysis》。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342