暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Linux 系统监控工具-sar

NIFI实战 2021-03-12
329

目的

  1. 找出系统瓶颈

  2. 磁盘(存储)瓶颈

  3. CPU和内存瓶颈

  4. 网络瓶颈

sar

sar(System Activity Reporter, 系统活动情况报告): 是用于监控Linux系统各个性能的优秀工具,包括:文件的读写情况、系统调用的使用情况、磁盘I/O、CPU效率、内存使用状况、进程活动及IPC有关的活动等。

下文将说明如何使用sar获取以下性能分析数据:

  1. 整体CPU使用统计

  2. 各个CPU使用统计

  3. 内存使用情况统计

  4. 整体I/O情况

  5. 各个I/O设备情况

  6. 网络统计

命令参数

interval: 采样周期,单位是秒;
count:采样次数,默认值是连续采样;
options:命令行选项。
sar命令的选项很多,下面只列出常用选项:
-A:所有报告的总和
-u:输出整体CPU使用情况的统计信息
-v:输出inode、文件和其他内核表的统计信息
-d:输出每一个块设备的活动信息
-r:输出内存和交换空间的统计信息
-b:显示I/O和传送速率的统计信息
-a:文件读写情况
-c:输出进程统计信息,每秒创建的进程数
-R:输出内存页面的统计信息
-y:终端设备活动情况
-w:输出系统交换活动信息

复制

查看CPU使用情况  sar -u

sar 1 3 或 sar -u 1 3

复制
  1. %user   用户空间的CPU使用

  2. %nice   改变过优先级的进程的CPU使用率

  3. %system   内核空间的CPU使用率

  4. %iowait   CPU等待IO的百分比

  5. %steal   虚拟机的虚拟机CPU使用的CPU

  6. %idle   空闲的CPU

    在以上的显示当中,主要看%iowait和%idle,%iowait过高表示存在I/O瓶颈,即磁盘IO无法满足业务需求,如果%idle过低表示CPU使用率比较严重,需要结合内存使用等情况判断CPU是否瓶颈。

将统计结果保存到文件 sar -o  &  sar -f

sar -o test 1 3   #保存
sar -f test       #查看

复制

查看平均负载  sar -q

sar -q 1 3

复制
  1. runq-sz   运行队列的长度(等待运行的进程数,每核的CP不能超过3个)

  2. plist-sz  进程列表中的进程(processes)和线程数(threads)的数量

  3. ldavg-1  最后1分钟的CPU平均负载,即将多核CPU过去一分钟的负载相加再除以核心数得出的平均值,5分钟和15分钟以此类推

  4. ldavg-5  最后5分钟的CPU平均负载

  5. ldavg-15  最后15分钟的CPU平均负载

  6. blocked  

查看内存使用情况  sar -r

sar -r 1 3

复制
  1. kbmemfree  空闲的物理内存大小

  2. kbmemused  使用中的物理内存大小

  3. %memused  物理内存使用率

  4. kbbuffers  内核中作为缓冲区使用的物理内存大小,kbbuffers和kbcached:这两个值就是free命令中的buffer和cache.

  5. kbcached  缓存的文件大小

  6. kbcommit  保证当前系统正常运行所需要的最小内存,即为了确保内存不溢出而需要的最少内存(物理内存+Swap分区)

  7. commit  这个值是kbcommit与内存总量(物理内存+swap分区)的一个百分比的值

  8. kbactive  

  9. kbinact

  10. kbdirty

查看系统swap分区统计情况  sar -W

sar -W 1 3

复制
  1. pswpin/s   每秒从交换分区到系统的交换页面(swap page)数量

  2. pswpott/s  每秒从系统交换到swap的交换页面(swap page)的数量

查看IO和传递速率  sar -b

sar -b 1 3

复制
  1. tps  磁盘每秒钟的IO总数,等于iostat中的tps

  2. rtps  每秒钟从磁盘读取的IO总数

  3. wtps  每秒钟从写入到磁盘的IO总数

  4. bread/s  每秒钟从磁盘读取的块总数

  5. bwrtn/s  每秒钟写入到磁盘的块总数

查看磁盘使用情况  sar -d

sar -d

复制

DEV  磁盘设备的名称,如果不加-p,会显示dev253-0类似的设备名称,因此加上-p显示的名称更直接

  1. tps  每秒I/O的传输总数

  2. rd_sec/s  每秒读取的扇区的总数

  3. wr_sec/s  每秒写入的扇区的总数

  4. avgrq-sz  平均每次次磁盘I/O操作的数据大小(扇区)

  5. avgqu-sz  磁盘请求队列的平均长度

  6. await  从请求磁盘操作到系统完成处理,每次请求的平均消耗时间,包括请求队列等待时间,单位是毫秒(1秒等于1000毫秒),等于寻道时间+队列时间+服务时间

  7. svctm  I/O的服务处理时间,即不包括请求队列中的时间

  8. %util  I/O请求占用的CPU百分比,值越高,说明I/O越慢

