iftop—實時流量監控工具

  • 2019 年 10 月 6 日
  • 筆記

一、iftop是什麼?

iftop是類似於top的實時流量監控工具。

官方網站:http://www.ex-parrot.com/~pdw/iftop/

二、iftop有什麼用?

iftop可以用來監控網卡的實時流量(可以指定網段)、反向解析IP、顯示埠資訊等,詳細的將會在後面的使用參數中說明。

三、安裝iftop

安裝方法1、編譯安裝

如果採用編譯安裝可以到iftop官網下載最新的源碼包。

安裝前需要已經安裝好基本的編譯所需的環境,比如make、gcc、autoconf等。安裝iftop還需要安裝libpcap和libcurses。

CentOS上安裝所需依賴包:

yum install flex byacc libpcap ncurses ncurses-devel libpcap-devel

Debian上安裝所需依賴包:

apt-get install flex byacc libpcap0.8 libncurses5

下載iftop

wget http://www.ex-parrot.com/pdw/iftop/download/iftop-0.17.tar.gz

tar zxvf iftop-0.17.tar.gz

cd iftop-0.17

./configure

make && make install

安裝方法2:(懶人辦法,最簡單)

直接省略上面的步驟

https://www.vpser.net/manage/centos-rhel-linux-third-party-source-epel.html 這個教程安裝好EPEL,直接yum install iftop

Debian系統 運行:apt-get install iftop

四、運行iftop

直接運行: iftop

效果如下圖:

五、相關參數及說明

1、iftop介面相關說明

介面上面顯示的是類似刻度尺的刻度範圍,為顯示流量圖形的長條作標尺用的。

中間的<= =>這兩個左右箭頭,表示的是流量的方向。

TX:發送流量

RX:接收流量

TOTAL:總流量

Cumm:運行iftop到目前時間的總流量

peak:流量峰值

rates:分別表示過去 2s 10s 40s 的平均流量

2、iftop相關參數

常用的參數

-i設定監測的網卡,如:# iftop -i eth1

-B 以bytes為單位顯示流量(默認是bits),如:# iftop -B

-n使host資訊默認直接都顯示IP,如:# iftop -n

-N使埠資訊默認直接都顯示埠號,如: # iftop -N

-F顯示特定網段的進出流量,如# iftop -F 10.10.1.0/24或# iftop -F 10.10.1.0/255.255.255.0

-h(display this message),幫助,顯示參數資訊

-p使用這個參數後,中間的列表顯示的本地主機資訊,出現了本機以外的IP資訊;

-b使流量圖形條默認就顯示;

-f這個暫時還不太會用,過濾計算包用的;

-P使host資訊及埠資訊默認就都顯示;

-m設置介面最上邊的刻度的最大值,刻度分五個大段顯示,例:# iftop -m 100M

進入iftop畫面後的一些操作命令(注意大小寫)

按h切換是否顯示幫助;

按n切換顯示本機的IP或主機名;

按s切換是否顯示本機的host資訊;

按d切換是否顯示遠端目標主機的host資訊;

按t切換顯示格式為2行/1行/只顯示發送流量/只顯示接收流量;

按N切換顯示埠號或埠服務名稱;

按S切換是否顯示本機的埠資訊;

按D切換是否顯示遠端目標主機的埠資訊;

按p切換是否顯示埠資訊;

按P切換暫停/繼續顯示;

按b切換是否顯示平均流量圖形條;

按B切換計算2秒或10秒或40秒內的平均流量;

按T切換是否顯示每個連接的總流量;

按l打開螢幕過濾功能,輸入要過濾的字元,比如ip,按回車後,螢幕就只顯示這個IP相關的流量資訊;

按L切換顯示畫面上邊的刻度;刻度不同,流量圖形條會有變化;

按j或按k可以向上或向下滾動螢幕顯示的連接記錄;

按1或2或3可以根據右側顯示的三列流量數據進行排序;

按<根據左邊的本機名或IP排序;

按>根據遠端目標主機的主機名或IP排序;

按o切換是否固定只顯示當前的連接;

按f可以編輯過濾程式碼,這是翻譯過來的說法,我還沒用過這個!

按!可以使用shell命令,這個沒用過!沒搞明白啥命令在這好用呢!

按q退出監控。

4.2 iftop的輸出從整體上可以分為三大部分:

第一部分是iftop輸出中最上面的一行,此行是流量刻度,用於顯示網卡頻寬流量;

