Linux服务器运行状况全面监测(上)
随着Linux应用的日益广泛,有大量的网络服务器使用Linux操作系统。为了全面衡量网络运行状况,就需要对网络状态做更细致、更精确的测量。SNMP协议的制订为互联网测量提供了有力支持。计算机系统是
_ T9{;w!n)bZZ0
J#boZI)S&y0IXw m0 由软件系统硬件系统组成的,检测硬件状态对于保障整个系统的稳定是非常重要的。不论操作系统是使用Linux、还是Windows,一旦硬件出现故障,那么整个系统的安全就严重了。这里我们主要监测Linux服务器的CPU、硬盘、内存、网络接口、主板等硬件的工作状态。
UZ"o"KWZ$[Uc0
-xn]{+aP)Z1{Q l0一、/proc文件系统特点IXPUB技术博客[#DwRp"vo~
IXPUB技术博客"SIk!?)~o?@]R"Zu
Linux 系统向管理员提供了非常好的方法,使他们可以在系统运行时更改内核,而不需要重新引导内核系统。这是通过 /proc 虚拟文件系统实现的。/proc 文件虚拟系统是一种内核和内核模块用来向进程 (process) 发送信息的机制 (所以叫做 /proc)。这个伪文件系统让你可以和内核内部数据结构进行交互,获取 有关进程的有用信息,在运行中 (on the fly) 改变设置 (通过改变内核参数)。 与其他文件系统不同,/proc 存在于内存之中而不是硬盘上。不用重新启动而去看 CMOS ,就可以知道系统信息。这就是 /proc 的妙处之一。/proc 目录里主要文件内容,见表-1:IXPUB技术博客6F}gZ r%h4dO#A
IXPUB技术博客2E%A9c}+v&T)C0a+D
每个Linux系统根据软硬件不同/proc 虚拟文件系统的内容也有些差异。/proc 虚拟文件系统有三个很重要的目录:net,scsi和sys。Sys目录是可写的,可以通过它来访问或修改内核的参数,而net和scsi则依赖于内核配置。例如,如果系统不支持scsi,则scsi目录不存在。除了以上介绍的这些,还有的是一些以数字命名的目录,它们是进程目录。net目录包括多个 ASCII 格式的网络伪文件, 描述了网络层的部分情况,可以用arp 、netstat、route等命令来查询这些文件。除了以上介绍的这些,还有的是一些以数字命名的目录,它们是进程目录。系统中当前运行的每一个进程都有对应的一个目录在/proc下,以进程的 PID号为目录名,它们是读取进程信息的接口。而self目录则是读取进程本身的信息接口,是一个link。Proc文件系统的名字就是由之而起。IXPUB技术博客,v+at9I&R['^?
IXPUB技术博客nSgV?`3Au
二、proc文件系统主要实现的五大功能:
H]Gpnm:cOf0
3otdh)_\$u&B0 1. 进程信息:对于系统中的任何一个进程来说,在proc的子目录里都有一个同名的进程ID。你将可以找到以下的信息:cmdline, mem, root, stat, statm, 以及status。某些信息只有超级用户可见,例如进程根目录。到每一个单独的含有现有进程信息的进程有一些可用的专门链接。对于系统里的任何一个进程来说,都有一个单独的自链接指向进程信息。它的用处就是从进程中获取命令行信息。
.|:ud(r0m3Wp%V0IXPUB技术博客*{;`+~b1a
2. 系统信息:如果你需要了解整个系统信息,你也可以从/proc/stat中获得。它包括:包括CPU占用、磁盘空间、内存页、内存对换、全部中断、接触开关以及上次系统自举时间。IXPUB技术博客 lB5g g0@2Z%z#c
IXPUB技术博客i2\E!W\(DD
3. CPU信息:利用/proc/cpuinfo文件,你可以获得中央处理器当前的准确信息。IXPUB技术博客 w2go"_ Oh+E+H
IXPUB技术博客$Mks%p5DE
4. 负载信息: /proc/loadavg文件包含了系统负载信息。IXPUB技术博客7R~"j7ree-d
IXPUB技术博客!U.C4}0Q ~_}&]
5. 系统内存信息:meminfo文件包含了系统内存的详细信息。它显示了物理内存的数量,可用交换空间的数量,空闲内存的数量等等。
Qh1w#rl0IXPUB技术博客Ipe"nF0L#G
1. 监测服务器全面统计状态IXPUB技术博客&y*FMA!A%`U_CL_
Gr*x&dDF9D;M0 要监测全面统计状态,使用命令,结果见图1:
g"v-x5Py,F0
[:D!f V[6NX8W:?/q V0 #cat/proc/stat
+@P&P+e)q9d0IXPUB技术博客S6h6vv6L3OG
n6jK1mCOs0IXPUB技术博客/CUC5N L6`y
以上数字依次代表:
;Q/jEz$lw Qc)I0
x2t,x)lH+q1s:B0 上下文切换数量;中断总量;进页面总数;出页面总数;进程总数;IXPUB技术博客!zu3a~n;l
%rp5JS3W/d.d|]0 换入总数;换出总数;合计CPU空闲时间;合计CPU nice时间;合计CPU系统时间;
+}3L!c4Iqm-R+S*hh0IXPUB技术博客0]5}\!} lC1\*a%~
合计CPU用户时间。IXPUB技术博客"gM8toP3G!C
0n%}'l9G,lVi6]Z/h0 同时提供对每个CPU的:单个CPU空闲时间;单个CPU nice时间;单个CPU系统时间;单个CPU用户时间。IXPUB技术博客fHrA}(}+_5q.u
IXPUB技术博客*pp$S/oUe&X
以及对每个磁盘驱动器的如下数据:IXPUB技术博客:I s!p#h$o.H7g:Xq9c
(X.G3s/o5^G0 单个磁盘块读;单个磁盘块写;单个磁盘I/O总数;单个磁盘I/O读;单个磁盘I/O写。IXPUB技术博客.H7d5mUZ;F`
IXPUB技术博客D}0sc;BwRz8@jr
2.监测网络流量
.X-z7z9Z3meg1qx&j6t0
~} ]+nc-h He0 如果要了解网络流量,可以使用命令:结果见图1。IXPUB技术博客bFq ^4{0~)t
IXPUB技术博客BZ%i-?:`[8h!P k9{9da t
#cat /proc/net/dev
F$\"k'm@UrAq KP$z!w b0
N0t.xq A6}'A9D"A*Z0
IXPUB技术博客z^q7F,_p!F
以上数字依次代表:接收到的字节;接收到的压缩字节;收到的误码数;收到的漏失误码;收到的FIFO误码;收到的帧误码;收到的多播误码;收到的总包数;已传输的字节;已传输的压缩字节;传输误码总数;传输载波误码;传输冲突误码;传输漏失误码;传输FIFO误码;传输的总包数。
j9TH7|)BkKvY0IXPUB技术博客 f?#m|t5WX7y^+~$n
3.使用uptime命令IXPUB技术博客4c5E.fkMo
A'T;ZtJ)D:e0 使用uptime命令可以查看系统负载,系统平均负载被定义为在特定时间间隔内运行队列中的平均进程数目。如果一个进程满足以下条件则其就会位于运行队列中:没有在等待I/O操作的结果、它没有主动进入等待状态(也就是没有被调用、没有被停止。
,rFY,Y#YNbqb(\0
_ al3D L]0 # uptime
?'l ZV@I:[9Ci0
t;t[;W'Ux.B#c0 9:51pm up 3 days, 4:43, 4 users, load average:6.02, 5.90, 3.94IXPUB技术博客\%DY9A:I"ob
IXPUB技术博客5ou s4@j5m4K/uAF
上面命令显示示最近1 分钟内系统的平均负载是6.02,在最近5分钟内系统的平均负载是5.90,在最近的15 分钟内系统的平均负载是3.94。一共四个用户。通常来说只要每个CPU的当前活动进程数不大于3那幺系统的性能就是良好的,如果每个CPU的任务数大于5,那幺就表示这台机器的性能有严重问题。对于上面的例子来说,由于笔者系统使用是双CPU,那幺其每个CPU的当前任务数为:6.02/2=3.01。这表示该服务器的性能是可以接受的。IXPUB技术博客 Owg9`["nLnV v J
%B!rG;R il0 IXPUB技术博客5chhq v \ ?
IXPUB技术博客aD e%PT5?_U
[本帖最后由 孤云野鹤 于 2005-12-28 16:02 编辑]
`:^:X X/]2C$].kl/y0
I/qF:KtA}7[0
4.使用xload图形显示系统负载IXPUB技术博客-FF8G&dc3?8D3_O.Y
9H H#He"n?0 如果安装了KDE环境,可以使用xload 显示系统平均负载的柱状图 ,它会定期地更新。xload是Linux一个系统命令,使用方法:
H1o;| w#}:A Z A_0
$| k!z9U6Z!l0 # xload [-options ...]
+M1s-] ZZj0
-~q|,X!_3Q!iH"@0 xload 主要选项和说明:参见表-2IXPUB技术博客$HR'r_)B_0cN
IXPUB技术博客t8O;t#B-K.O5j o
#xload –scale 1 –update 1 –fg blue –h300 tan
(kh3SK7sSs0IXPUB技术博客a6e"U-eI"W
上面命令表示使用xload查看系统的负载。每秒更新一次,其尺寸大小为300,前景颜色为白色,背景颜色为蓝。见图-3。IXPUB技术博客6r]2Wi M-zk
P$xb%Xy&O9~0
y7G(Uz^ ex/CX0
-|n.d.Iu'a0三、使用phpsysinfoIXPUB技术博客.k-x$J4|B mWA E
IXPUB技术博客5w4@\0i _x/R4U
由于/proc文件系统非常大,而且系统是动态变化的,所以使用Linux命令比较麻烦,这里我们使用一个工具:phpsysinfo,它是一个支持PHP网页服务器用于侦测主机一些资料的PHP 脚本工具软件,可以提取/proc文件系统中的信息,以图形方式显示出来。另外phpsysinfo支持包括中文在内的20多种语言和许多风格的模板。IXPUB技术博客-[7at[2Z;E
IXPUB技术博客}q4vfGl-a A
1.系统要求:IXPUB技术博客?,]3y9p8p*N
!aTVg2R0 除了要搭建一个基于LAMP(Linux+PHP+APACHE+MYSQL)的网络构架,其它系统要求:软件:它要求内核(Kenerl)至少在2.2以上。KDE 2.0,桌面颜色至少16位增强色。硬件:中央处理器:奔腾II 450 以上 ,内存 64 兆 ,硬盘空间 60兆。安装前的准备工作: phpsysinfo 是用PHP语言写成的,并且使用到gdk、gtk及glib。
K'Mm)V6nn7],j W2t0IXPUB技术博客;[eA3li i7G,@{:E
2.软件下载:
!Y;yuJn5_ sS0
.VOo Q^A m } X0 #wget http://jaist.dl.sourceforge.net/ ... psysinfo-2.3.tar.gzIXPUB技术博客'BH7W:cnxC,|
9UHz7a%I ]0 #wget http://secure.netroedge.com/~lm78/archive/i2c-2.8.8.tar.gz IXPUB技术博客_;m&r$Qt(e5g
IXPUB技术博客5iy:K;R$X1XI}?
#wget http://secure.netroedge.com/~lm78/archive/lm_sensors-2.8.8.tar.gz
$r%M3z#c/v7A0IXPUB技术博客e*| qd#Qn)b
3. 软件安装:IXPUB技术博客#M8`3q5p`WCM
'f&^!W2Ps+d4q3Q F0 将下载的软件拷贝到/var/www/html/目录下,执行:
RsH3E4e&G7d0IXPUB技术博客'R*YU(Yi
#mv phpsysinfo-2.3.tar.gz /var/www/html/sysinfoIXPUB技术博客}B&s
_ T9{;w!n)bZZ0
J#boZI)S&y0IXw m0 由软件系统硬件系统组成的,检测硬件状态对于保障整个系统的稳定是非常重要的。不论操作系统是使用Linux、还是Windows,一旦硬件出现故障,那么整个系统的安全就严重了。这里我们主要监测Linux服务器的CPU、硬盘、内存、网络接口、主板等硬件的工作状态。
UZ"o"KWZ$[Uc0
-xn]{+aP)Z1{Q l0一、/proc文件系统特点IXPUB技术博客[#DwRp"vo~
IXPUB技术博客"SIk!?)~o?@]R"Zu
Linux 系统向管理员提供了非常好的方法,使他们可以在系统运行时更改内核,而不需要重新引导内核系统。这是通过 /proc 虚拟文件系统实现的。/proc 文件虚拟系统是一种内核和内核模块用来向进程 (process) 发送信息的机制 (所以叫做 /proc)。这个伪文件系统让你可以和内核内部数据结构进行交互,获取 有关进程的有用信息,在运行中 (on the fly) 改变设置 (通过改变内核参数)。 与其他文件系统不同,/proc 存在于内存之中而不是硬盘上。不用重新启动而去看 CMOS ,就可以知道系统信息。这就是 /proc 的妙处之一。/proc 目录里主要文件内容,见表-1:IXPUB技术博客6F}gZ r%h4dO#A
IXPUB技术博客2E%A9c}+v&T)C0a+D
每个Linux系统根据软硬件不同/proc 虚拟文件系统的内容也有些差异。/proc 虚拟文件系统有三个很重要的目录:net,scsi和sys。Sys目录是可写的,可以通过它来访问或修改内核的参数,而net和scsi则依赖于内核配置。例如,如果系统不支持scsi,则scsi目录不存在。除了以上介绍的这些,还有的是一些以数字命名的目录,它们是进程目录。net目录包括多个 ASCII 格式的网络伪文件, 描述了网络层的部分情况,可以用arp 、netstat、route等命令来查询这些文件。除了以上介绍的这些,还有的是一些以数字命名的目录,它们是进程目录。系统中当前运行的每一个进程都有对应的一个目录在/proc下,以进程的 PID号为目录名,它们是读取进程信息的接口。而self目录则是读取进程本身的信息接口,是一个link。Proc文件系统的名字就是由之而起。IXPUB技术博客,v+at9I&R['^?
IXPUB技术博客nSgV?`3Au
二、proc文件系统主要实现的五大功能:
H]Gpnm:cOf0
3otdh)_\$u&B0 1. 进程信息:对于系统中的任何一个进程来说,在proc的子目录里都有一个同名的进程ID。你将可以找到以下的信息:cmdline, mem, root, stat, statm, 以及status。某些信息只有超级用户可见,例如进程根目录。到每一个单独的含有现有进程信息的进程有一些可用的专门链接。对于系统里的任何一个进程来说,都有一个单独的自链接指向进程信息。它的用处就是从进程中获取命令行信息。
.|:ud(r0m3Wp%V0IXPUB技术博客*{;`+~b1a
2. 系统信息:如果你需要了解整个系统信息,你也可以从/proc/stat中获得。它包括:包括CPU占用、磁盘空间、内存页、内存对换、全部中断、接触开关以及上次系统自举时间。IXPUB技术博客 lB5g g0@2Z%z#c
IXPUB技术博客i2\E!W\(DD
3. CPU信息:利用/proc/cpuinfo文件,你可以获得中央处理器当前的准确信息。IXPUB技术博客 w2go"_ Oh+E+H
IXPUB技术博客$Mks%p5DE
4. 负载信息: /proc/loadavg文件包含了系统负载信息。IXPUB技术博客7R~"j7ree-d
IXPUB技术博客!U.C4}0Q ~_}&]
5. 系统内存信息:meminfo文件包含了系统内存的详细信息。它显示了物理内存的数量,可用交换空间的数量,空闲内存的数量等等。
Qh1w#rl0IXPUB技术博客Ipe"nF0L#G
1. 监测服务器全面统计状态IXPUB技术博客&y*FMA!A%`U_CL_
Gr*x&dDF9D;M0 要监测全面统计状态,使用命令,结果见图1:
g"v-x5Py,F0
[:D!f V[6NX8W:?/q V0 #cat/proc/stat
+@P&P+e)q9d0IXPUB技术博客S6h6vv6L3OG
IXPUB技术博客m4DgF)wQ0i wX3A
IXPUB技术博客-D/w5cs@Z6k{1_
^
图1 系统全面统计状态
n6jK1mCOs0IXPUB技术博客/CUC5N L6`y
以上数字依次代表:
;Q/jEz$lw Qc)I0
x2t,x)lH+q1s:B0 上下文切换数量;中断总量;进页面总数;出页面总数;进程总数;IXPUB技术博客!zu3a~n;l
%rp5JS3W/d.d|]0 换入总数;换出总数;合计CPU空闲时间;合计CPU nice时间;合计CPU系统时间;
+}3L!c4Iqm-R+S*hh0IXPUB技术博客0]5}\!} lC1\*a%~
合计CPU用户时间。IXPUB技术博客"gM8toP3G!C
0n%}'l9G,lVi6]Z/h0 同时提供对每个CPU的:单个CPU空闲时间;单个CPU nice时间;单个CPU系统时间;单个CPU用户时间。IXPUB技术博客fHrA}(}+_5q.u
IXPUB技术博客*pp$S/oUe&X
以及对每个磁盘驱动器的如下数据:IXPUB技术博客:I s!p#h$o.H7g:Xq9c
(X.G3s/o5^G0 单个磁盘块读;单个磁盘块写;单个磁盘I/O总数;单个磁盘I/O读;单个磁盘I/O写。IXPUB技术博客.H7d5mUZ;F`
IXPUB技术博客D}0sc;BwRz8@jr
2.监测网络流量
.X-z7z9Z3meg1qx&j6t0
~} ]+nc-h He0 如果要了解网络流量,可以使用命令:结果见图1。IXPUB技术博客bFq ^4{0~)t
IXPUB技术博客BZ%i-?:`[8h!P k9{9da t
#cat /proc/net/dev
F$\"k'm@UrAq KP$z!w b0
N0t.xq A6}'A9D"A*Z0
IXPUB技术博客@9YG| u!F,i.vT]
IXPUB技术博客+JZZ%M4M
图2网络接口数据包流量
IXPUB技术博客z^q7F,_p!F
以上数字依次代表:接收到的字节;接收到的压缩字节;收到的误码数;收到的漏失误码;收到的FIFO误码;收到的帧误码;收到的多播误码;收到的总包数;已传输的字节;已传输的压缩字节;传输误码总数;传输载波误码;传输冲突误码;传输漏失误码;传输FIFO误码;传输的总包数。
j9TH7|)BkKvY0IXPUB技术博客 f?#m|t5WX7y^+~$n
3.使用uptime命令IXPUB技术博客4c5E.fkMo
A'T;ZtJ)D:e0 使用uptime命令可以查看系统负载,系统平均负载被定义为在特定时间间隔内运行队列中的平均进程数目。如果一个进程满足以下条件则其就会位于运行队列中:没有在等待I/O操作的结果、它没有主动进入等待状态(也就是没有被调用、没有被停止。
,rFY,Y#YNbqb(\0
_ al3D L]0 # uptime
?'l ZV@I:[9Ci0
t;t[;W'Ux.B#c0 9:51pm up 3 days, 4:43, 4 users, load average:6.02, 5.90, 3.94IXPUB技术博客\%DY9A:I"ob
IXPUB技术博客5ou s4@j5m4K/uAF
上面命令显示示最近1 分钟内系统的平均负载是6.02,在最近5分钟内系统的平均负载是5.90,在最近的15 分钟内系统的平均负载是3.94。一共四个用户。通常来说只要每个CPU的当前活动进程数不大于3那幺系统的性能就是良好的,如果每个CPU的任务数大于5,那幺就表示这台机器的性能有严重问题。对于上面的例子来说,由于笔者系统使用是双CPU,那幺其每个CPU的当前任务数为:6.02/2=3.01。这表示该服务器的性能是可以接受的。IXPUB技术博客 Owg9`["nLnV v J
%B!rG;R il0 IXPUB技术博客5chhq v \ ?
IXPUB技术博客aD e%PT5?_U
[本帖最后由 孤云野鹤 于 2005-12-28 16:02 编辑]
`:^:X X/]2C$].kl/y0
I/qF:KtA}7[0
4.使用xload图形显示系统负载IXPUB技术博客-FF8G&dc3?8D3_O.Y9H H#He"n?0 如果安装了KDE环境,可以使用xload 显示系统平均负载的柱状图 ,它会定期地更新。xload是Linux一个系统命令,使用方法:
H1o;| w#}:A Z A_0
$| k!z9U6Z!l0 # xload [-options ...]
+M1s-] ZZj0
-~q|,X!_3Q!iH"@0 xload 主要选项和说明:参见表-2IXPUB技术博客$HR'r_)B_0cN
IXPUB技术博客t8O;t#B-K.O5j o
#xload –scale 1 –update 1 –fg blue –h300 tan
(kh3SK7sSs0IXPUB技术博客a6e"U-eI"W
上面命令表示使用xload查看系统的负载。每秒更新一次,其尺寸大小为300,前景颜色为白色,背景颜色为蓝。见图-3。IXPUB技术博客6r]2Wi M-zk
P$xb%Xy&O9~0

