Chinaunix首页 | 论坛 | 博客
  • 博客访问: 87858
  • 博文数量: 20
  • 博客积分: 1926
  • 博客等级: 上尉
  • 技术积分: 210
  • 用 户 组: 普通用户
  • 注册时间: 2009-08-16 17:21
文章分类
文章存档

2011年(1)

2009年(19)

分类: LINUX

2009-10-13 22:27:57

 

使用SASAR进行系统监视

Author: Jaylin Zhou

Date:10/12/2009

 

环境:Red Hat Enterprise Linux 5 update 3

 

首先需要安装一个包

# rpm -qa sysstat

sysstat-7.0.2-3.el5

这个包安装了一些很有用的文件

# rpm -ql sysstat

/etc/cron.d/sysstat

/etc/rc.d/init.d/sysstat

/etc/sysconfig/sysstat

/etc/sysconfig/sysstat.ioconf

/usr/bin/iostat

/usr/bin/mpstat

/usr/bin/sadf

/usr/bin/sar

/usr/lib/sa

/usr/lib/sa/sa1

/usr/lib/sa/sa2

/usr/lib/sa/sadc

......

/var/log/sa

 

要启动SAR,必须通过cron工具以周期性的间隔启动。

安装sysstat包后,默认创建一个/etc/cron.d/sysstat文件,其默认内容为:

# run system activity accounting tool every 10 minutes

*/10 * * * * root /usr/lib/sa/sa1 1 1

# generate a daily summary of process accounting at 23:53

53 23 * * * root /usr/lib/sa/sa2 -A

这里用到了两个命令

/usr/lib/sa/sa1

/usr/lib/sa/sa2

sa1:是调用sadc(二进制文件),将数据收集到二进制日志文件的一个Shell脚本。sa1命令还确保每天使用不同的文件。每隔十分钟运行一次该命令,最好不要改这个值,这是对一般系统折中的值。二进制日志文件存放在/var/log/sa/目录下,命名为sa${DATE}

sa2:是将当日二进制日志文件中所有的数据转储到文本文件(sar)的另一个Shell脚本,然后它将清除七天之前的所有日志文件。参数-A指定了从二进制文件中提取哪些数据转储到文本文件中。转储的文件存放在/var/log/sa/目录下,命名为sar${DATE}

这两个命令要配合着使用。

(强烈建议看一下这两个命令的脚本)

 

查看一下/usr/lib/sa/sa1脚本,里面执行这样一句命令:

/usr/lib/sa/sadc -F -L 1 1 -

-F:强制指定一个储存文件,如果文件已存在,就将其转换成sa的二进制文件形式。

-L:给sa文件加互斥锁,不能让两个sadc进程同时写一个sa文件。

 

跟据sa1脚本中的命令,我们也可以手动的创建sa二进制文件,使用/usr/lib/sa/sadc命令,

# /usr/lib/sa/sadc 1 10 /tmp/jaylin_sa

上述命令的作用是:每隔1s写一条记录,写10条,存放到二进制文件/tmp/jaylin_sa中。

 

查看一下/usr/lib/sa/sa2脚本,里面执行这样一句命令:

/usr/bin/sar -A -f /var/log/sa/sa${DATE} > /var/log/sa/sar${DATE}

-A:列出所有存储在/var/log/sa/sa${DATE}里的统计信息。

-f:指定将要转储的sa文件,默认的参数值为/var/log/sa/sa${DATE}

 

根据sa2脚本中的命令,我们也可以手动将sa文件(二进制)转储到sar文件(ASCII文本)中,使用/usr/bin/sar命令,

# /usr/bin/sar -A -f /tmp/jaylin_sa> /tmp/jaylin_sar

我们可以通过cat等命令查看sar文件的内容。但是我们也可以通过sar命令读取sa的二进制文件。

# sar

03:00:01 PM     CPU     %user     %nice   %system   %iowait    %steal    %idle

03:10:01 PM       all      1.02      0.00      2.33      0.39      0.00     96.25

03:20:01 PM       all      1.85      0.00      3.29      0.32      0.00     94.54

03:30:02 PM       all      1.63      0.06      3.81      2.05      0.00     92.45

03:40:02 PM       all      9.31      0.00      8.10      3.39      0.00     79.20

03:50:01 PM       all      8.64      0.00      7.73      2.27      0.00     81.36

04:00:01 PM       all      0.84      0.00      2.12      1.81      0.00     95.23

Average:          all      3.88      0.01      4.56      1.71      0.00     89.84

其中:

%userCPU花费在用户进程(如应用程序、Shell脚本或该用户进行的交互)上的时间的百分比。

%niceCPU用来执行有用户级别优先级别的任务的时间的百分比。

%systemCPU用来执行核心任务的时间的百分比。

%iowaitCPU等待块设备输入或输出的时间的百分比。

%stealCPU等待管理程序(hypervisor)处理其他任务的时间的百分比。

%idleCPU未进行任何有用操作的时间的百分比。

最后一行是所有数据的平均值。然而,因为大多数系统都会在忙时间段后经历空闲时间段,所以平均值并不能反映完整的情况。

其他度量参数:

-b:显示了缓冲区信息和使用缓冲区与必须写磁盘的比率。

-c:显示了系统调用分解为一些常用的调用,如fork()exec()read()write()。高进程 创建会导致较差的性能,并且这是可能需要将一些应用程序转移到其他计算机的信号。

-p 和 -w:显示了分页(交换)活动。高分页操作是内存缺乏的信号。特别地,-w 选项 显示了进程切换的次数:高的数值表示计算机上运行的内容过多,该计算机在切换任务 上花费了比实际工作更多的时间。

-q:显示了运行队列的大小,它与当时的平均负载相同。

-r:显示了一段时间的可用内存和交换空间。

它们显示每一列的含义请查看sarman page

 

我们也可以查看指定的某一时间段内的记录

-f:指定要读取的sa文件。

-s:开始的时间。注意,-s不是包含性的,所以必须从所选择的开始时间减去十分钟。

-e:结束的时间。

例如:

# # sar -f /var/log/sa/sa12 -s 14:50:00 -e 15:30:00

03:00:01 PM     CPU     %user     %nice   %system   %iowait    %steal     %idle

03:10:01 PM       all      1.02      0.00      2.33      0.39      0.00     96.25

03:20:01 PM       all      1.85      0.00      3.29      0.32      0.00     94.54

Average:          all      1.44      0.00      2.81      0.36      0.00     95.40

上述命令查看本月12日,15:0015:30之间的记录。

 

下面介绍一个第三方工具Ksar

这个工具可以将sar文件装换成图形,便于查看内存等数据的变化情况。

将下载的kSar-5.0.6.zip解压,解压后生成的目录下,有一个run.sh脚本。给其增加可执行权限。执行脚本,会出现一个图形界面:

将存在的sar文件导入工具,就可以看到根据sar文件记录生成的图形。

注意,如果是手动将sa文件转储到sar文件中,执行sar命令时要加LANG=C,即:

# LANG=C /usr/bin/sar -A -f /tmp/jaylin_sa> /tmp/jaylin_sar

不加LANG=Csar文件显示的时间为12小时制;加LANG=C之后,sar文件显示的时间为24小时制。Ksar工具只能识别24小时制的sar文件,所以切记执行转储时要加此环境变量。

 

阅读(1816) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~