Linux下,我们多用ssh链接服务器远程操控。对于系统的监控必不可少,sysstat很不错的监控工具包。

sysstat官网:http://sebastien.godard.pagesperso-orange.fr/

sysstat托管代码:https://github.com/sysstat/sysstat

对sysstat做一个介绍:“SYSSTAT是一个软件包,包含监测系统性能及效率的一组工具,这些工具对于我们收集系统性能数据,比如CPU使用率、硬盘和网络吞吐数据,这些数据的收集和分析,有利于我们判断系统是否正常运行,是提高系统运行效率、安全运行服务器的得力助手”。

sysstat工具包包含工具:

◆iostat 工具提供CPU使用率及硬盘吞吐效率的数据;  #比较核心的工具

◆mpstat 工具提供单个处理器或多个处理器相关数据;

◆pidstat: 关于运行中的进程/任务、CPU、内存等的统计信息

◆sar 工具负责收集、报告并存储系统活跃的信息;     #统计数据的核心工具

◆sa1 工具负责收集并存储每天系统动态信息到一个二进制的文件中。它是通过计划任务工具cron来运行,是为sadc所设计的程序前端程序;

◆sa2工具负责把每天的系统活跃性息写入总结性的报告中。它是为sar所设计的前端 ,要通过cron来调用

◆sadc 是系统动态数据收集工具,收集的数据被写一个二进制的文件中,它被用作sar工具的后端;

◆sadf 显示被sar通过多种格式收集的数据;

◆nfsiostat: NFS(Network File System)的I/O统计信息。

◆cifsiostat: CIFS(Common Internet File System)的统计信息

目前主流的linux系统里都自带有sysstat的集成包,在常用的centos/redhat平台下我们可以通过下列命令安装:

yum -y install sysstat

在Debian、ubuntu或deb软件包为基础的系统下,我们可以通过:

apt-get install sysstat

当然,我们也可以通过源码包安装。可以通过rpm -ql  sysstat命令查看具体所安装的文件和位置:

[root@jiao ~]# rpm -ql sysstat
/etc/cron.d/sysstat #计划任务
/etc/rc.d/init.d/sysstat
/etc/sysconfig/sysstat
/etc/sysconfig/sysstat.ioconf
/usr/bin/cifsiostat  #网络文件统计
/usr/bin/iostat
/usr/bin/mpstat
/usr/bin/pidstat
/usr/bin/sadf
/usr/bin/sar
/usr/lib64/sa
/usr/lib64/sa/sa1
/usr/lib64/sa/sa2
/usr/lib64/sa/sadc  #数据写入 中间省略 /var/log/sa  #默认统计信息保存的位置

查看命令的参数:  xxx --help

[ <interval> [ <count> ] ] [ <outfile> ]

    间隔 s          次数                 输出文件

01、iostat


[root@jiao ~]# iostat --help
Usage: iostat [ options ] [ <interval> [ <count> ] ]
Options are:
[ -c ] [ -d ] [ -N ] [ -n ] [ -h ] [ -k | -m ] [ -t ] [ -V ] [ -x ] [ -y ] [ -z ]  
[ -j { ID | LABEL | PATH | UUID | ... } [ <device> [...] | ALL ] ]
[ <device> [...] | ALL ] [ -p [ <device> [,...] | ALL ] ]

参数释义:

-c : 仅显示cpu的状态
-d : 仅显示存储设备的状态,不可以和-c一起使用
-k :默认显示的是读入读出的block信息,用-k可以改成KB大小来显示 -m
-t  : 显示日期
-p device | ALL :
device为某个设备或者某个分区,如果使用ALL,就表示要显示所有分区和设备的信息
-x 显示扩展状态,显示出更多内容

exp

[root@jiao ~]# iostat -x Linux 2.6.32-431.el6.x86_64 (jiao)  09/30/2016  _x86_64_ (1 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle            0.08    0.00    0.26    0.53    0.00   99.13

Device:         rrqm/s   wrqm/s     r/s     w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util sda

4.04     0.56    1.52    0.35    66.17     7.30    39.34     0.05   25.43   3.41   0.64