X|cn7V$O*N0图-3IXPUB技术博客zk&m9twX
y7G(Uz^ ex/CX0
-|n.d.Iu'a0三、使用phpsysinfoIXPUB技术博客.k-x$J4|B mWA E
IXPUB技术博客5w4@\0i _x/R4U
由于/proc文件系统非常大,而且系统是动态变化的,所以使用Linux命令比较麻烦,这里我们使用一个工具:phpsysinfo,它是一个支持PHP网页服务器用于侦测主机一些资料的PHP 脚本工具软件,可以提取/proc文件系统中的信息,以图形方式显示出来。另外phpsysinfo支持包括中文在内的20多种语言和许多风格的模板。IXPUB技术博客-[7at[2Z;E
IXPUB技术博客}q4vfGl-a A
1.系统要求:IXPUB技术博客?,]3y9p8p*N
!aTVg2R0 除了要搭建一个基于LAMP(Linux+PHP+APACHE+MYSQL)的网络构架,其它系统要求:软件:它要求内核(Kenerl)至少在2.2以上。KDE 2.0,桌面颜色至少16位增强色。硬件:中央处理器:奔腾II 450 以上 ,内存 64 兆 ,硬盘空间 60兆。安装前的准备工作: phpsysinfo 是用PHP语言写成的,并且使用到gdk、gtk及glib。
K'Mm)V6nn7],j W2t0IXPUB技术博客;[eA3li i7G,@{:E
2.软件下载:
!Y;yuJn5_ sS0
.VOo Q^A m } X0 #wget http://jaist.dl.sourceforge.net/ ... psysinfo-2.3.tar.gzIXPUB技术博客'BH7W:cnxC,|
9UHz7a%I ]0 #wget http://secure.netroedge.com/~lm78/archive/i2c-2.8.8.tar.gz IXPUB技术博客_;m&r$Qt(e5g
IXPUB技术博客5iy:K;R$X1XI}?
#wget http://secure.netroedge.com/~lm78/archive/lm_sensors-2.8.8.tar.gz
$r%M3z#c/v7A0IXPUB技术博客e*| qd#Qn)b
3. 软件安装:IXPUB技术博客#M8`3q5p`WCM
'f&^!W2Ps+d4q3Q F0 将下载的软件拷贝到/var/www/html/目录下,执行:
RsH3E4e&G7d0IXPUB技术博客'R*YU(Yi
#mv phpsysinfo-2.3.tar.gz /var/www/html/sysinfoIXPUB技术博客}B&s