zoukankan      html  css  js  c++  java
  • dstat 监控命令详解

    一、工具介绍

      dstat的man手册对于该工具的解释:

        dstat - versatile tool for generating system resource statistics 系统资源多用途的统计工具  

      Dstat is a versatile replacement for vmstat, iostat and ifstat. Dstat overcomes some of the limitations and adds some extra features.

      dstat可以替代vmstat、iostat、ifstat。dstat突破了vmstat、iostat、ifstat的一些限制并增加了一些额外特性。  

      Dstat allows its data to be directly written to a CSV file to be imported and used by OpenOffice,Gnumeric or Excel to create graphs.

      dstat可以将数据重定向写入csv文件,并支持通过office工具导出和使用,也可以用excel绘图表。

    二、dstat基本用法

      dstat命令不加任何参数时,会收集CPU、磁盘、网络、分页、系统的数据信息,每秒收集一次。缺省参数时相当于dstat -cdngy 1或dstat -a 1。

      命令格式

      dstat [-afv] [options..] [delay [count]]  

      常用选项

     
    -c,--cpu 开启cpu统计
    -d, --disk 开启disk统计
    -D 改选跟具体的设备名(多个用逗号隔开)如:total,hda,hdb表示分别统计total、hda、hdb设备块
    -i, - -int 开启中断统计
     -l, --load 开启负载均衡统计,分别是1m,5m,15m
    -m, --mem 开启内存统计,包括used,buffers,cache,free
    -n, --net 开启net统计,包括接受和发送
    -N 该选项可以跟网络设备名多个用逗号隔开,如eth1,total
    -g, --page 开启分页统计
    -p, --proc 开启进程统计,包括runnable, uninterruptible, new
    -r, --io io开启请求统计,包括read requests, write requests
    -s, --swap 开启swap统计,包括used, free
    -S 该选项可以跟具体的交换区,多个用逗号隔开如swap1,total
    -t, --time 启用时间和日期输出
    -y, --sys 开启系统统计,包括中断和上下文切换
    --fs 开启文件系统统计,包括 (open files, inodes)
    --ipc 开启ipc统计,包括 (message queue, semaphores, shared memory)
    --output file 输出结果到cvs文件中
    -a, --all 是默认值相当于 -cdngy (default)
    -f, --full 相当于 -C, -D, -I, -N and -S

      参数

    参数名称 参数描述
    delay 两次输出之间的时间间隔,默认是1s
    count 报告输出的次数,默认是没有限制,一直输出知道ctrl+c

    常用选项的判断方法

      进程相关

        -p,--proc

          

    -p , --proc
        展示当前时刻的进程状态:可运行态(就绪态),无法中断的睡眠态(等待态),新进程,
        文档原文为:runnable, uninterruptible, new。
        就绪态进程多代表负载较高,配合-l参数确认,比如run为80,即当前有80个进程等待CPU处理,等待态进程多代表当前IO可能有问题,等待态进程是内存中等待非CPU资源的进程,一般是等待IO,可以根据-c的wai列确认, 进一步根据-g的in列确认是否是内存瓶颈后的恢复期,配合-s参数查看换页使用情况,
        -d查看当前bio情况,如果-d的bio的read和-g的in差不多,表名当前IO主要是换页到内存加载造成的,即内存不足后的恢复期,
         如果-g和-s表名换页未使用,但是-d居高,则说明当前有大量进程等待磁盘IO,
         使用--top-bio-adv确定bio最高的进程,
         如果-d也不高,但是-n较高,说明进程等待网络IO
         使用--top-io-adv确定IO最高的进程。         
    

      

    --proc-count:展示进程数量,侧面反映系统负载
    

      

    -y, --sys:展示系统中断次数int和上限文切换次数csw,
        上下文切换:CPU运行任务1,切换运行就绪态任务2,
        任务1可能变成就绪态(CPU时间片耗光),
        也可能变成等待态(等待IO等非CPU资源),
        CPU的处理时间片较短,中断和上下文切换次数数字会很大,
        也能从侧面反映负载,如果中断和上下文切换暴涨,
        表明负载过大,或者程序设计不合理,或者kernel级别的BUG。
    

     

    --ipc:展示IPC(进程间通信)状态, 
           包括msg消息队列 ,sem线程队列,shm共享内存使用
    

    进程最耗资源统计

    --top-cpu
           展示最耗CPU的进程名和CPU占比
    

     

    --top-cpu-adv
           展示最耗CPU的进程名、PID和CPU占比以及读写信息,
           这个读写信息是一个差值,推测是内存的读写。
    

    --top-cputime
           展示耗费CPU时间最多的进程名和耗费时间(ms)
    

    --top-latency
           显示延迟最高的进程名和延迟时间(ms)
    

    --top-bio-adv
           展示当前最耗block I/O的进程名、PID和读写容量以及CPU占比
           即最高磁盘IO的进程。
    

    --top-io
           展示最耗IO的进程名和IO读写信息,
           被统计的IO信息包括blockIO和内存还有网络等全部,
           因此如果要判定最耗磁盘读写的进程,应该使用--top-bio,
           某一时刻,最耗IO和最耗blockIO的进程不一定是同一个。
    

     

     

    --top-mem
           展示最耗内存的进程名和内存消耗
    

     

    --top-oom
           展示最先OOM杀死的进程,OOM是内存回收机制
    

      

     内存相关参数

    -m, --mem
           展示内存状态,包括used, buffers, cache, free
    

     

    网络相关参数

    -n, --net
           展示总体网络收发状态,折算后附带单位友好展示
    

    -N 必须和-n配合使用:dstat -n -N eth0,total
           当存在多网卡时,可以分别指定展示各个网卡的收发状态
    

     

    --socket
           展示套接字状态,包括tot总数量,tcp套接字数量,udp套接字数量,
           raw原始套接字数量,frg(ip-fragments IP碎片)套接字数量。
    

     

    --tcp  (listen, established, syn, time_wait, close)
           展示tcp网络连接状态,lis监听的数量,act(established)活动的确立的数量,
           synTCP/IP的握手数量,tim(time_wait)发起关闭后的等待关闭态数量,
           clo关闭态数量,即命令netstat -tpln对应记录的搂取合并。
    

     

    硬盘相关参数

    -d, --disk
           展示磁盘设备读写总计,折算后附带单位友好展示
    

     

    -D 必须和-d配合使用:dstat -dD sda,sda2,total
           分别展示设备sda和sda2以及总体的读写状态
    

     

    --disk-tps
           展示每个磁盘每秒事物读写数量
    

     

    MYSQL相关参数

    # mysql相关参数使用配置:
    yum -y install MySQL-python
    export DSTAT_MYSQL_HOST=127.0.0.1
    export DSTAT_MYSQL_USER=root
    export DSTAT_MYSQL_PWD='ecpss@123'
    mkdir /var/lib/mysql
    ln -s /usr/local/mysql/mysql.sock /var/lib/mysql/mysql.sock
    # 如果功能报错,请修改/usr/share/dstat目录内对应脚本
    # 如果参数--mysql5-cmds报错,则修改dstat_mysql5_cmds.py
    --innodb-buffer
           show innodb buffer stats
    --innodb-io
           show innodb I/O stats
    --innodb-ops
           show innodb operations counters
    # 以上三个参数信息都由"show engine innodb statusG
    "获得,
    # 因涉及os.popen3兼容问题,暂不研究
    --mysql5-cmds
           展示mysql库所有的dml操作次数,包括:
           sel查询次数,ins插入次数,upd更新次数,del删除次数,
           加大dstat_mysql5_cmds.py的self.width参数,以免数据展示不全,
           该参数是展示数据的最大长度,数据由以下mysql库SQL提供:
           show global status like 'Com_select';
           show global status like 'Com_insert';
           show global status like 'Com_update';
           show global status like 'Com_delete';
           是mysql库的内存状态,重启后数据清零。
    
  • 相关阅读:
    【Azure Redis 缓存】Azure Redis 功能性讨论二
    【Azure Developer】如何用Microsoft Graph API管理AAD Application里面的Permissions
    【Azure 环境】通过Python SDK收集所有订阅简略信息,例如订阅id 名称, 资源组及组内资源信息等,如何给Python应用赋予相应的权限才能获取到信息呢?
    【Azure 应用服务】App Service与APIM同时集成到同一个虚拟网络后,如何通过内网访问内部VNET的APIM呢?
    【Azure 云服务】如何从Azure Cloud Service中获取项目的部署文件
    【Azure Redis 缓存】Azure Redis 异常
    【Azure 微服务】基于已经存在的虚拟网络(VNET)及子网创建新的Service Fabric并且为所有节点配置自定义DNS服务
    【Azure Redis 缓存】遇见Azure Redis不能创建成功的问题:至少一个资源部署操作失败,因为 Microsoft.Cache 资源提供程序未注册。
    【Azure Redis 缓存】如何得知Azure Redis服务有更新行为?
    【Azure API 管理】在 Azure API 管理中使用 OAuth 2.0 授权和 Azure AD 保护 Web API 后端,在请求中携带Token访问后报401的错误
  • 原文地址:https://www.cnblogs.com/zh-dream/p/12081455.html
Copyright © 2011-2022 走看看