rrqm/s: 每秒进行 merge 的读操作数目。即 delta(rmerge)/s
wrqm/s: 每秒进行 merge 的写操作数目。即 delta(wmerge)/s
r/s: 每秒完成的读 I/O 设备次数。即 delta(rio)/s
w/s: 每秒完成的写 I/O 设备次数。即 delta(wio)/s
rsec/s: 每秒读扇区数。即 delta(rsect)/s
wsec/s: 每秒写扇区数。即 delta(wsect)/s
rkB/s: 每秒读K字节数。是 rsect/s 的一半,因为每扇区大小为512字节。(需要计算)
wkB/s: 每秒写K字节数。是 wsect/s 的一半。(需要计算)
avgrq-sz: 平均每次设备I/O操作的数据大小 (扇区)。delta(rsect+wsect)/delta(rio+wio)
avgqu-sz: 平均I/O队列长度。即 delta(aveq)/s/1000 (因为aveq的单位为毫秒)。
await: 平均每次设备I/O操作的等待时间 (毫秒)。即 delta(ruse+wuse)/delta(rio+wio)
svctm: 平均每次设备I/O操作的服务时间 (毫秒)。即 delta(use)/delta(rio+wio)
%util: 一秒中有百分之多少的时间用于 I/O 操作,或者说一秒中有多少时间 I/O 队列是非空的。

delta(use)/s/1000 (因为use的单位为毫秒)如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈。
idle小于70% IO压力就较大了,一般读取速度有较多的wait.  #CPU空闲等待时间

02、mpstat


mpstat 用于多处理器系统中的CPU的利用率的统计。细化到具体某个cpu的状态时可以使用参数-P,处理器的ID从0开始

[root@jiao ~]# mpstat --help
Usage: mpstat [ options ] [ <interval> [ <count> ] ]
Options are:
[ -A ] [ -I { SUM | CPU | ALL } ] [ -u ]
[ -P { <cpu> [,...] | ON | ALL } ] [ -V ]

[root@jiao ~]# mpstat -P
Linux 2.6.-.el6.x86_64 (jiao) // _x86_64_ ( CPU) :: AM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle
:: AM 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
:: AM 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
:: AM 0.00 0.00 0.99 0.00 0.00 0.00 0.00 0.00 99.01
Average: 0.00 0.00 0.33 0.00 0.00 0.00 0.00 0.00 99.67

%user    显示在用户级别(application)运行使用 CPU 总时间的百分比。
%nice    显示在用户级别,用于nice操作,所占用 CPU 总时间的百分比。
%system 在核心级别(kernel)运行所使用 CPU 总时间的百分比。
%iowait 显示用于等待I/O操作占用 CPU 总时间的百分比。
%irq  显示在interval时间段内,硬中断占用的CPU总时间。
%soft  显示在interval时间段内,软中断占用的CPU总时间。
%steal   管理程序(hypervisor)为另一个虚拟进程提供服务而等待虚拟CPU的百分比。
%idle    显示 CPU 空闲时间占用CPU总时间的百分比。
intr/s 在internal时间段里,每秒CPU接收的中断的次数。

03、pidstat


[root@jiao ~]# pidstat --help
Usage: pidstat [ options ] [ <interval> [ <count> ] ]
Options are:
[ -C <command> ] [ -d ] [ -h ] [ -I ] [ -l ] [ -r ] [ -t ] [ -u ] [ -V ] [ -w ]
[ -p { <pid> [,...] | SELF | ALL } ] [ -T { TASK | CHILD | ALL } ]

[root@jiao ~]# pidstat -dl
Linux 2.6.-.el6.x86_64 (jiao) // _x86_64_ ( CPU) :: AM PID kB_rd/s kB_wr/s kB_ccwr/s Command
:: AM 19.83 1.96 0.01 /sbin/init
:: AM 0.00 0.23 0.00 jbd2/sda5-
:: AM 2.10 0.00 0.00 /sbin/udevd -d
:: AM 0.12 0.00 0.00 /sbin/udevd -d
:: AM 0.11 0.00 0.00 /sbin/udevd -d
:: AM 0.00 0.03 0.00 auditd
:: AM 0.12 0.05 0.00 /sbin/rsyslogd -i /var/run/syslogd.pid -c
:: AM 0.00 0.00 0.00 /usr/sbin/sshd
:: AM 0.20 0.00 0.00 /usr/libexec/postfix/master
:: AM 0.07 0.00 0.00 pickup -l -t fifo -u
:: AM 0.10 0.00 0.00 qmgr -l -t fifo -u
:: AM 0.05 0.01 0.00 crond
:: AM 0.01 0.00 0.00 /sbin/mingetty /dev/tty1
:: AM 0.00 0.00 0.00 /sbin/mingetty /dev/tty2
:: AM 0.10 0.00 0.00 sshd: root@pts/
:: AM 0.13 0.00 0.00 -bash
:: AM 0.04 0.01 0.00 /usr/sbin/anacron -s

