五款好玩又好用的Linux網絡測試和監(jiān)控工具
譯文【51CTO精選譯文】在這篇介紹幾款Linux網絡測試實用工具的文章中,我們使用Bandwidthd、Speedometer、Nethogs、Darkstat和iperf,跟蹤帶寬使用情況和網絡速度、查找網絡資源消耗大戶,以及測試性能。
Bandwidthd
Bandwidthd是一款好玩又好用的應用程序,雖然自2005年以來就沒有更新過,但是它仍很管用,至少在本人的Kubuntu系統(tǒng)上是這樣。它以色彩鮮艷的漂亮圖形顯示了你的進出帶寬使用情況,并且在網頁上按日、周、月和年加以統(tǒng)計。所以,你還需要Apache服務器,或另外某臺HTTP服務器??梢员O(jiān)控單單一臺電腦,也可以監(jiān)控局域網上的每個人。如果你需要關注帶寬限量,這款優(yōu)秀的應用程序可用于跟蹤每月帶寬使用情況。
圖1:漂亮的Bandwidthd圖形
Bandwidthd幾乎沒有任何說明文檔。man bandwidthd列出了其所有配置文件和目錄。它的Sourceforge頁面上更是內容***?,F(xiàn)在有兩個版本:bandwidthd和bandwidthd-pgsql。Bandwidthd每隔150秒生成靜態(tài)HTML頁面,而bandwidthd-pgsql在動態(tài)PHP頁面上顯示了圖形和數據。網頁上寫道"兩個版本的可視化輸出結果很相似,但數據庫驅動的系統(tǒng)允許用戶進行搜索、過濾、監(jiān)測多個傳感器和創(chuàng)建自定義報表。"我認為,如果你想要搜索、過濾、監(jiān)測多個傳感器或創(chuàng)建自定義報表,就得改動PHP文件。在我的系統(tǒng)上安裝很容易,這歸功于Debian和Ubuntu程序包維護者。它創(chuàng)建了Apache配置,并安裝了PostgreSQL,然后我要做的就是打開Web瀏覽器,瀏覽到http://localhost/bandwidthd,除了在配置文件中外,該網址沒有記錄在任何地方,所以你***在這里聽說該網址。
相關鏈接:http://bandwidthd.sourceforge.net/
Speedometer
Speedometer在控制臺上顯示了實時圖形(所以你不需要Web服務器),顯示了數據在你的網絡連接上傳輸有多快,它還可以解答"我的硬盤速度有多快"這一問題。最簡單的用法顯示了每秒收到或傳輸的字節(jié)數。這被稱為分路器(tap):
- $ speedometer -r eth0
你可以通過創(chuàng)建兩個分路器來監(jiān)測雙向流量:
- $ speedometer -r eth0 -t eth0
默認是堆疊分路器。-c選項而是制作了漂亮的列,-k 256顯示了256種顏色,而不是默認的16種顏色,如圖2所示。
- $ speedometer -r eth0 -c -t eth0
圖2:Speedometer以256種顏色和多列跟蹤進出的流量
你可以通過使用dd,創(chuàng)建一個1GB大小的原始文件,測量硬盤的原始寫入速度,然后使用Speedometer,測量創(chuàng)建該原件文件需要多長時間:
- $ dd bs=1000000 count=1000 if=/dev/zero of=testfile & speedometer testfile
更改count值,即可生成不同大小的文件;比如說,count=2000創(chuàng)建了一個2GB大小的文件。你還可以試著更改不同的數據塊大?。╞s),看看這有沒有什么區(qū)別。記得完成后,務必要刪除testfile,除非你喜歡任由毫無用處的大文件躺在那里。
相關鏈接:http://www.linux.com/speedometer
Nethogs
Nethogs是一款簡單的控制臺應用程序,可顯示每個進程的帶寬,所以你可以馬上看到誰在耗用網絡資源。最簡單的調用指定了你的網絡接口,然后它既顯示了入站數據包,又顯示了出站數據包:
- $ sudo nethogs eth0
- NetHogs version 0.8.0
- PID USER PROGRAM DEV SENT RECEIVED
- 1703 carla ssh eth0 9702.096 381.697 KB/sec
- 5734 www-data /usr/bin/fie eth0 1.302 59.301 KB/sec
- 13113 carla ..lib/firefox/firefox eth0 0.021 0.023 KB/sec
- 2462 carla ..oobar/lib/foobar eth0 0.000 0.000 KB/sec
- ? root unknown TCP 0.000 0.000 KB/sec
- TOTAL 9703.419 441.021 KB/sec
使用-r選項顯示單單收到的數據包,使用-s選項查看單單發(fā)送的數據包。
相關鏈接:http://nethogs.sourceforge.net/
Darkstat
Darkstat是另一款基于Web的網絡監(jiān)控工具,不過它包括自己的嵌入式HTTP服務器,所以你就不需要Apache了。以網絡接口名稱作為唯一的選項來啟動它:
- $ sudo darkstat -i eth0
然后打開Web瀏覽器,瀏覽到http://localhost:667,你會看到類似圖3的結果。
圖3:Darkstat的默認顯示畫面
點擊自動重裝按鈕,即可讓它實時更新。Hosts(主機)選項卡顯示了你與相連接、你已連接了多長時間,以及你們之間已傳送了多少數據(以字節(jié)數為單位)。
你可以將Darkstat作為守護程序來運行,并且讓它在系統(tǒng)啟動時開啟。這一步怎么做取決于你的Linux發(fā)行版以及所使用的初始化系統(tǒng)(Upstart、systemd、sysvinit和BSD init)。這方面你得自己搞清楚。
相關鏈接:http://unix4lyfe.org/darkstat/
iperf
緦的讀者肯定一直在想"怎么沒有iperf?"。好了,現(xiàn)在就來說說iperf。iperf可報告帶寬、延遲抖動和數據報丟失等方面的情況。換句話說,它可以測試網絡鏈路質量,而鏈路質量對傳送音樂、視頻和視頻會話等流媒體來說很重要。你需要在想要測試的那條鏈路的兩頭都要安裝iperf:在這個例子中,兩頭分別是Studio和Uberpc。然后在一個主機上,在服務器模式下開啟iperf;在另一個主機上,在客戶機模式下運行iperf。要注意:在客戶機上,你必須為服務器命名。下面是運行測試的最簡單方式:
- carla@studio:~$ iperf -s
- terry@uberpc:~$ iperf -c studio
- carla@studio:~$ iperf -s
- ------------------------------------------------------------
- Server listening on TCP port 5001
- TCP window size: 85.3 KByte (default)
- ------------------------------------------------------------
- [4] local 192.168.1.132 port 5001 connected with 192.168.1.182 port 32865
- [ID] Interval Transfer Bandwidth
- [4] 0.0-10.0 sec 1.09 GBytes 938 Mbits/sec
- terry@uberpc:~$ iperf -c studio
- ------------------------------------------------------------
- Client connecting to studio, TCP port 5001
- TCP window size: 22.9 KByte (default)
- ------------------------------------------------------------
- [3] local 192.168.1.182 port 32865 connected with 192.168.1.132 port 5001
- [ID] Interval Transfer Bandwidth
- [3] 0.0-10.0 sec 1.09 GBytes 938 Mbits/sec
這是單向的,即從服務器到客戶機。你可以從客戶機端測試雙向性能:
- terry@uberpc:~$ iperf -c studio -d
- ------------------------------------------------------------
- Server listening on TCP port 5001
- TCP window size: 85.3 KByte (default)
- ------------------------------------------------------------
- ------------------------------------------------------------
- Client connecting to studio, TCP port 5001
- TCP window size: 54.8 KByte (default)
- ------------------------------------------------------------
- [5] local 192.168.1.182 port 32980 connected with 192.168.1.132 port 5001
- [4] local 192.168.1.182 port 5001 connected with 192.168.1.132 port 47130
- [ID] Interval Transfer Bandwidth
- [5] 0.0-10.0 sec 1020 MBytes 855 Mbits/sec
- [4] 0.0-10.0 sec 1.07 GBytes 920 Mbits/sec
上述那些就千兆以太網而言速度不錯,接近理論***速率,所以這告訴我們物理網絡處于良好狀態(tài)。當然,實際性能會有所下降,因為網絡開銷大于這個簡單測試?,F(xiàn)在,不妨看一下延遲抖動。使用Ctrl+c組合鍵,停止服務器運行,然后用iperf -su重啟服務器。在客戶機上,試一試:
- $ iperf -c studio -ub 900m
-b 900m意味著,以每秒900兆比特的速度運行測試,所以你需要針對自己的網絡調整這個參數,并且測試不同的速度。良好的運行速度如同這樣:
- [ ID] Interval Transfer Bandwidth Jitter Lost/Total
- Datagrams
- [ 3] 0.0-10.0 sec 958 MBytes 803 Mbits/sec 0.013 ms 1780/684936
- (0.26%)
- [ 3] 0.0-10.0 sec 1 datagrams received out-of-order
0.013毫秒抖動是它能得到的最短延遲。超過1000毫秒,就會干擾音頻和視頻流傳送。0.26%的數據報丟失率也很低。如果丟失率更高,那樣數據包需要重新發(fā)送時,會導致更長的延遲。
有一個新版本的iperf,那就是iperf 3.0.1(http://code.google.com/p/iperf/)。有朝一日,這應該會取代iperf2。新版本是從頭開始改寫的,所以它非常整潔,并不拙劣,它包括一個可用于其他程序的庫版本。新版本仍是個新興產品,所以預計會有不盡如人意的地方。
相關鏈接:http://iperf.sourceforge.net/
原文鏈接:http://www.linux.com/learn/tutorials/765381-five-funny-little-linux-network-testers-and-monitors