1、关于 Sysstat;
Sysstat 是一个软件包,包含监测系统性能及效率的一组工具,这些工具对于我们收集系统性能数据,比如CPU使用率、硬盘和网络吞吐数据,这些数据的收集和分析,有利于我们判断系统是否正常运行,是提高系统运行效率、安全运行服务器的得力助手;
Sysstat 软件包集成如下工具:
* iostat 工具提供CPU使用率及硬盘吞吐效率的数据;
* mpstat 工具提供单个处理器或多个处理器相关数据;
* sar 工具负责收集、报告并存储系统活跃的信息;
* sa1 工具负责收集并存储每天系统动态信息到一个二进制的文件中。它是通过计划任务工具cron来运行,
是为sadc所设计的程序前端程序;
* sa2 工具负责把每天的系统活跃**写入总结性的报告中。它是为sar所设计的前端 ,要通过cron来调用
* sadc 是系统动态数据收集工具,收集的数据被写一个二进制的文件中,它被用作sar工具的后端;
* sadf 显示被sar通过多种格式收集的数据;
2、安装 Sysstat和运行;
对于大多数系统,都有这个软件包,软件名以sysstat开头。我们可以通过网络安装它;
2.1 对于Debian或deb软件包为基础的系统;
[root@localhost ~]# apt-get install sysstat
2.2 Fedora 系统或以RPM包管理的系统;
[root@localhost ~]# yum install sysstat
如果是RPM包,请用下面的命令来安装;
[root@localhost ~]#rpm -ivh sysstat*.rpm
如果您想了解yum 和rpm 软件包管理工具,请参考:
2.3 Slackware 系统,对于Slackware系统;
[root@localhost ~]# installpkg sysstat*.pkg
2.4 通过源码包编译安装;
如果您是通过源码包安装,请到官方下源源码包 ,目前最新版本是 sysstat-6.1.2;
如果您想了想一下什么是源码包,请参考:
[root@localhost ~]# tar zxvf sysstat-6.1.2.tar.gz
[beinan@localhost ~]$ cd sysstat-6.1.2
[beinan@localhost sysstat-6.1.2]#
[beinan@localhost sysstat-6.1.2]# make config
[beinan@localhost sysstat-6.1.2]# make
[beinan@localhost sysstat-6.1.2]# make install
2.5 关于 Sysstat 计划任务;
如果您想得到Sysstat工具集所收集的系统信息自动存为某个文件中,你必须通过cron 为 sa1 和sa2
做计划任务。我们可以通过修改用户的crontab。在默认的情况下,Sysstat历史信息将被存放在/var/log/sa文件中。如果想定义自己的
计划任务,请参考:
在root用户,通过 crontab -e 来添加下面的一段;
# 8am-7pm activity reports every 10 minutes during weekdays
0 8-18 * * 1-5 /usr/lib/sa/sa1 600 6 &
# 7pm-8am activity reports every hour during weekdays
0 19-7 * * 1-5 /usr/lib/sa/sa1 &
# Activity reports every hour on Saturday and Sunday
0 * * * 0,6 /usr/lib/sa/sa1 &
# Daily summary prepared at 19:05
5 19 * * * /usr/lib/sa/sa2 -A &
创建Sysstat的启动脚本;
[root@localhost ~]# touch /etc/rc.d/init.d/sysstat
[root@localhost ~]# vi /etc/rc.d/init.d/sysstat
#!/bin/sh
# Begin $rc_base/init.d/sysstat
# Based on sysklogd script from LFS-3.1 and earlier.
# Rewritten by Gerard Beekmans - gerard@linuxfromscratch.org
. /etc/sysconfig/rc
. $rc_functions
case "$1" in
start)
echo "Calling the system activity data collector (sadc)…"
/usr/lib/sa/sadc -F -L -
evaluate_retval
;;
*)
echo "Usage: $0 start"
exit 1
;;
esac
# End $rc_base/init.d/sysstat
[root@localhost ~]# chmod 755 /etc/rc.d/init.d/sysstat
[root@localhost ~]# ln -sf /etc/rc.d/init.d/sysstat /etc/init.d/sysstat
有了Sysstat的守护进程,这样我们开机后,Sysstat的守护进程,就时时刻刻的为我们服务了。sa 、sa1或sa2自动把信息存在 /var/log/sa目录的二进制文件中,我们可以通过sar工具来提取这些系统信息的历史;
当然我们也可以通过手动的方法来打开Sysstat的守护程序,也就是我们前面所制作的sysstat;
[root@localhost ~]# /etc/rc.d/init.d/sysstat start
下面的方法也行;
[root@localhost ~]# /usr/lib/sa/sa1
[root@localhost ~]# /usr/lib/sa/sa2
3.Sysstat 工具集介绍;
3.1 sadc 工具,
sadc 位于 /usr/lib/sa目录中,如果你没有设置可执行路径,要用绝对路径来运行比较方便 ,/usr/lib/sa/sadc;sadc 是把数据写在一个二进制的文件中,如果想查看数据内容,需要用sadf工具来显示;
sadc 的用法;
/usr/lib/sa/sadc [ -d ] [ -F ] [ -I ] [ -L ] [ -V ] [ interval [ count ] ] [ outfile ]
参数说明:
-d 报告硬盘设置的相关统计;
-F 强制把数据写入文件;
-I 报告所有系统中断数据;
interval 表示时间间隔,单位是秒,比如3 ;
count 统计数据的次数,也是一个数字;
outfile 输出统计到outfile文件;
注意:此工具中的参数都是可选的,如果没有指定任何参数,比如 /usr/lib/sa/sadc - ,则会输出数据到 /var/log/sa/ 目录下的一个文件中。我们要通过sadf 或sar工具来查看;
[root@localhost beinan]# /usr/lib/sa/sadc -
[root@localhost beinan]# ls /var/log/sa 注:列出所有sa目录下的文件,根据文件的时间来判断哪个文件是最新的;
[root@localhost beinan]# sar -f /var/log/sa/sa12
或
[root@localhost beinan]# sadf /var/log/sa/sa12
举例:我们想把sadc收集到的数据写到一个指定的文件中;
[root@localhost ~]# /usr/lib/sa/sadc 1 10 sa000
[root@localhost ~]# sar -f sa000
Linux 2.6.15-1.2054_FC5 (localhost.localdomain) 2006年05月12日
09时15分30秒 CPU %user %nice %system %iowait %idle
09时15分31秒 all 3.00 0.00 0.00 1.00 96.00
09时15分32秒 all 0.00 0.00 0.00 0.00 100.00
09时15分33秒 all 0.00 0.00 0.00 0.00 100.00
09时15分34秒 all 0.00 0.00 0.00 0.00 100.00
09时15分35秒 all 0.00 0.00 0.00 0.00 100.00
09时15分36秒 all 0.00 0.00 0.00 0.00 100.00
09时15分37秒 all 0.00 0.00 0.00 0.00 100.00
09时15分38秒 all 0.00 0.00 0.00 0.00 100.00
09时15分39秒 all 0.00 0.00 0.00 0.00 100.00
Average: all 0.33 0.00 0.00 0.11 99.56
注解:我们用sadc 收集系统动态数据,让它收集1秒之内的10次动态信息; 然后通过sar 工具来查看系统的状态。也可以用 sadf 来查看所收集的数据,但不是太直观。您自己尝试一下看看。查看sa000文件,用 sadf sa000 ;
3.2 sar 工具;
sar 工具比较强大,既能收集系统CPU、硬盘、动态数据,也能显示动态显示,更能查看二进制数据文件;sar 的应用比较多,而且也比较复杂,数据更为精确。我们只了解一下常用的内容就行,大多数内容我们了解就行;
用法:
sar [参数选项]
参数说明:
-A 显示所有历史数据,通过读取/var/log/sar 目录下的所有文件,并把它们分门别类的显示出来;
-b 通过设备的I/O中断读取设置的吞吐率;
-B 报告内存或虚拟内存交换统计;
-c 报告每秒创建的进程数;
-d 报告物理块设备(存储设备)的写入、读取之类的信息,如果直观一点,可以和p参数共同使用,-dp
-f 从一个二进制的数据文件中读取内容,比如 sar -f filename
-i interval 指定数据收集的时间,时间单位是秒;
-n 分析网络设备状态的统计,后面可以接的参数有 DEV、EDEV、NFS、NFSD、SOCK等。比如-n DEV
-o 把统计信息写入一个文件,比如 -o filename ;
-P 报告每个处理器应用统计,用于多处理器机器,并且启用SMP内核才有效;
-p 显示友好设备名字,以方便查看,也可以和-d 和-n 参数结合使用,比如 -dp 或-np
-r 内存和交换区占用统计;
-R
-t 这个选项对从文件读取数据有用,如果没有这个参数,会以本地时间为标准 读出;
-u 报告CPU利用率的参数;
-v 报告inode, 文件或其它内核表的资源占用信息;
-w 报告系统交换活动的信息; 每少交换数据的个数;
-W 报告系统交换活动吞吐信息;
-x 用于监视进程的,在其后要指定进程的PID值;
-X 用于监视进程的,但指定的应该是一个子进程ID;
sar 应用举例;
实例一: 如果只用sar 命令,sar就是读取 /var/log/sa目录下最近系统状态文件。
[root@localhost ~]# sar
[root@localhost ~]# sar -A 注:读取/var/log/sa目录下所有文件数据;
如果我们想知道CPU的利用率;动态更新;下面的例子是每秒更新一次数据,总共更新五次;
[root@localhost ~]# sar -u 1 5
Linux 2.6.15-1.2054_FC5 (localhost.localdomain) 2006年05月12日
时间 CPU 利用率 nice值 系统占用 IO占用 空闲11时19分34秒 CPU %user %nice %system %iowait %idle
11时19分35秒 all 2.97 0.00 0.00 0.00 97.03
11时19分36秒 all 11.11 0.00 9.09 0.00 79.80
11时19分37秒 all 21.78 0.00 6.93 0.00 71.29
11时19分38秒 all 15.00 0.00 0.00 0.00 85.00
11时19分39秒 all 8.00 0.00 0.00 0.00 92.00
Average: all 11.78 0.00 3.19 0.00 85.03
注解:
CPU:表示机器内所有的CPU;
%user 表示CPU的利用率;
%nice 表示CPU在用户层优先级的百分比,0表示正常;
%system 表示当系统运行时,在用户应用层上所占用的CPU百分比;
%iowait 表示请求硬盘I/0数据流出时,所占用CPU的百分比;
%idle 表示空闲CPU百分比,值越大系统负载越低;
您可以CPU利用率的动态信息输出到一个文本文件中,然后通过more 来查看。
[root@localhost ~]# sar -u 1 5 > sar000.txt
[root@localhost ~]# more sar000.txt
也可以输出到一个二进制的文件中,然后通过sar来查看;
[root@localhost ~]# sar -u 1 5 -o sar002
[root@localhost ~]# sar -f sar002
注:如果您把数据通过-o filename 输出到一个二进制的文件中,是不能用文件内容查看工具more 、less或cat来查看的,应该用sar工具来查看,要加-f参数;
实例二:查看网络设备的吞吐情况;
比如我们让数据每秒更新一次,总共更新十次;
[root@localhost ~]# sar -n DEV 2 5
时间 IFACE rxpck/s txpck/s rxbyt/s txbyt/s rxcmp/s txcmp/s rxmcst/s
第一字段:时间;
IFACE:设备名;
rxpck/s:每秒收到的包;
rxbyt/s:每秒收到的所有包的体积;
txbyt/s:每秒传输的所有包的体积;
rxcmp/s:每秒收到数据切割压缩的包总数;
txcmp/s :每秒传输的数据切割压缩的包的总数;
rxmcst/s: 每秒收到的多点传送的包;
如果我们从事提取eth0设备(也就是网卡eth0)的信息;我们应该用grep 来过滤。然后再显示出来;
[root@localhost ~]# sar -n DEV 2 5 |grep eth0
11时52分37秒 eth0 1.00 1.00 97.51 97.51 0.00 0.00 0.00
11时52分39秒 eth0 1.01 1.01 98.49 98.49 0.00 0.00 0.00
11时52分41秒 eth0 1.00 1.00 98.00 98.00 0.00 0.00 0.00
11时52分43秒 eth0 1.00 1.00 98.00 98.00 0.00 0.00 0.00
11时52分45秒 eth0 1.00 1.00 98.00 98.00 0.00 0.00 0.00
Average: eth0 1.00 1.00 98.00 98.00 0.00 0.00 0.00
如果想知道网络设备错误报告,也就就是用来查看设备故障的。应该用EDEV;比如下面的例子;
[root@localhost ~]# sar -n EDEV 2 5
3.3 iostat
iostat 是用来显示 系统即时系统,比如CPU使用率,硬盘设备的吞吐率;
[root@localhost ~]# iostat
Linux 2.6.15-1.2054_FC5 (localhost.localdomain) 2006年05月12日
avg-cpu: %user %nice %system %iowait %idle
7.24 0.00 0.99 0.35 91.43
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtnhda
1.46 28.43 21.43 710589 535680
3.4 mpstat
mpstat 提供多处理器系统中的CPU的利用率的统计;mpstat 也可以加参数,用-P来指定哪个 CPU,处理器的ID是从0开始的。下面的例子是查看两个处理器,每二秒数据更新一次,总共要显示10次数据;
[root@localhost ~]# mpstat -P 0 2 10 注:查看第一个CPU
[root@localhost ~]# mpstat -p 1 2 10 注:查看第二个CPU
[root@localhost ~]# mpstat 2 10 注:查看所有CPU;
3.5 sdaf
sdaf 能从二进制文件中提取sar所收集的数据;这个大家知道就行了。显示的并不是友好的格式;
[root@localhost ~]# sar -u 2 5 -o sar003
[root@localhost ~]# sadf sar003
相对来说,用sar来读取输出文件的内容更好;比如下面的;
[root@localhost ~]# sar -f sar003
4、 与Sysstat相似工具;
4.1 进程管理工具;
进程管理工具,包括ps 、pgrep、top、kill 、killall、pkill 等,请参考
4.2 内存使用率查看工具;
内存使用量 free
free 工具既能查看物理内存,也能查看虚拟内存的用量;
[root@localhost ~]# free
如果显示以单位M,则加-m参数;
[root@localhost ~]# free -m
total used free shared buffers cached
Mem: 724 713 11 0 24 290
-/+ buffers/cache: 398 326
Swap: 800 0 800
vmstat 即时显示内存工具;
vmstat 是一个即时显示内存使用情况的工具;
vmstat 使用方法:
vmstat [-V] [-n] [delay [count]]
-V 显示vmstat的版本;
-n causes the headers not to be reprinted regularly.
-a 显示所有激活和未激活内存的状态;print inactive/active page stats.
-d 显示硬盘统计信息;prints disk statistics
-D 显示硬盘分区表;prints disk table
-p 显示硬盘分区读写状态等;prints disk partition statistics
-s 显示内存使用情况;prints vm table
-m prints slabinfo
-S 定义单位,k K
delay 是两次刷新时间间隔;
单位体积: k:1000 K:1024 m:1000000 M:1048576 (默认是 K)
count 刷新次数;
#vmstat 1 5
procs ———–memory———- —swap– —–io—- –system– —-cpu—-
r b swpd free buff cache si so bi bo in cs us sy id wa
0 0 136 20612 4892 177636 0 0 661 106 418 1339 78 15 3 4
0 0 136 20612 4892 177636 0 0 0 0 329 652 1 0 99 0
1 0 136 16148 4900 177636 0 0 0 44 546 2017 33 6 61 0
1 0 136 17140 4900 177636 0 0 0 0 475 1210 30 10 60 0
1 0 136 17140 4904 177640 0 0 8 0 513 1215 25 8 65 2
vmstat - 报告虚拟内存的统计信息
总览
vmstat [-n] [延时[次数]]
vmstat [-V]
描述
vmstat 对系统的进程情况、内存使用情况、交换页和 I/O 块使用情况、中断以及 CPU 使用情况进行统计并报告相应的信息。
第一个显示内容指出了计算机自上次重启至今的平均使用情况。后面的每一行信息是按 延时 定期地显示系统的各部分信息。进程信息和内存信息都是即时产生的。
选项
-n 开关令第一次的信息只显示一次而不是周期地产生。
延时 是以秒为单位的刷新时间间隔。如果没有给出此延时时间,则仅显示系统启动至今的平均值。
次数 指的是更新的次数。如果没有指定此数而又定义了延时时间,则次数的默认值是无穷次。
-V 开关可以用来输出该命令的版本信息。
输出信息简介
Procs
r: 等待运行的进程数 b: 处在非中断睡眠状态的进程数 w: 被交换出去的可运行的进程数。此数由 linux 计算得出,但 linux 并不耗尽交换空间
Memory swpd: 虚拟内存使用情况,单位:KB
free: 空闲的内存,单位KB
buff: 被用来做为缓存的内存数,单位:KB
Swap
si: 从磁盘交换到内存的交换页数量,单位:KB/秒
so: 从内存交换到磁盘的交换页数量,单位:KB/秒
IO
bi: 发送到块设备的块数,单位:块/秒
bo: 从块设备接收到的块数,单位:块/秒
System
in: 每秒的中断数,包括时钟中断
cs: 每秒的环境(上下文)切换次数
CPU 按 CPU 的总使用百分比来显示
us: CPU 使用时间
sy: CPU 系统使用时间
id: 闲置时间
注意
运行 vmstat 不须要特别的使用权限 这些系统信息是用来向用户提供分析系统瓶颈问题信息的。
linux在计算进程情况时不将正在运行的 vmstat 自己计算进去。
当前所在的 linux 块的大小都是 1K,而 CD-ROM 文件系统的块大小为 2K。
相关文件
/proc/meninfo
/proc/stat
/proc/*/stat
#########################################
首先启动sysstat服务,才能正常使用使用sar日志功能
查看CPU使用情况
sar 2 5
//每隔2秒,显示5次,CPU使用的情况
%usr:CPU处在用户模式下的时间百分比。
%sys:CPU处在系统模式下的时间百分比。
%wio:CPU等待输入输出完成时间的百分比。
%idle:CPU空闲时间百分比。
在所有的显示中,我们应主要注意%wio和%idle,%wio的值过高,表示硬盘存在I/O瓶颈,
%idle值高,表示CPU较空闲,如果%idle值高但系统响应慢时,有可能是CPU等待分配内存,
此时应加大内存容量。%idle值如果持续低于10,那么系统的CPU处理能力相对较低,表
明系统中最需要解决的资源是CPU。
sar 1 10 > data.txt
//每隔1秒,写入10次,把CPU使用数据保存到data.txt文件中。
sar 1 0 -e 15:00:00 > data.txt
//每隔1秒记录CPU的使用情况,直到15点,数据将保存到data.txt文件中。(-e 参数表示结束时间,注意时间格式:必须为hh:mm:ss格式)
sar 1 0 -r -e 15:00:00 > data.txt
//每隔1秒记录内存使用情况,直到15点,数据将保存到data.txt文件中。
sar 1 0 -n DEV -e 15:00:00 > data.txt
//每隔1秒记录网络使用情况,直到15点,数据将保存到data.txt文件中。
例二:使用命行sar -v t n
例如,每30秒采样一次,连续采样5次,观察核心表的状态,需键入如下命令:
# sar -v 30 5
屏幕显示:
SCO_SV scosysv 3.2v5.0.5 i80386 10/01/2001
10:33:23 proc-sz ov inod-sz ov file-sz ov lock-sz (-v)
10:33:53 305/ 321 0 1337/2764 0 1561/1706 0 40/ 128
10:34:23 308/ 321 0 1340/2764 0 1587/1706 0 37/ 128
10:34:53 305/ 321 0 1332/2764 0 1565/1706 0 36/ 128
10:35:23 308/ 321 0 1338/2764 0 1592/1706 0 37/ 128
10:35:53 308/ 321 0 1335/2764 0 1591/1706 0 37/ 128
显示内容包括:
proc-sz:目前核心中正在使用或分配的进程表的表项数,由核心参数MAX-PROC控制。
inod-sz:目前核心中正在使用或分配的i节点表的表项数,由核心参数
MAX-INODE控制。
file-sz: 目前核心中正在使用或分配的文件表的表项数,由核心参数MAX-FILE控
制。
ov:溢出出现的次数。
Lock-sz:目前核心中正在使用或分配的记录加锁的表项数,由核心参数MAX-FLCKRE
控制。
显示格式为
实际使用表项/可以使用的表项数
显示内容表示,核心使用完全正常,三个表没有出现溢出现象,核心参数不需调整,如
果出现溢出时,要调整相应的核心参数,将对应的表项数加大。
例三:使用命行sar -d t n
例如,每30秒采样一次,连续采样5次,报告设备使用情况,需键入如下命令:
# sar -d 30 5
屏幕显示:
SCO_SV scosysv 3.2v5.0.5 i80386 10/01/2001
11:06:43 device %busy avque r+w/s blks/s avwait avserv (-d)
11:07:13 wd-0 1.47 2.75 4.67 14.73 5.50 3.14
11:07:43 wd-0 0.43 18.77 3.07 8.66 25.11 1.41
11:08:13 wd-0 0.77 2.78 2.77 7.26 4.94 2.77
11:08:43 wd-0 1.10 11.18 4.10 11.26 27.32 2.68
11:09:13 wd-0 1.97 21.78 5.86 34.06 69.66 3.35
Average wd-0 1.15 12.11 4.09 15.19 31.12 2.80
显示内容包括:
device: sar命令正在监视的块设备的名字。
%busy: 设备忙时,传送请求所占时间的百分比。
avque: 队列站满时,未完成请求数量的平均值。
r+w/s: 每秒传送到设备或从设备传出的数据量。
blks/s: 每秒传送的块数,每块512字节。
avwait: 队列占满时传送请求等待队列空闲的平均时间。
avserv: 完成传送请求所需平均时间(毫秒)。
在显示的内容中,wd-0是硬盘的名字,%busy的值比较小,说明用于处理传送请求的有
效时间太少,文件系统效率不高,一般来讲,%busy值高些,avque值低些,文件系统
的效率比较高,如果%busy和avque值相对比较高,说明硬盘传输速度太慢,需调整。
例四:使用命行sar -b t n
例如,每30秒采样一次,连续采样5次,报告缓冲区的使用情况,需键入如下命令:
# sar -b 30 5
屏幕显示:
SCO_SV scosysv 3.2v5.0.5 i80386 10/01/2001
14:54:59 bread/s lread/s %rcache bwrit/s lwrit/s %wcache pread/s pwrit/s (-b)
14:55:29 0 147 100 5 21 78 0 0
14:55:59 0 186 100 5 25 79 0 0
14:56:29 4 232 98 8 58 86 0 0
14:56:59 0 125 100 5 23 76 0 0
14:57:29 0 89 100 4 12 66 0 0
Average 1 156 99 5 28 80 0 0
显示内容包括:
bread/s: 每秒从硬盘读入系统缓冲区buffer的物理块数。
lread/s: 平均每秒从系统buffer读出的逻辑块数。
%rcache: 在buffer cache中进行逻辑读的百分比。
bwrit/s: 平均每秒从系统buffer向磁盘所写的物理块数。
lwrit/s: 平均每秒写到系统buffer逻辑块数。
%wcache: 在buffer cache中进行逻辑读的百分比。
pread/s: 平均每秒请求物理读的次数。
pwrit/s: 平均每秒请求物理写的次数。
在显示的内容中,最重要的是
阅读(814) | 评论(0) | 转发(0) |