04、sabc


sadc 位于 /usr/lib/sa目录中,64位系统在:/usr/lib64/sa目录中,如果你没有设置可执行路径,要用绝对路径来运行。

sdac准备的说只是一个搜集写入工具,并不直接回显于屏幕上。sadc 是把数据写在一个二进制的文件中,如果想查看数据内容,需要用sadf工具来显示。

[root@jiao ~]# /usr/lib64/sa/sadc --help
Usage: /usr/lib64/sa/sadc [ options ] [ <interval> [ <count> ] ] [ <outfile> ]
Options are:
[ -C <comment> ] [ -F ] [ -L ] [ -V ]
[ -S { INT | DISK | IPV6 | POWER | SNMP | XDISK | ALL | XALL } ]

注意:此工具中的参数都是可选的,如果没有指定任何参数

比如 /usr/lib64/sa/sadc - (后面的“-”是必须的,少了会出乱码和报错),则会输出数据到 /var/log/sa/目录下的一个文件中。

要通过sadf 或sar工具来查看。

[root@jiao ~]# /usr/lib64/sa/sadc -
[root@jiao ~]# ll /var/log/sa/
total
-rw-r--r-- root root Sep : sa30
[root@jiao ~]# sadf /var/log/sa/sa30
jiao all %user 0.01
jiao all %nice 0.00
jiao all %system 0.07
jiao all %iowait 0.02
jiao all %steal 0.00
jiao all %idle 99.90
jiao - LINUX-RESTART
jiao all %user 0.01
jiao all %nice 0.00
jiao all %system 0.10
jiao all %iowait 0.04
jiao all %steal 0.00
jiao all %idle 99.85
jiao all %user 0.01
jiao all %nice 0.00
jiao all %system 0.06
jiao all %iowait 0.00
jiao all %steal 0.00
jiao all %idle 99.93

05、sadf


sdaf 能从二进制文件中提取sar所收集的数据;显示的格式不如sar直观,其主要用于导出为csv、xml等格式的文件,方便导入数据库或excel等程序.

[root@jiao ~]# sadf --help
Usage: sadf [ options ] [ <interval> [ <count> ] ] [ <datafile> ]
Options are:
[ -d | -D | -H | -p | -x ] [ -h ] [ -t ] [ -V ]
[ -P { <cpu> [,...] | ALL } ] [ -s [ <hh:mm:ss> ] ] [ -e [ <hh:mm:ss> ] ]
[ -- <sar_options> ]

06、sar


sar 工具比较强大,既能收集系统CPU、硬盘、动态数据,也能显示动态显示,更能查看二进制数据文件;sar 的应用比较多,而且也比较复杂,数据更为精确。我们只了解一下常用的内容就行,大多数内容我们了解就行。

[root@jiao ~]# sar --help
Usage: sar [ options ] [ <interval> [ <count> ] ]
Options are:
[ -A ] [ -b ] [ -B ] [ -C ] [ -d ] [ -h ] [ -m ] [ -p ] [ -q ] [ -r ] [ -R ]
[ -S ] [ -t ] [ -u [ ALL ] ] [ -v ] [ -V ] [ -w ] [ -W ] [ -y ]
[ -I { <int> [,...] | SUM | ALL | XALL } ] [ -P { <cpu> [,...] | ALL } ]
[ -j { ID | LABEL | PATH | UUID | ... } ] [ -n { <keyword> [,...] | ALL } ]
[ -o [ <filename> ] | -f [ <filename> ] ] [ --legacy ]
[ -i <interval> ] [ -s [ <hh:mm:ss> ] ] [ -e [ <hh:mm:ss> ] ]

参数说明:

-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就是读取 /var/log/sa目录下最近系统状态文件。sar -A 读取/var/log/sa目录下所有文件数据。

sar -u 1 3

[root@jiao ~]# sar -u  3    #sar -u 1 3 -o cpu.dat   #sar -f cpu.dat 查看信息
Linux 2.6.-.el6.x86_64 (jiao) // _x86_64_ ( CPU) :: AM CPU %user %nice %system %iowait %steal %idle
:: AM all 0.00 0.00 1.00 0.00 0.00 99.00
:: AM all 0.00 1.01 2.02 5.05 0.00 91.92
:: AM all 0.00 0.00 2.00 0.00 0.00 98.00
Average: all 0.00 0.33 1.67 1.67 0.00 96.32

sar -n DEV 2 4  #查看网络设备的网络吞吐量

[root@jiao ~]# sar -n DEV
Linux 2.6.-.el6.x86_64 (jiao) // _x86_64_ ( CPU) :: AM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
:: AM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
:: AM eth0 0.50 0.00 0.03 0.00 0.00 0.00 0.00 :: AM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
:: AM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
:: AM eth0 0.50 0.50 0.03 0.19 0.00 0.00 0.00 :: AM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
:: AM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
:: AM eth0 0.50 0.50 0.03 0.19 0.00 0.00 0.00 :: AM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
:: AM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
:: AM eth0 0.50 0.50 0.03 0.19 0.00 0.00 0.00 Average: IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
Average: lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Average: eth0 0.50 0.38 0.03 0.14 0.00 0.00 0.00

参数释义:

IFACE:设备名;
rxpck/s:每秒收到的包;
rxbyt/s:每秒收到的所有包的数量 ;
txbyt/s:每秒发送的所有包的数量 ;
txbyt/s:每秒发送的所有包的大小;
rxcmp/s:每秒收到数的据压缩包的数量;
txcmp/s :每秒传输的数据压缩包的数据;
rxmcst/s: 每秒收到的多播的包数量;

想获取某块网卡的流量情况,我们可以使用grep过滤。  #sar -n DEV 2 4 | grep eth0

sar -b 1 4

[root@jiao ~]# sar -b
Linux 2.6.-.el6.x86_64 (jiao) // _x86_64_ ( CPU) :: AM tps rtps wtps bread/s bwrtn/s
:: AM 0.00 0.00 0.00 0.00 0.00
:: AM 0.00 0.00 0.00 0.00 0.00
:: AM 0.00 0.00 0.00 0.00 0.00
:: AM 0.00 0.00 0.00 0.00 0.00
Average: 0.00 0.00 0.00 0.00 0.00

引荐:http://www.361way.com/sysstat/1508.html

最新文章

  1. qq空间返回顶部代码
  2. 8bit YUV4:2:2格式对应的颜色
  3. ubuntu apt 安装
  4. 绘图: Shape, Path
  5. 为什么模板函数的声明和实现都放在.h文件中
  6. C++ 画星号图形——空心正方形(核心代码)
  7. WebApi传参总动员(三)
  8. Excel导入导出,生成和下载Excel报表、附件等操作--ASP.NET
  9. 【编程实践】连续正整数之和(华东师范大学OJ-3025)
  10. HDOJ 1302(UVa 573) The Snail(蜗牛爬井)
  11. 关于EventHandler的使用
  12. [NOI 2014]魔法森林
  13. 在线OJ的小demo
  14. bzoj 2761
  15. U3D外包团队:五款IDE推荐!
  16. 文件操作---with语句
  17. SpringMVC由浅入深day01_2springmvc入门程序
  18. mac远程连接windows
  19. MyISAM和innoDB对比,覆盖索引简单回顾
  20. 解决阿里云无法正常使用samba的问题【转】

热门文章

  1. MySQL的Explain命令
  2. android 滑动滚动条调节音量
  3. KEIL MDK STM32如何建立工程
  4. 警惕多iframe下的同名id引起的诡异问题
  5. 怎么找到占用usb的模块,linux下Jlink连接失败
  6. jquery之hasClass
  7. PADS Logic Decal、Layout Decal绘制
  8. 【Unity】Update()和FixedUpdate()
  9. [No000028]Python的使用之禅及程序员应该明白的一些道理
  10. BZOJ 1408: [Noi2002]Robot