系统监测和性能分析工具

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了系统监测和性能分析工具相关的知识,希望对你有一定的参考价值。

  作为一名linux运维工程师来说,对linux系统的日常管理,检测和系统性能的分析是必不可少的。也有一些针对系统监测和性能分析的工具。咱们现在就来了解一下。


     

tcpdump命令:

                   网络抓包工具,过滤数据包或者定制输出格式:

      常用选项:

             -n :  用IP地址表示主机,用数字表示端口号。

             -i  : 监听网卡接口,

             -i  any :   抓取所有网卡接口的数据包。

             -v  :  输出详细信息。

             -t :  不打印时间戳

             -e :  显示以太网帧头部信息。

             -x  :  以十六进制数显示数据包的内容。

            -X  :  打印每个十六进制字节对应ascii字符。

           -XX :  打印以太网帧的头部信息。

            -s :   设置抓包时的抓取长度。默认的抓包长度被修改为65535字节。

           -S  :   绝对值显示TCP报文段的序号。

          -w  :  将tcpdump的输出以特定格式定向到某个文件。

           -r  :  从文件读取数据包信息并显示。


   tcpdump表达式操作数:

             类型(type): 解释其后面紧跟着的参数的含义。

                  支持的类型包括:host, net,port,portrange. 可分别指定(IP地址),

                                    用CIDR方法表示的网络地址,端口号和端口范围。

                      例如: tcpdump net  1.0.0.0/8


             方向(dir): src指定数据包的发送端,dst指定数据包的目的端。

                      例如:tcpdump  dst  port  53


            协议(proto): 指定目标协议,

                  例如: tcpdump    icmp


          

        支持逻辑操作符:and(&&),  or(||),  not(!)

             例如:

                 tcpdump ip host 主机名 and not 主机名


        如果表达式较复杂:用括号分组,用反斜杠\ 或单引号转义。

             例如: tcpdump ‘src 1.1.1.1 and (dst port 3389 or 22)‘



       使用部分协议字段的内容来过滤数据包

            例如:tcpdump ‘tcp[13] & 2 != 0‘




lsof 命令: 

            列出当前系统打开的文件描述符的工具。

          常用选项:

                -i : 显示socket文件描述符。

          使用方法:

               lsof -i [46] [protocol][@hostname][ipaddr][:service|port]

                 说明: 

                        4: ipv4协议

                        6: ipv6协议。

                        protocol 指定传输层协议。

                        hostname 指定主机名。

                        ipaddr   主机IP地址。

                        service  指定服务名

                        port     指定端口号。


               -u : 显示指定用户启动的所有进程打开的所有文件描述符。

               -c : 显示指定的命令打开的所有文件描述符。

                   例如:lsof  -c  httpd


              -p : 显示指定进程打开的所有文件描述符。

              -t  : 显示打开了目标文件描述符的进程PID。



       使用:

              #lsof -p  进程号

             输出信息详解:

                      COMMAND : 执行程序所用的命令。

                      PID : 文件描述符所属进程的PID

                      USER : 用户名。

                      FD : 文件描述符的描述。

                             cwd : 进程的工作目录。

                             rtd : 用户的根目录。

                             txt : 进程运行的程序代码。

                            mem : 映射到内存的文件。


                     FD以数字+访问权限表示。

                           数字: 文件描述符的具体数值。

                           访问权限:r(可读) ,  w(可写),u(可读可写)

                           0u,1u,2u :标准输入,标准输出,标准错误输出。

                           3u : 处于LISTEN状态的监听socket

                           4u :epoll内核事件对应的文件描述符。


                    TYPE:文件描述符类型。

                         DIR : 目录。

                         REG :  普通文件。

                         CHR :  字符设备文件

                        IPv4 : IPv4类型的socket文件描述符。0000是未知类型。


                   DEVICE : 文件所属设备,

                         字符设备和块设备:主设备号,此设备号。

                         程序文件和动态库:8:SCSI硬盘。 3 : 该硬盘的第3个分区。


                   FIFO类型的文件:例如:管道和socket ,

                                       显示一个内核引用目标文件的地址。


                   SIZE/OFF : 文件大小或者偏移值。

                   0t/ox : 偏移值。否则是文件大小。


                   NODE : 文件的i节点号,对于socket,则显示为协议类型。


                   NAME : 文件名





