zoukankan      html  css  js  c++  java
  • Linux下sysstat工具学习

        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 0 1 3
    Linux 2.6.32-431.el6.x86_64 (jiao)     09/30/2016     _x86_64_    (1 CPU)
    
    03:35:38 AM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
    03:35:39 AM    0    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
    03:35:40 AM    0    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
    03:35:41 AM    0    0.00    0.00    0.99    0.00    0.00    0.00    0.00    0.00   99.01
    Average:       0    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.32-431.el6.x86_64 (jiao)     09/30/2016     _x86_64_    (1 CPU)
    
    03:40:26 AM       PID   kB_rd/s   kB_wr/s kB_ccwr/s  Command
    03:40:26 AM         1     19.83      1.96      0.01  /sbin/init 
    03:40:26 AM       242      0.00      0.23      0.00  jbd2/sda5-8
    03:40:26 AM       313      2.10      0.00      0.00  /sbin/udevd -d 
    03:40:26 AM       552      0.12      0.00      0.00  /sbin/udevd -d 
    03:40:26 AM       563      0.11      0.00      0.00  /sbin/udevd -d 
    03:40:26 AM       823      0.00      0.03      0.00  auditd 
    03:40:26 AM       839      0.12      0.05      0.00  /sbin/rsyslogd -i /var/run/syslogd.pid -c 5 
    03:40:26 AM       883      0.00      0.00      0.00  /usr/sbin/sshd 
    03:40:26 AM       960      0.20      0.00      0.00  /usr/libexec/postfix/master 
    03:40:26 AM       968      0.07      0.00      0.00  pickup -l -t fifo -u 
    03:40:26 AM       969      0.10      0.00      0.00  qmgr -l -t fifo -u 
    03:40:26 AM       970      0.05      0.01      0.00  crond 
    03:40:26 AM       983      0.01      0.00      0.00  /sbin/mingetty /dev/tty1 
    03:40:26 AM       985      0.00      0.00      0.00  /sbin/mingetty /dev/tty2 
    03:40:26 AM       994      0.10      0.00      0.00  sshd: root@pts/0  
    03:40:26 AM       996      0.13      0.00      0.00  -bash 
    03:40:26 AM      1025      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 40
    -rw-r--r-- 1 root root 34472 Sep 30 03:50 sa30
    [root@jiao ~]# sadf /var/log/sa/sa30
    jiao    599    1475167801    all    %user    0.01
    jiao    599    1475167801    all    %nice    0.00
    jiao    599    1475167801    all    %system    0.07
    jiao    599    1475167801    all    %iowait    0.02
    jiao    599    1475167801    all    %steal    0.00
    jiao    599    1475167801    all    %idle    99.90
    jiao    -1    1475168236    LINUX-RESTART
    jiao    600    1475169001    all    %user    0.01
    jiao    600    1475169001    all    %nice    0.00
    jiao    600    1475169001    all    %system    0.10
    jiao    600    1475169001    all    %iowait    0.04
    jiao    600    1475169001    all    %steal    0.00
    jiao    600    1475169001    all    %idle    99.85
    jiao    599    1475169601    all    %user    0.01
    jiao    599    1475169601    all    %nice    0.00
    jiao    599    1475169601    all    %system    0.06
    jiao    599    1475169601    all    %iowait    0.00
    jiao    599    1475169601    all    %steal    0.00
    jiao    599    1475169601    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 1 3    #sar -u 1 3 -o cpu.dat   #sar -f cpu.dat 查看信息
    Linux 2.6.32-431.el6.x86_64 (jiao)     09/30/2016     _x86_64_    (1 CPU)
    
    04:03:00 AM     CPU     %user     %nice   %system   %iowait    %steal     %idle
    04:03:01 AM     all      0.00      0.00      1.00      0.00      0.00     99.00
    04:03:02 AM     all      0.00      1.01      2.02      5.05      0.00     91.92
    04:03:03 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 2 4
    Linux 2.6.32-431.el6.x86_64 (jiao)     09/30/2016     _x86_64_    (1 CPU)
    
    04:06:58 AM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
    04:07:00 AM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
    04:07:00 AM      eth0      0.50      0.00      0.03      0.00      0.00      0.00      0.00
    
    04:07:00 AM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
    04:07:02 AM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
    04:07:02 AM      eth0      0.50      0.50      0.03      0.19      0.00      0.00      0.00
    
    04:07:02 AM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
    04:07:04 AM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
    04:07:04 AM      eth0      0.50      0.50      0.03      0.19      0.00      0.00      0.00
    
    04:07:04 AM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
    04:07:06 AM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
    04:07:06 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 1 4
    Linux 2.6.32-431.el6.x86_64 (jiao)     09/30/2016     _x86_64_    (1 CPU)
    
    04:11:30 AM       tps      rtps      wtps   bread/s   bwrtn/s
    04:11:31 AM      0.00      0.00      0.00      0.00      0.00
    04:11:32 AM      0.00      0.00      0.00      0.00      0.00
    04:11:33 AM      0.00      0.00      0.00      0.00      0.00
    04:11:34 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

  • 相关阅读:
    Js获取当前浏览器的高和宽度
    js中使用键盘键,每个键的值
    网络搜索之实现网络蜘蛛
    进程和线程
    jquery.bgiframe.js在IE9下的错误
    [习题]GridView样版内部,改用CheckBox/Radio/DropDownList(单/复选)控件,取代TextBox
    [入门]C#语法里面,如何使用 VB的常用函数?(using Microsoft.VisualBasic)
    [全文下载/试读]补充,上集Ch. 3 Panel控件与常用属性,范例:问卷系统,动态产生「子问题」(使用障眼法)
    [ASP.NET] 上课 第一天的简介
    TextBox的 TextChanged事件#1 动态给予默认值,会触发TextChanged事件吗? / #2 EnableViewState属性是做什么用?
  • 原文地址:https://www.cnblogs.com/xiaochina/p/5920854.html
Copyright © 2011-2022 走看看