第二部分是iftop輸出中最大的一個部分,此部分又分為左中右三列,左列和中列記錄了哪些IP或主機正在本機的網路進行連接。其中中列的 => 代表發送數據,<=代表接收數據,通過這個指示箭頭可以很清晰的知道兩個IP之間的通訊情況。最右列又分為三個小列,這些實時參數分別表示外部IP連接到本機2s 10s和40s的平均流量。另外這個部分還有一個流量圖形條,流量圖形條是對流量大小的動態展示,以第一部分中的流量刻度為基準。通過這個流量圖形條可以很方便的看出那個IP的流量最大,今兒迅速定位網路中可能出現的流量問題;

第三部分位於iftop輸出的最下面,可以分為三行,其中TX表示發送的數據,RX表示接受的數據,TOTAL表示發送和接收的全部流量。與這三行對應的有三列,其中cum列表示從運行iftop到目前的發送,接收和總數據流量;peak列表示發送,接收以及總的流量峰值;rates列表示過去2s 10s和40s的平均流量值;

4.3iftop使用的參數(iftop -h)

參數 含義

-i 指定需要檢測的網卡

-n 將輸出的主機資訊都通過IP顯示,不進行DNS解析

-B 將輸出以byte為單位顯示網卡流量,默認是bit

-p 以混雜模式運行iftop,此時iftop可以用作網路嗅探器

-N 只顯示連接埠號,不顯示埠對應的服務名稱

-P 顯示主機以及埠資訊

-F 顯示特定網段的網卡進出流量 如iftop -F 192.168.85.0/24

-m 設置輸出介面中最上面的流量刻度最大值,流量刻度分5個大段顯示 如iftop -m limit

-f 使用篩選碼選擇數據包來計數 如iftop -f filter code

-b 不顯示流量圖形條

-c 指定可選的配置文件 如iftop -c config file

-t 使用不帶ncurses的文本介面,

如下兩個是只和-t一起用的:

-s num num秒後列印一次文本輸出然後退出

-L num 列印的行數

效果如圖:

4.4交互操作

再進入iftop檢測介面後按h鍵即可進入交互選項介面,如圖

交互參數主要分為四個部分,分別為一般參數,主機參數,埠顯示參數和輸出排序參數;

一般參數:

P 切換暫停/繼續顯示

h 在交互介面/狀態輸出介面之間切換

b 切換是否顯示平均流量圖形條

B 切換顯示2s 10s和40s內的平均流量

T 切換是否顯示每個連接的總流量

j/k 向上或向下滾動螢幕顯示當前的連接資訊

f 編輯篩選碼

l 打開iftop輸出過濾功能 ,如輸入要顯示的IP按回車鍵後螢幕就只顯示與這個IP相關的流量資訊

L 切換顯示流量刻度範圍,刻度不同,流量圖形條也會不同

q 退出iftop

主機參數:

n 使iftop輸出結果以IP或主機名的方式顯示

s 切換是否顯示源主機資訊

d 切換是否顯示遠端目標主機資訊

t 切換輸出模式

埠顯示參數:

N 切換顯示埠號/埠號對應服務名稱

S 切換是否顯示本地源主機的埠資訊

D 切換是否顯示遠端目標主機的埠資訊

p 切換是否顯示埠資訊

輸出排序參數:

1/2/3 通過第一列/第二列/第三列排序

< 根據左邊的本地主機名或IP地址進行排序

> 根據遠端目標主機的主機名或IP地址進行排序

o 切換是否固定顯示當前的連接

補充:如何將iftop的輸出導出到文本中呢?

iftop的man手冊中-t選項說可以將輸出定向到標準輸出中,可是試了不行,也不知道如何做。

-t text output mode

Use text interface without ncurses and print the output to STDOUT.

但是找到了一個可以實現的方法:

nohup iftop -i eth0 > /filename 2>&1 &

六、常見問題

1、make: yacc: Command not found

make: *** [grammar.c] Error 127

解決方法:apt-get install byacc / yum install byacc

2、configure: error: Curses! Foiled again!

(Can't find a curses library supporting mvchgat.)

Consider installing ncurses.

解決方法:apt-get install libncurses5-dev / yum install ncurses-devel

關於運維學習、分享、交流,筆者開通了微信公眾號【運維貓】,感興趣的朋友可以關注下,歡迎加入,建立屬於我們自己的小圈子,一起學運維知識。