前段时间看到brendangregg的 Linux Performance Analysis and Tools PPT里面提到的nicstat,研究了下是个不错的东西,分享给大家。

nicstat is to network interfaces as “iostat” is to disks, or “prstat” is to processes.

nicstat原本是Solaris平台下显示网卡流量的工具,Tim Cook将它移植到linux平台,官方网站见这里。 相比netstat, 他有以下关键特性:

  • Reports bytes in & out as well as packets.

  • Normalizes these values to per-second rates.

  • Reports on all interfaces (while iterating)

  • Reports Utilization (rough calculation as of now)

  • Reports Saturation (also rough)

  • Prefixes statistics with the current time

    我们来体验下,首先安装之,源码在 这里 下, 目前最新的版本是1.92。

    解开后,由于这个版本默认是在32位linux下编译,所以需要改下Makefile.Linux:

    $ uname -r
    2.6.32-131.21.1.tb477.el6.x86_64
    $ diff Makefile.Linux64 Makefile.Linux
    17c17
    < CFLAGS =      $(COPT) -m32
    ---
    > CFLAGS =      $(COPT)$ sudo make -f Makefile.Linux install
    sudo install -o root -g root -m 4511 `./nicstat.sh --bin-name` /usr/local/bin/nicstat
    sudo install -o bin -g bin -m 555 enicstat /usr/local/bin
    sudo install -o bin -g bin -m 444 nicstat.1 /usr/local/share/man/man1/nicstat.1

    enicstat就安装好可以使用了。

    使用文档在这里: man nicstat

    由于在linux下需要获取网卡的speed等信息,需要以特权用户运行。

    $ sudo enicstat -l
    Int      Loopback   Mbit/s Duplex State
    lo            Yes        -   unkn    up
    eth0           No     1000   full    up
    bond0          No        0   unkn    up$ sudo enicstat Time      Int   rKB/s   wKB/s   rPk/s   wPk/s    rAvs    wAvs %Util    Sat
    13:04:10       lo   161.1   161.1   489.2   489.2   337.3   337.3  0.00   0.00
    13:04:10     eth0   601.9   589.1  1868.1  1894.1   330.0   318.5  0.98   0.00
    13:04:10    bond0   601.9   589.1  1868.1  1894.1   330.0   318.5  0.00   0.00

    上面很特色的一个选项就是网卡的Util(利用率)以及Saturation(This the number of errors/second seen for the  interface)在实践中用途挺大的。

    通过strace和源码进行简单的分析:

    open(“/proc/net/dev”, O_RDONLY)         = 3

    open(“/proc/net/snmp”, O_RDONLY)        = 5

    open(“/proc/net/netstat”, O_RDONLY)     = 6

    open(“/proc/uptime”, O_RDONLY)          = 9

    大部分网卡相关的统计信息是从上面3个文件获取到的,其中snmp文件提供了tcp和udp的统计信息。

    默认统计信息是以KB为单位,-M选项可以更改为以M为单位,演习如下:

    $ sudo enicstat -MTime      Int   rMbps   wMbps   rPk/s   wPk/s    rAvs    wAvs %Util    Sat
    13:14:51       lo    1.26    1.26   489.1   489.1   337.3   337.3  0.00   0.00
    13:14:51     eth0    4.70    4.60  1868.0  1894.0   330.0   318.5  0.98   0.00
    13:14:51    bond0    4.70    4.60  1868.0  1894.0   330.0   318.5  0.00   0.00

    nicstat还提供了tcp链接外联和内联的个数,重置,Drops信息还有包重传率等信息,这些信息对于诊断tcp问题挺有用的。

    $ sudo enicstat -t
    13:09:40    InKB   OutKB   InSeg  OutSeg Reset  AttF %ReTX InConn OutCon Drops
    TCP         0.00    0.00  2123.7  2251.7  1.84  0.79 0.000   7.16   2.95  0.00

    最后需要注意的是, 解读输出信息的时候:

    NOTES

    On Linux, the NoCP, Defer, TCP InKB, and TCP OutKB statistics are always reported as zero.

    The way that saturation is reported is a best effort, as there is no standardized  naming  to  capture

    all  errors related to an interface’s inability to receive or transmit a packet.  Monitoring %Util and

    packet rates, along with an understanding of the specific NICs may be more useful in  judging  whether

    you are nearing saturation.