统计网络信息 sar -n

    sar -n { <关键词> [,...] | ALL }
    关键词可以是:
    DEV 网卡
    EDEV 网卡 (错误)
    NFS NFS 客户端
    NFSD NFS 服务器
    SOCK Sockets (套接字) (v4)
    IP IP 流 (v4)
    EIP IP 流 (v4) (错误)
    ICMP ICMP 流 (v4)
    EICMP ICMP 流 (v4) (错误)
    TCP TCP 流 (v4)
    ETCP TCP 流 (v4) (错误)
    UDP UDP 流 (v4)
    SOCK6 Sockets (套接字) (v6)
    IP6 IP 流 (v6)
    EIP6 IP 流 (v6) (错误)
    ICMP6 ICMP 流 (v6)
    EICMP6 ICMP 流 (v6) (错误)
    UDP6 UDP 流 (v6)
    DEV显示网络接口信息。
    EDEV显示关于网络错误的统计数据。
    NFS统计活动的NFS客户端的信息。
    NFSD统计NFS服务器的信息
    SOCK显示套接字信息
    ALL显示所有5个开关
    参数说明:
    IFACE:LAN接口
    rxpck/s:每秒钟接收的数据包
    txpck/s:每秒钟发送的数据包
    rxbyt/s:每秒钟接收的字节数
    txbyt/s:每秒钟发送的字节数
    rxcmp/s:每秒钟接收的压缩数据包
    txcmp/s:每秒钟发送的压缩数据包
    rxmcst/s:每秒钟接收的多播数据包
    rxerr/s:每秒钟接收的坏数据包
    txerr/s:每秒钟发送的坏数据包
    coll/s:每秒冲突数
    rxdrop/s:因为缓冲充满,每秒钟丢弃的已接收数据包数
    txdrop/s:因为缓冲充满,每秒钟丢弃的已发送数据包数
    txcarr/s:发送数据包时,每秒载波错误数
    rxfram/s:每秒接收数据包的帧对齐错误数
    rxfifo/s:接收的数据包每秒FIFO过速的错误数
    txfifo/s:发送的数据包每秒FIFO过速的错误数

    复制

    网络接口信息 sar -n DEV

    sar -n DEV 1 1

    复制

    1. IFACE  本地网卡接口的名称

    2. rxpck/s  每秒钟接受的数据包

    3. txpck/s  每秒钟发送的数据库

    4. rxKB/S  每秒钟接受的数据包大小,单位为KB

    5. txKB/S  每秒钟发送的数据包大小,单位为KB

    6. rxcmp/s  每秒钟接受的压缩数据包

    7. txcmp/s  每秒钟发送的压缩包

    8. rxmcst/s  每秒钟接收的多播数据包  

    统计socket连接信息  sar -n SOCK

    sar -n SOCK 1 1

    复制
    1. totsck  当前被使用的socket总数

    2. tcpsck  当前正在被使用的TCP的socket总数

    3. udpsck  当前正在被使用的UDP的socket总数

    4. rawsck  当前正在被使用于RAW的skcket总数

    5. if-frag  当前的IP分片的数目

    6. tcp-tw  TCP套接字中处于TIME-WAIT状态的连接数量

    TCP连接的统计  sar -n TCP

    sar -n TCP 1 1

    复制
    1. active/s  新的主动连接

    2. passive/s  新的被动连接

    3. iseg/s  接受段

    4. oseg/s  输出段

    总结

    默认监控: sar 1 1     // CPU和IOWAIT统计状态 

    (1) sar -b 1 1       // IO传送速率

    (2) sar -B 1 1       // 页交换速率

    (3) sar -c 1 1       // 进程创建的速率

    (4) sar -d 1 1       // 块设备的活跃信息

    (5) sar -n DEV 1 1   // 网路设备的状态信息

    (6) sar -n SOCK 1 1   // SOCK的使用情况

    (7) sar -n ALL 1 1   // 所有的网络状态信息

    (8) sar -P ALL 1 1   // 每颗CPU的使用状态信息和IOWAIT统计状态 

    (9) sar -q 1 1       // 队列的长度(等待运行的进程数)和负载的状态

    (10) sar -r 1 1     // 内存和swap空间使用情况

    (11) sar -R 1 1       // 内存的统计信息(内存页的分配和释放、系统每秒作为BUFFER使用内存页、每秒被cache到的内存页)

    (12) sar -u 1 1       // CPU的使用情况和IOWAIT信息(同默认监控)

    (13) sar -v 1 1       // inode, file and other kernel tablesd的状态信息

    (14) sar -w 1 1       // 每秒上下文交换的数目

    (15) sar -W 1 1       // SWAP交换的统计信息(监控状态同iostat 的si so)

    (16) sar -x 2906 1 1 // 显示指定进程(2906)的统计信息,信息包括:进程造成的错误、用户级和系统级用户CPU的占用情况、运行在哪颗CPU上

    (17) sar -y 1 1       // TTY设备的活动状态

    文章转载自NIFI实战,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

    评论