nc 命令:

          用来快速构建网络连接。可以服务器方式运行,也可以客户端方式运行。

           默认以客户端方式运行。


        常用选项:

                 -i : 设置数据包传送的时间间隔。

                 -l : 以服务器方式运行,监听指定端口。

                -k : 重复接收并处理某个端口的所有连接,与-l 一起使用。


                -n  : IP地址表示主机,数字表示端口。

                -s : 设置本地主机发送出的数据包的IP地址。

                -C : 将CR和LF两个字符作为行结束符。

               -U : 使用unix本地域协议通信。

               -u :  使用UDP协议,默认使用TCP协议。

              -w :  未检测到输入,则退出。


              -X : 指定C-S之间使用的通信协议。

              -x :  指定目标代理服务器的IP地址和端口号。

   例如:

     nc -x www:1080 -X connect www.yuan.com 80


             -z  :  扫描目标主机的某个服务是否开启。

             -C  :  HTTP行结束符。





strace 命令:

           测试服务器性能的工具。

           跟踪程序运行过程中执行的系统调用和接收到的信号,并将系统调用名,参数,返回值及信号名输出到标准输出和指定的文件。


      常用的选项:

            -c  统计每个系统调用执行时间,执行次数和出错次数。

            -f  跟踪由fork调用生成的子进程。

            -t  加上时间信息。

           -e  指定表达式,用来控制如何跟踪系统调用。

      格式:

             [qualifier=][!]values1[,value2]......


              qualifier: trace,abbrev,verbose,raw,signal, read,write.   默认是trace.


      value 取值:

        -e trace=set : 只跟踪指定的系统调用。

        -e trace=file : 只跟踪与文件操作相关的系统调用。

        -e trace=process : 跟踪与进程控制相关的系统调用。


        -e trace=network : 网络相关

        -e tace=signal : 信号相关

        -e trace=ipc : 与进程间通信相关

        -e signal=set  : 跟踪指定的信号

        -e read=set : 输出从指定文件中读入的数据。

        -o : 将strace的输出写入指定的文件。


 

netstat命令:

           网络信息统计工具。打印本地网卡接口上的连接,路由表信息,网卡接口信息。

      

      常用的选项:

             -n  :  IP地址表示主机,数字表示端口。

             -a  : 包含监听socket.

             -t  : 显示TCP连接。

             -r :  显示路由信息

             -i  : 显示网卡接口的数据流量。

             -c : 每隔1s输出一次。

            -o : 显示socket定时器的信息。

            -p : 显示socket所属进程的PID和名字。




ifstat命令: 

    网络流量监测工具。

 

     常见选项:

        -a  : 监测所有网卡接口。

        -i  :  指定要监测的网卡接口。

        -t  :  输出信息加时间戳。

        -b  : 以Kbit/s为单位显示数据。

        delay :  采样间隔。

        count : 采样次数。


   例如:ifstat  -a  2  5


mpstat 命令:

    实时监测多处理器系统上每个cpu的使用情况。

        需要安装sysstat 包。

           用法:mpstat [-p {|all}] [interval][count]]


             -p  : 指定要监控的CPU号。

             all  : 监听所有的CPU

            interval : 采样间隔。

            count  :  采样次数。


       例如:#mpstat  -P  ALL  5  2

       

     输出信息:

          %usr :  除了nice值为负的进程,系统其他进程运行在用户空间的时间占CPU总运行时间的比例。

          %nice :  nice值为负的进程运行在用户空间的时间占CPU总运行时间的比例。

          %sys  :  系统上所有进程运行在内核空间的时间占CPU总运行时间的比例。


         %iowait  :  CPU等待磁盘操作的时间占CPU总运行时间的比例。

         %irq    :   CPU用于处理硬件中断的时间占CPU总运行时间的比例。

         %soft   :  CPU用于处理软件中断的时间占CPU总运行时间的比例。


         %steal    :  一个物理CPU可以包含一对虚拟CPU,

                 由超级管理程序管理。当超级管理程序在处理某个虚拟CPU时,

                 另外一个虚拟CPU则必须等待它处理完成才能运行。

                 等待时间就是steal时间。该字段表示steal时间占CPU总运行时间的比例。


          %guest  :  运行虚拟CPU的时间占CPU总运行时间的比例。

          %idle  :  系统空闲的时间占CPU总运行时间的比例。


         主要注意:%usr, %sys, %idle的变化。






