Linux服务器运行状况全面监测

来源:互联网 发布:mac怎样隐藏文件 编辑:程序博客网 时间:2024/05/18 15:03

 

 

 

随着Linux应用的日益广泛,有大量的网络服务器使用Linux操作系统。为了全面衡量网络运行状况,就需要对网络状态做更细致、更精确的测量。SNMP协议的制订为互联网测量提供了有力支持。计算机系统是

 由软件系统硬件系统组成的,检测硬件状态对于保障整个系统的稳定是非常重要的。不论操作系统是使用Linux、还是Windows,一旦硬件出现故障,那么整个系统的安全就严重了。这里我们主要监测Linux服务器的CPU、硬盘、内存、网络接口、主板等硬件的工作状态。

一、/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。

0 0
原创粉丝点击