nicstat-网络流量统计利器相关推荐

  1. Linux 网络流量监控利器 iftop 中文入门指南

    iftop 是什么 在 Linux 系统下即时监控服务器的网络带宽使用情况,有很多工具,比如 iptraf.nethogs 等等,但是推荐使用小巧但功能很强大的 iftop 工具. iftop 是 L ...

  2. php怎么统计流量,PHP学习笔记:php网络流量统计系统

    PHP学习笔记:php网络流量统计系统 说明:代码来源<PHP和MySQL Web应用开发>一书,还有就是代码有些是经过修改的,经过我的测验全部都可以用. 这里面ip地址显示的正常的,我电 ...

  3. 【总结】一些网络流量统计的网站及工具

    DU METER V3.06 Build 192 汉化版 软件大小:924 KB 软件类别:网络工具 / 网络监测 运行环境:WinNet, WinXP, Win2K, NT, WinME, Win9 ...

  4. 网络流量分析利器-可视化网络-netflow【6】-生产网流量监控架构设计

    拓扑图 监控点选择 监控点的选择主要取决于要监控的数据流,如果将监控点放在公网口,则捕获的地址均为公网地址,如果监控点部署在负载均衡内网口,则捕获的数据有公网地址和内网地址两种. 选在公网口,此时要注 ...

  5. 网络流量统计using ADB

    /proc/net/xt_qtaguid/stats 基本覆盖目前所有机型且统计流量全面 adb shell cat /proc/net/xt_qtaguid/stats | grep (uid#) ...

  6. linux 进程流量统计,Linux进程网络流量统计方法及实现

    1 前言 在某些应用安全场景须要结合进程级网络链接.流入流出流量等数据直接分析出进程的异常.例如,在内网主机上是否存在持续恶意外传敏感数据的现象.在网络监控时发现服务器大量带宽被占用但不清楚由系统具体 ...

  7. linux网络流量统计,linux下网络流量监控统计

    最近在做虚拟化迁入评估,其中很重要的一项就是流量的问题.现在部署一个工具和脚本用来统计服务器的网络流量. linux下监控流量的工具有很多,比如ifstat.iftop等. 个人还是喜欢ifstat, ...

  8. ifstat 网络流量统计工具

    ifstat---实时报告接口状态,是一个网络流量监测程序,能查看网卡的流出和流入的字节. 简单描述:ifstat就像iostat/vmstat描述其它的系统状况一样,是一个统计网络接口活动状态的工具 ...

  9. Linux进程网络流量统计方法及实现

    1 前言 在某些应用安全场景需要结合进程级网络连接.流入流出流量等数据直接分析出进程的异常.例如,在内网主机上是否存在持续恶意外传敏感数据的现象.在网络监控时发现服务器大量带宽被占用但不清楚由系统具体 ...

  10. java 网络流量统计_IP数据包的流量统计(JAVA语言)

    如果不显示图片,或者出现排版错误,抽风,崩坏,节操丢失等一系列不正常情况,请点击下面链接观看,点我 IP数据包的流量统计(JAVA语言) 要求:编制程序,监控网络,捕获一段时间内网络上的IP数据包,按 ...

最新文章

  1. OpenCASCADE:使用扩展数据交换 XDE之特性
  2. PHP中没用的验证码
  3. /hbase/WALs/desktop,xxxxxxxx-splitting is non empty: Directory is not empty
  4. mockito接口没法赋值_Mockito:无法实例化@InjectMocks字段:类型是接口
  5. 微软全新Chromium版Edge浏览器下载
  6. cocos2d-x中使用Http
  7. 有长度要求的区间最大值
  8. GB28181协议——摄像机语音对讲
  9. 去水印程序源码大全源码
  10. 关于“嵌入式系统设计师”的了结。
  11. 宇枫资本上班族理财的方法
  12. Redis在实际项目中的应用
  13. PostgreSQL更改表格的owner
  14. python计算增长率函数_python – 基于增长率优化值的迭代计算
  15. 《用户体验要素——以用户为中心的产品设计》读书笔记
  16. [pytorch] monai Vit 网络 图文分析
  17. 过零检测电路原理与作用 可控整流
  18. 虚化背景(深度映射篇)
  19. 电脑各修改项【自用】
  20. 关于滑动时对背景动态高斯模糊的自定义控件

热门文章

  1. 键盘切换不出中文输入法的解决方法
  2. 几种方式加速网页视频播放速度
  3. Progressive Domain Adaptation from Source Pre-trained Model
  4. 手把手教你单片机HAL库开发——中断,通信、串口
  5. 什么是慢查询?如何优化?
  6. MAC 清除 DNS 缓存
  7. Ubuntu系统中清理DNS缓存
  8. QQ群推广最大化营销效果分析
  9. 工作流与BPM的区别
  10. python ansible