随着Linux应用的日益广泛,有大量的网络服务器使用Linux操作系统。为了全面衡量网络运行状况,就需要对网络状态做更细致、更精确的测量。SNMP协议的制订为互联网测量提供了有力支持。计算机系统是
一、/proc文件系统特点
Linux 系统向管理员提供了非常好的方法,使他们可以在系统运行时更改内核,而不需要重新引导内核系统。这是通过 /proc 虚拟文件系统实现的。/proc 文件虚拟系统是一种内核和内核模块用来向进程 (process) 发送信息的机制 (所以叫做 /proc)。这个伪文件系统让你可以和内核内部数据结构进行交互,获取 有关进程的有用信息,在运行中 (on the fly) 改变设置 (通过改变内核参数)。 与其他文件系统不同,/proc 存在于内存之中而不是硬盘上。不用重新启动而去看 CMOS ,就可以知道系统信息。这就是 /proc 的妙处之一。/proc 目录里主要文件内容,见表-1:
文件或目录名称 |
描述 |
apm |
高级电源管理信息 |
cmdline |
内核命令行 |
cpuinfo |
关于中央处理器信息 |
devices |
可以用到的设备(块设备/字符设备) |
dma |
显示当前使用的DMA通道 |
filesystems |
核心配置的文件系统 |
ioports |
当前使用的I/O端口 |
interrupts |
显示使用的中断 |
kcore |
系统物理内存映象 |
kmsg |
核心输出的消息,被送到syslog文件 |
ksyms |
核心符号表 |
loadavg |
系统平均负载均衡 |
meminfo |
存储器使用信息,包括物理内存和交换内存 |
modules |
当前加载了哪些核心模块。 |
net |
网络协议状态信息 |
partitions |
系统识别的分区表 |
pci |
pci设备信息 |
scsi |
scsi设备信息 |
self |
到查看/proc 的程序的进程目录的符号连接 |
stat |
全面统计状态表 |
swaps |
交换分区情况 |
uptime |
系统启动的时间长度 |
version |
核心版本号 |
每个Linux系统根据软硬件不同/proc 虚拟文件系统的内容也有些差异。/proc 虚拟文件系统有三个很重要的目录:net,scsi和sys。Sys目录是可写的,可以通过它来访问或修改内核的参数,而net和scsi则依赖于内核配置。例如,如果系统不支持scsi,则scsi目录不存在。除了以上介绍的这些,还有的是一些以数字命名的目录,它们是进程目录。net目录包括多个 ASCII 格式的网络伪文件, 描述了网络层的部分情况,可以用arp 、netstat、route等命令来查询这些文件。除了以上介绍的这些,还有的是一些以数字命名的目录,它们是进程目录。系统中当前运行的每一个进程都有对应的一个目录在/proc下,以进程的 PID号为目录名,它们是读取进程信息的接口。而self目录则是读取进程本身的信息接口,是一个link。Proc文件系统的名字就是由之而起。
二、proc文件系统主要实现的五大功能:
1. 进程信息:对于系统中的任何一个进程来说,在proc的子目录里都有一个同名的进程ID。你将可以找到以下的信息:cmdline, mem, root, stat, statm, 以及status。某些信息只有超级用户可见,例如进程根目录。到每一个单独的含有现有进程信息的进程有一些可用的专门链接。对于系统里的任何一个进程来说,都有一个单独的自链接指向进程信息。它的用处就是从进程中获取命令行信息。
2. 系统信息:如果你需要了解整个系统信息,你也可以从/proc/stat中获得。它包括:包括CPU占用、磁盘空间、内存页、内存对换、全部中断、接触开关以及上次系统自举时间。
3. CPU信息:利用/proc/cpuinfo文件,你可以获得中央处理器当前的准确信息。
4. 负载信息: /proc/loadavg文件包含了系统负载信息。
5. 系统内存信息:meminfo文件包含了系统内存的详细信息。它显示了物理内存的数量,可用交换空间的数量,空闲内存的数量等等。
1. 监测服务器全面统计状态
要监测全面统计状态,使用命令,结果见图1:
#cat /proc/stat
图1 系统全面统计状态
以上数字依次代表:
上下文切换数量;中断总量;进页面总数;出页面总数;进程总数;
换入总数;换出总数;合计CPU空闲时间;合计CPU nice时间;合计CPU系统时间;
合计CPU用户时间。
同时提供对每个CPU的:
单个CPU空闲时间;单个CPU nice时间;单个CPU系统时间;单个CPU用户时间。
以及对每个磁盘驱动器的如下数据:
单个磁盘块读;单个磁盘块写;单个磁盘I/O总数;单个磁盘I/O读;单个磁盘I/O写。
2.监测网络流量
如果要了解网络流量,可以使用命令:结果见图1。
#cat /proc/net/dev
图2网络接口数据包流量
以上数字依次代表:接收到的字节;接收到的压缩字节;收到的误码数;收到的漏失误码;收到的FIFO误码;收到的帧误码;收到的多播误码;收到的总包数;已传输的字节;已传输的压缩字节;传输误码总数;传输载波误码;传输冲突误码;传输漏失误码;传输FIFO误码;传输的总包数。
3.使用uptime命令
使用uptime命令可以查看系统负载,系统平均负载被定义为在特定时间间隔内运行队列中的平均进程数目。如果一个进程满足以下条件则其就会位于运行队列中:没有在等待I/O操作的结果、它没有主动进入等待状态(也就是没有被调用、没有被停止。
# uptime
9:51pm up 3 days, 4:43, 4 users, load average:6.02, 5.90, 3.94
上面命令显示示最近1 分钟内系统的平均负载是6.02,在最近5分钟内系统的平均负载是5.90,在最近的15 分钟内系统的平均负载是3.94。一共四个用户。通常来说只要每个CPU的当前活动进程数不大于3那幺系统的性能就是良好的,如果每个CPU的任务数大于 5,那幺就表示这台机器的性能有严重问题。对于上面的例子来说,由于笔者系统使用是双CPU,那幺其每个CPU的当前任务数为:6.02/2=3.01。这表示该服务器的性能是可以接受的。
4.使用xload图形显示系统负载
如果安装了KDE环境,可以使用xload 显示系统平均负载的柱状图 ,它会定期地更新。xload是Linux一个系统命令,使用方法:
# xload [-options ...]
xload 主要选项和说明:
Options选项 |
说明 |
-fn font |
图形中字体 |
-scale number
|
在屏幕上显示最少数量的线,每一条线 代表1 的平均负载。 |
-update seconds |
每一次更新的相隔时间多少时间,单位是秒。 |
-bg color |
图形背景的颜色。 |
-fg color |
图形前景的颜色。 |
-hl color |
图形中字体颜色。 |
-remote host |
远程主机名称。 |
#xload –scale 1 –update 1 –fg blue –h300 tan
上面命令表示使用xload查看系统的负载。每秒更新一次,其尺寸大小为300,前景颜色为白色,背景颜色为蓝。见图-3。
图-3
三、使用phpsysinfo
由于/proc文件系统非常大,而且系统是动态变化的,所以使用Linux命令比较麻烦,这里我们使用一个工具:phpsysinfo,它是一个支持PHP网页服务器用于侦测主机一些资料的PHP 脚本工具软件,可以提取/proc文件系统中的信息,以图形方式显示出来。另外phpsysinfo支持包括中文在内的20多种语言和许多风格的模板。
1.系统要求:
除了要搭建一个基于LAMP(Linux+PHP+APACHE+MYSQL)的网络构架,其它系统要求:软件:它要求内核(Kenerl)至少在2.2 以上。KDE 2.0,桌面颜色至少16位增强色。硬件:中央处理器:奔腾II 450 以上 ,内存 64 兆 ,硬盘空间 60兆。安装前的准备工作: phpsysinfo 是用PHP语言写成的,并且使用到gdk、gtk及glib。
2.软件下载:
#wget http://jaist.dl.sourceforge.net/sourceforge/phpsysinfo/phpsysinfo-2.3.tar.gz
#wget http://secure.netroedge.com/~lm78/archive/i2c-2.8.8.tar.gz
#wget http://secure.netroedge.com/~lm78/archive/lm_sensors-2.8.8.tar.gz
3. 软件安装: 将下载的软件拷贝到/var/www/html/目录下,执行:
#mv phpsysinfo-2.3.tar.gz /var/www/html/sysinfo
#tar -zxvf phpsysinfo-2.3.tar.gz
#cd sysinfo
#cp config.php.new config.php
4.运行软件:
启动apache服务
#/usr/local/apache2/bin/apachectl start
测试http://localhost/sysinfo (见图4)
图4 phpsysinfo工作界面
phpsysinfo检测分成五个部分:
(1)主机系统资源:主机名称、IP地址、内核版本、已开机时间、登入人数、系统负载。
(2)硬件信息:CPU型号、工作频率、快取大小、逻辑操作数、PCI接口、IDE接口、SCSI接口。
(3)网络负载:网络数据包接收、传送、错误/遗失。
(4)内存资源情况,包括物理内存、虚拟内存等。
(5)已挂载分区:硬盘分区名称,使用比例。
你也可以用它来测试你所租用的虚拟主机的设备及网络状况的品质。另外phpsysinfo还可以在FreeBSD 、OpenBSD、NetBSD 、Darwin/OSX 、Unix等系统下工作。
四、服务器硬盘监测
服务器硬盘监测主要包括:硬盘磁道监测、磁盘空间监测。
1.硬盘磁道检测
硬盘物理坏道是硬盘的所有Linux硬件故障中最让人头痛的。它轻则使你的Linux计算机频频死机,重则让你的所有数据化为乌有。现在出厂的硬盘(1993年)基本上都支持SMART(Self Monitoring Analysis and Reporting Technology)自动检测分析及报告技术。SMART技术可以对硬盘的磁头单元、盘片电机驱动系统、硬盘内部电路以及盘片表面介质材料等进行监测,当SMART监测并分析出硬盘可能出现问题时会及时向用户报警以避免计算机数据受损失。SMART技术必须在主板支持的前提下才能发生作用,而且 SMART技术也不能保证能预报所有可能发生的硬盘故障。SMART(SFF-8035i) 是硬盘生产商们建立的一个工业标准,这个标准就是在硬盘上保存一个跟执行情况,可靠程度,读找错误率等属性的表格。所有属性都有一个1byte(大小范围 1-253)的标准化值,还包含另一个1byte的关键阶段值,如果属性表格内某个数据接近小于或达到关键阶段值,表明硬盘工作不正常了。
Smartmontools是一个Linux下硬盘检测工具,主页:http://smartmontools.sourceforge.net ,最新版本:5.33-1。
软件下载安装:
#wget http://jaist.dl.sourceforge.net/sourceforge/smartmontools/smartmontools-5.33-1.i386.rpm
#rpm –ivh /smartmontools-5.33-1.i386.rpm
软件安装后会在/usr/local/ 目录下产生程序:smartctl,先检测硬盘和主板是否支持SMART技术(见图-5):
smartctl -i /dev/hda7
图-5 检测硬盘是否支持SMART
图-5显示笔者的硬盘支持SMART,型号是:ST320414A(希捷的酷鱼III,72000RPM,2兆缓存)
全面体检硬盘
smartctl -A /dev/hda7
图-6 硬盘物理逻辑状态
图-6显示的信息根据你的硬盘厂商不同而不同,其中1-202行代表硬盘的不同物理性能。纵列代表硬盘的逻辑状态。
FLAG是标记,标准数值(VALUE)应当小于或等於关键值(THRESH)。 WHEN_FAILED 代表错误信息,图-6中的WHEN_FAILED纵行是空行,说明硬盘没有故障。如果WHEN_FAILED显示数字,表明硬盘磁道可能有比较大的坏道。 Smartctl有十几个参数,详细情况可以查看:
smartctl --help
2. 磁盘空间监测
Linux系统管理员经常使用的磁盘管理命令:df(disk filesystem)。通过这个命令可以获得文件系统的统计数据:包括可用空间和已经使用的空间。Df命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。
格式:df [选项]... [FILE]...
df命令的主要选项见表-2:
主要选项 |
描述 |
-a |
显示所有文件系统的磁盘使用情况,包括0块(block)的文件系统,如/proc文件系统。 |
-k |
以k字节为单位显示。 |
-i |
显示I-node节点信息,而不是磁盘块。 |
-t |
显示各指定类型的文件系统的磁盘空间使用情况。 |
-x |
列出不是某一指定类型文件系统的磁盘空间使用情况(与t选项相反)。 |
-T |
显示文件系统类型。 |
表-2 df命令的主要选项
df命令还可显示所有文件系统对I-node节点和磁盘块的使用情况,这时需要一个参数
:-I,见图-7。
图-7 用df命令显示所有文件系统对I-node节点的使用情况
从图-7这些信息可以看出:每一个文件系统中有多少可用的I—node,其中有多少己被使用,还剩余多少,以及它们所占的比例等整个硬盘的使用情况。因此,系统管理员需要了解这些情况。有时会发现这样的情况:某些硬盘的容量超过了100%。这是因为 Linux系统为超级用户保留了10%的空间由他单独支配。也就是说,对于超级用户而言,他所见到的硬盘容量将是110%。这样的安排对于系统管理而言是有好处的,当硬盘被使用的容量接近100%系统管理员还可以正常工作。df工具程序被广泛地用来生成文件系统的使用统计数据。它能显示系统中所有的文件系统的信息,包括它们的总容量、可用的空闲空间、目前的安装点等。