系统监测工具-Sysstat


Sysstat是一个系统软件工具集,包含监测系统性能及效率的一组工具,这些工具对于我们收集系统性能数据,比如CPU使用率、硬盘和网络吞吐数据,这些数据的收集和分析,用于分析判断系统是否正常运行,是提高系统运行效率、安全运行服务器的得力助手。是用于 Linux 的性能监控工具合集,包含监测系统性能及效率的一组工具,如 sar、sadf、mpstat、iostat、tapestat、pidstat、cifsiostat 和 sa tools 等 。采用C语言开发并在GPLv2协议下授权。

Features
Input / Output and transfer rate statistics (global, per device, per partition, per network filesystem and per Linux task / PID).
CPU statistics (global, per CPU and per Linux task / PID), including support for virtualization architectures.
Memory, hugepages and swap space utilization statistics.
Virtual memory, paging and fault statistics.
Per-task (per-PID) memory and page fault statistics.
Global CPU and page fault statistics for tasks and all their children.
Process creation activity.
Interrupt statistics (global, per CPU and per interrupt, including potential APIC interrupt sources, hardware and software interrupts).
Extensive network statistics: network interface activity (number of packets and kB received and transmitted per second, etc.) including failures from network devices; network traffic statistics for IP, TCP, ICMP and UDP protocols based on SNMPv2 standards; support for IPv6-related protocols.
NFS server and client activity.
Socket statistics.
Run queue and system load statistics.
Kernel internal tables utilization statistics.
System and per Linux task switching activity.
Swapping statistics.
TTY device activity.
Power management statistics (instantaneous and average CPU clock frequency, fans speed, devices temperature, voltage inputs, USB devices plugged into the system).
Sysstat软件包集成如下工具:
* iostat 提供CPU使用率及硬盘吞吐效率的数据(reports CPU statistics and input/output statistics for devices, partitions and network filesystems.);
* mpstat 提供单个处理器或多个处理器相关数据(reports individual or combined processor related statistics.);
* pidstat 报告收集Linux进程任务: I/O, CPU, memory等(reports statistics for Linux tasks (processes) : I/O, CPU, memory, etc.);
* tapestat 报告收集系统上所连接的磁带设备(reports statistics for tape drives connected to the system.);
* cifsiostat 收集CIFS文件系统信息;
* sar 负责收集、报告并存储系统活跃的信息(collects, reports and saves system activity information (CPU, memory, disks, interrupts, network interfaces, TTY, kernel tables,etc.));
* sa1 负责收集并存储每天系统动态信息到一个二进制的文件中。它是通过计划任务工具cron来运行,是为sadc所设计的程序前端程序(collects and stores binary data in the system activity daily data file. It is a front end to sadc designed to be run from cron or systemd.);
* sa2 负责把每天的系统活跃性息写入总结性的报告中。它是为sar所设计的前端 ,要通过cron来调用(writes a summarized daily activity report. It is a front end to sar designed to be run from cron or systemd.);
* sadc 是系统动态数据收集工具,收集的数据被写一个二进制的文件中,它被用作sar工具的后端(the system activity data collector, used as a backend for sar.);
* sadf 显示被sar通过多种格式收集的数据(displays data collected by sar in multiple formats (CSV, XML, JSON, etc.) and can be used for data exchange with other programs.);
sar命令
sar可以全名的获取到cpu、文件、磁盘IO、虚拟内存、内存、网络等信息。
参数说明
sar 命令行的常用格式:
sar [options] [-A] [-o file] t [n]
在命令行中,n 和 t 两个参数组合起来定义采样间隔和次数,t为采样间隔,是必须有的参数,n为采样次数,是可选的,默认值是1;-o file表示将命令结果以二进制格式存放在文件中,file 在此处不是关键字,是文件名。options 为命令行选项,sar命令的选项很多,下面只列出常用选项:
-A:所有报告的总和。
-u:CPU利用率。
-v:进程、节点、文件和锁表状态。
-p:像是当前系统中指定CPU使用信息。
-d:硬盘使用报告。
-r:显示系统内存的使用情况。
-n:显示网络运行状态。参数后面可跟DEV、EDEV、SOCK和FULL。DEV显示网络接口信息,EDEV显示网络错误的统计数据,SOCK显示套接字信息,FULL显示前三参数所有信息。
-q:显示运行队列的大小,它与系统当时的平均负载相同。
-B:内存分页情况.
-R:显示进程在采样时间内的活动情况。
-g:串口I/O的情况。
-b:缓冲区使用情况。
-a:文件读写情况。
-c:系统调用情况。
-R:进程的活动情况。
-y:终端设备活动情况。
-W:系统交换活动。
结果说明
Cpu资源监控
CPU:all 表示统计信息为所有 CPU 的平均值。
%user:显示在用户级别(application)运行使用 CPU 总时间的百分比。
%nice:显示在用户级别,用于nice操作,所占用 CPU 总时间的百分比。
%system:在核心级别(kernel)运行所使用 CPU 总时间的百分比。
%iowait:显示用于等待I/O操作占用 CPU 总时间的百分比。
%steal:管理程序(hypervisor)为另一个虚拟进程提供服务而等待虚拟 CPU 的百分比。
%idle:显示 CPU 空闲时间占用 CPU 总时间的百分比。
1. 若 %iowait 的值过高,表示硬盘存在I/O瓶颈
2. 若 %idle 的值高但系统响应慢时,有可能是 CPU 等待分配内存,此时应加大内存容量
3. 若 %idle 的值持续低于1,则系统的 CPU 处理能力相对较低,表明系统中最需要解决的资源是 CPU 。
如果要查看二进制文件test中的内容,需键入如下sar命令:
sar -u -f test
Inode、文件和其他内核表监控
Dentunued: 目录告诉缓存中未被使用的条目数量
File-nr: 文件句柄的使用数量
Inode-nr: 索引节点句柄的使用数量
Pty-nr :使用的pty的数量
内存和交换空间监控
kbmemfree:这个值和free命令中的free值基本一致,所以它不包括buffer和cache的空间.
kbmemused:这个值和free命令中的used值基本一致,所以它包括buffer和cache的空间.
%memused:这个值是kbmemused和内存总量(不包括swap)的一个百分比.
kbbuffers和kbcached:这两个值就是free命令中的buffer和cache.
kbcommit:保证当前系统所需要的内存,即为了确保不溢出而需要的内存(RAM+swap).
%commit:这个值是kbcommit与内存总量(包括swap)的一个百分比.
内存分页监控
pgpgin/s:表示每秒从磁盘或SWAP置换到内存的字节数(KB)
pgpgout/s:表示每秒从内存置换到磁盘或SWAP的字节数(KB)
fault/s:每秒钟系统产生的缺页数,即主缺页与次缺页之和(major + minor)
majflt/s:每秒钟产生的主缺页数.
pgfree/s:每秒被放入空闲队列中的页个数
pgscank/s:每秒被kswapd扫描的页个数
pgscand/s:每秒直接被扫描的页个数
pgsteal/s:每秒钟从cache中被清除来满足内存需要的页个数
%vmeff:每秒清除的页(pgsteal)占总扫描页(pgscank+pgscand)的百分比
IO和传送速率监控
tps:每秒钟物理设备的 I/O 传输总量
rtps:每秒钟从物理设备读入的数据总量
wtps:每秒钟向物理设备写入的数据总量
bread/s:每秒钟从物理设备读入的数据量,单位为 块/s
bwrtn/s:每秒钟向物理设备写入的数据量,单位为 块/s
进程队列长度和平均负载状态监控
runq-sz:运行队列的长度(等待运行的进程数)
plist-sz:进程列表中进程(processes)和线程(threads)的数量
ldavg-1:最后1分钟的系统平均负载(System load average)
ldavg-5:过去5分钟的系统平均负载
ldavg-15:过去15分钟的系统平均负载
系统交换活动信息监控
pswpin/s:每秒系统换入的交换页面(swap page)数量
pswpout/s:每秒系统换出的交换页面(swap page)数量
设备使用情况监控
参数-p可以打印出sda,hdc等磁盘设备名称,如果不用参数-p,设备节点则有可能是dev8-0,dev22-0
tps:每秒从物理磁盘I/O的次数,多个逻辑请求会被合并为一个I/O磁盘请求,一次传输的大小是不确定的。
rd_sec/s:每秒读扇区的次数。
wr_sec/s:每秒写扇区的次数。
avgrq-sz:平均每次设备I/O操作的数据大小(扇区)。
avgqu-sz:磁盘请求队列的平均长度。
await:从请求磁盘操作到系统完成处理,每次请求的平均消耗时间,包括请求队列等待时间,单位是毫秒(1秒=1000毫秒)。
svctm:系统处理每次请求的平均时间,不包括在请求队列中消耗的时间。
%util:I/O请求占CPU的百分比,比率越大,说明越饱和。
1. avgqu-sz 的值较低时,设备的利用率较高。
2. 当%util的值接近 1% 时,表示设备带宽已经占满。
最新版本:10.2
该版本中 sar -b 不再对虚拟设备进行统计,iostat 可显示通过软链接指定参数的目标设备,增加 --disable-stripping 参数。为 pidstat,tapestat 和 cifsiostat 命令添加了颜色支持;所有的 sysstat 命令现在都支持智能彩色输出,方便查看统计数据;支持使用 S_COLORS_SGR 环境变量定制颜色
iostat 增加 -g 和 -T 参数,可用于显示设备组统计信息
sadc 在跨月时重写了其标准每日数据文件
时间格式由 HH-MM-SS 改为 HH:MM:SS
XSD 文档中时间戳元素增加了 maxOccurs 指示器
configure 脚本增加了 --enable-collect-all 来让 sadc 收集所有可能活动信息
项目主页:http://sebastien.godard.pagesperso-orange.fr/