系统性能工具:

    sar命令:

            分析系统性能的重要工具。

            可获取系统的CPU,运行队列,磁盘I/O,分页(交换区),内存,CPU中断,网络等性能数据。


        语法:

             sar [options] [-o filename] [interval [count]]


        选项含义:

             -A  :  显示系统所有资源设备(CPU,内存,磁盘) 的运行状况。

             -u  :  显示系统所有CPU在采样时间内的负载状态。

             -P: 显示当前系统中指定CPU的使用情况。


            -d: 显示所有硬盘设备在采样时间内的使用情况。

            -r : 显示系统内存在采样时间内的使用情况。

            -b: 显示缓冲区在采样时间内的使用情况。

            -v  :  显示进程,文件,节点和锁表状态。

    

           -n  显示网络运行状态。

              参数:DEV  : 显示网络接口信息。

                       EDEV : 显示网络错误的统计数据。

                       SOCK : 显示套接字信息。

                       FULL  : 显示前三参数的所有信息。


          -q  : 显示了运行队列的大小。

          -R  : 显示进程在采样时间内的活动情况。

          -y  : 显示终端设备在采样时间内的活动情况。


         -w  :  显示系统交换活动在采样时间内的状态。

         -o  filename, 将命令结果以二进制格式存放在文件中,filename是文件名。


         interval  :  表示采样间隔时间。

         count :  表示采样次数。默认值1.


       例如:

             查看系统CPU的整体负载负载状况。

               #sar   -u   3  5

    

         系统的CPU 从0开始。查看第二个CPU的运行负载。

        #sar  -P  1 3 5


   查看系统磁盘读写性能:

        #sar  -d 3 5


  查看系统内存使用情况,网络运行状态:

       #sar  -r  5  2

       #sar  -n  DEV  5 3


             #sar  -u  3  5 

               输出信息详解:

                  %user  :  用户进程消耗的CPU时间百分比。

            %nice :  运行正常进程所消耗的CPU时间百分比。

            %system  : 系统进程消耗的CPU时间百分比。

 

                  %iowait  :   I/O等待所占用的CPU时间百分比。


            %steal  : 内存不足时,pagein强制对不同的页面进行的steal操作。


            %idle  :   CPU处在空闲状态的时间百分比。


          

              可分开查询系统的每个CPU,统计每个CPU的 使用情况。

                #sar -P 0 3 5



iostat 命令:

           对系统的磁盘I/O操作进行监视。

          显示磁盘读写操作的统计信息。

          对系统整体情况进行分析。

          要安装sysstat的工具包。


   语法:

         iostat [-c | -d] [-k] [-t] [-x [device]] [interval [count]]


   选项含义:

          -c  :  显示CPU的使用情况。

          -d  : 显示磁盘的使用情况。

          -k  : 每秒以KB为单位显示数据。

          -t  : 打印出统计信息开始执行的时间。

          -x device  :  指定要统计的磁盘设备名称,默认为所有磁盘设备。


          interval  :  指定两次统计间隔的时间。

          count  : 按照"interval" 指定的时间间隔统计的次数。


   组合使用:

         查看系统磁盘的使用状况:

            #iostat -d 2 3

   输出内容详解:

       Blk_read/s  :  每秒读取的数据块数。

       Blk_wrtn/s  : 每秒写入的数据块数。

       Blk_read  :  读取的所有块数。

       Blk_wrtn :  写入的所有块数。



 iostat -x 组合提供了对每个磁盘的单独统计,默认是对所有磁盘进行统计。

     例如:iostat -x /dev/sda 2 3

       输出内容解释:

            rrqm/s  :  每秒进行合并的读操作数目。

            wrqm/s  :  每秒进行合并的写操作数目。

             r/s  :  每秒完成读I/O设备的次数。

             w/s :  每秒完成写I/O设备的次数。

            rsec/s  :  每秒读取的扇区数。

           wsec/s : 每秒写入的扇区数。


free 命令 :

           监控linxu内存使用状况。

    选项: 

        -m  :  以M为单位的内存使用情况。

        -s  :  指定的时间段内不断地监控内存的使用情况。


        -b :  以1024字节为单位显示内存使用情况。


  公式:

      可用内存/物理内存> 70% ,表示系统内存资源充足。


      可用内存/物理内存<20%时,系统内存资源紧缺。


      20%<可用内存/物理内存<70%时, 内存资源满足应用需求。




如有什么不对之处,敬请指正。




本文出自 “安然一笑” 博客,请务必保留此出处http://liyuanjie.blog.51cto.com/12877605/1959700

以上是关于系统监测和性能分析工具的主要内容,如果未能解决你的问题,请参考以下文章

Nmon命令行:Linux系统性能的监测利器

Perfmon - Windows 自带系统监测工具

Perfmon - Windows 自带系统监测工具(转)

7个杀手级的开源监测工具

Linux 性能监测工具总结

性能测试的工具