Features
Input / Output and transfer rate statistics (global, per device, per partition, per network filesystem and per Linux task / PID).
CPU statistics (global, per CPU and per Linux task / PID), including support for virtualization architectures.
Memory, hugepages and swap space utilization statistics.
Virtual memory, paging and fault statistics.
Per-task (per-PID) memory and page fault statistics.
Global CPU and page fault statistics for tasks and all their children.
Process creation activity.
Interrupt statistics (global, per CPU and per interrupt, including potential APIC interrupt sources, hardware and software interrupts).
Extensive network statistics: network interface activity (number of packets and kB received and transmitted per second, etc.) including failures from network devices; network traffic statistics for IP, TCP, ICMP and UDP protocols based on SNMPv2 standards; support for IPv6-related protocols.
NFS server and client activity.
Socket statistics.
Run queue and system load statistics.
Kernel internal tables utilization statistics.
System and per Linux task switching activity.
Swapping statistics.
TTY device activity.
Power management statistics (instantaneous and average CPU clock frequency, fans speed, devices temperature, voltage inputs, USB devices plugged into the system).
Sysstat软件包集成如下工具:
* iostat 提供CPU使用率及硬盘吞吐效率的数据(reports CPU statistics and input/output statistics for devices, partitions and network filesystems.);
* mpstat 提供单个处理器或多个处理器相关数据(reports individual or combined processor related statistics.);
* pidstat 报告收集Linux进程任务: I/O, CPU, memory等(reports statistics for Linux tasks (processes) : I/O, CPU, memory, etc.);
* tapestat 报告收集系统上所连接的磁带设备(reports statistics for tape drives connected to the system.);
* cifsiostat 收集CIFS文件系统信息;
* sar 负责收集、报告并存储系统活跃的信息(collects, reports and saves system activity information (CPU, memory, disks, interrupts, network interfaces, TTY, kernel tables,etc.));
* sa1 负责收集并存储每天系统动态信息到一个二进制的文件中。它是通过计划任务工具cron来运行,是为sadc所设计的程序前端程序(collects and stores binary data in the system activity daily data file. It is a front end to sadc designed to be run from cron or systemd.);
* sa2 负责把每天的系统活跃性息写入总结性的报告中。它是为sar所设计的前端 ,要通过cron来调用(writes a summarized daily activity report. It is a front end to sar designed to be run from cron or systemd.);
* sadc 是系统动态数据收集工具,收集的数据被写一个二进制的文件中,它被用作sar工具的后端(the system activity data collector, used as a backend for sar.);
* sadf 显示被sar通过多种格式收集的数据(displays data collected by sar in multiple formats (CSV, XML, JSON, etc.) and can be used for data exchange with other programs.);
sar命令
sar可以全名的获取到cpu、文件、磁盘IO、虚拟内存、内存、网络等信息。
参数说明
sar 命令行的常用格式:
sar [options] [-A] [-o file] t [n]
在命令行中,n 和 t 两个参数组合起来定义采样间隔和次数,t为采样间隔,是必须有的参数,n为采样次数,是可选的,默认值是1;-o file表示将命令结果以二进制格式存放在文件中,file 在此处不是关键字,是文件名。options 为命令行选项,sar命令的选项很多,下面只列出常用选项:
-A:所有报告的总和。
-u:CPU利用率。
-v:进程、节点、文件和锁表状态。
-p:像是当前系统中指定CPU使用信息。
-d:硬盘使用报告。
-r:显示系统内存的使用情况。
-n:显示网络运行状态。参数后面可跟DEV、EDEV、SOCK和FULL。DEV显示网络接口信息,EDEV显示网络错误的统计数据,SOCK显示套接字信息,FULL显示前三参数所有信息。
-q:显示运行队列的大小,它与系统当时的平均负载相同。
-B:内存分页情况.
-R:显示进程在采样时间内的活动情况。
-g:串口I/O的情况。
-b:缓冲区使用情况。
-a:文件读写情况。
-c:系统调用情况。
-R:进程的活动情况。
-y:终端设备活动情况。
-W:系统交换活动。
结果说明
Cpu资源监控
CPU:all 表示统计信息为所有 CPU 的平均值。
%user:显示在用户级别(application)运行使用 CPU 总时间的百分比。
%nice:显示在用户级别,用于nice操作,所占用 CPU 总时间的百分比。
%system:在核心级别(kernel)运行所使用 CPU 总时间的百分比。
%iowait:显示用于等待I/O操作占用 CPU 总时间的百分比。
%steal:管理程序(hypervisor)为另一个虚拟进程提供服务而等待虚拟 CPU 的百分比。
%idle:显示 CPU 空闲时间占用 CPU 总时间的百分比。
1. 若 %iowait 的值过高,表示硬盘存在I/O瓶颈
2. 若 %idle 的值高但系统响应慢时,有可能是 CPU 等待分配内存,此时应加大内存容量
3. 若 %idle 的值持续低于1,则系统的 CPU 处理能力相对较低,表明系统中最需要解决的资源是 CPU 。
如果要查看二进制文件test中的内容,需键入如下sar命令:
sar -u -f test
Inode、文件和其他内核表监控
Dentunued: 目录告诉缓存中未被使用的条目数量
File-nr: 文件句柄的使用数量
Inode-nr: 索引节点句柄的使用数量
Pty-nr :使用的pty的数量
内存和交换空间监控
kbmemfree:这个值和free命令中的free值基本一致,所以它不包括buffer和cache的空间.
kbmemused:这个值和free命令中的used值基本一致,所以它包括buffer和cache的空间.
%memused:这个值是kbmemused和内存总量(不包括swap)的一个百分比.
kbbuffers和kbcached:这两个值就是free命令中的buffer和cache.
kbcommit:保证当前系统所需要的内存,即为了确保不溢出而需要的内存(RAM+swap).
%commit:这个值是kbcommit与内存总量(包括swap)的一个百分比.
内存分页监控
pgpgin/s:表示每秒从磁盘或SWAP置换到内存的字节数(KB)
pgpgout/s:表示每秒从内存置换到磁盘或SWAP的字节数(KB)
fault/s:每秒钟系统产生的缺页数,即主缺页与次缺页之和(major + minor)
majflt/s:每秒钟产生的主缺页数.
pgfree/s:每秒被放入空闲队列中的页个数
pgscank/s:每秒被kswapd扫描的页个数
pgscand/s:每秒直接被扫描的页个数
pgsteal/s:每秒钟从cache中被清除来满足内存需要的页个数
%vmeff:每秒清除的页(pgsteal)占总扫描页(pgscank+pgscand)的百分比
IO和传送速率监控
tps:每秒钟物理设备的 I/O 传输总量
rtps:每秒钟从物理设备读入的数据总量
wtps:每秒钟向物理设备写入的数据总量
bread/s:每秒钟从物理设备读入的数据量,单位为 块/s
bwrtn/s:每秒钟向物理设备写入的数据量,单位为 块/s
进程队列长度和平均负载状态监控
runq-sz:运行队列的长度(等待运行的进程数)
plist-sz:进程列表中进程(processes)和线程(threads)的数量
ldavg-1:最后1分钟的系统平均负载(System load average)
ldavg-5:过去5分钟的系统平均负载
ldavg-15:过去15分钟的系统平均负载
系统交换活动信息监控
pswpin/s:每秒系统换入的交换页面(swap page)数量
pswpout/s:每秒系统换出的交换页面(swap page)数量
设备使用情况监控
参数-p可以打印出sda,hdc等磁盘设备名称,如果不用参数-p,设备节点则有可能是dev8-0,dev22-0
tps:每秒从物理磁盘I/O的次数,多个逻辑请求会被合并为一个I/O磁盘请求,一次传输的大小是不确定的。
rd_sec/s:每秒读扇区的次数。
wr_sec/s:每秒写扇区的次数。
avgrq-sz:平均每次设备I/O操作的数据大小(扇区)。
avgqu-sz:磁盘请求队列的平均长度。
await:从请求磁盘操作到系统完成处理,每次请求的平均消耗时间,包括请求队列等待时间,单位是毫秒(1秒=1000毫秒)。
svctm:系统处理每次请求的平均时间,不包括在请求队列中消耗的时间。
%util:I/O请求占CPU的百分比,比率越大,说明越饱和。
1. avgqu-sz 的值较低时,设备的利用率较高。
2. 当%util的值接近 1% 时,表示设备带宽已经占满。
最新版本:10.2
该版本中 sar -b 不再对虚拟设备进行统计,iostat 可显示通过软链接指定参数的目标设备,增加 --disable-stripping 参数。为 pidstat,tapestat 和 cifsiostat 命令添加了颜色支持;所有的 sysstat 命令现在都支持智能彩色输出,方便查看统计数据;支持使用 S_COLORS_SGR 环境变量定制颜色
iostat 增加 -g 和 -T 参数,可用于显示设备组统计信息
sadc 在跨月时重写了其标准每日数据文件
时间格式由 HH-MM-SS 改为 HH:MM:SS
XSD 文档中时间戳元素增加了 maxOccurs 指示器
configure 脚本增加了 --enable-collect-all 来让 sadc 收集所有可能活动信息
项目主页:http://sebastien.godard.pagesperso-orange.fr/