NetHogs監控Linux/Centos的每個進程流量

有很多適用於Linux系統的開源網絡監視工具。比如說,你可以用命令iftop來檢查帶寬使用情況。netstat用來查看接口統計報告,還有top監控系統當前運行進程。但是如果你想要找一個能夠按進程實時統計網絡帶寬利用率的工具,那麼NetHogs值得一看。

【背景】在日常運維環境中,我們肯定會遇到以下這種需求:

1、網絡流量異常,不知道是哪個程序的流量爆漲?

2、日常需要監控網絡實時的流量進去數據,通常寫腳本很麻煩。

NetHogs是一個開源的命令行工具(類似於Linux的top命令),用來按進程或程序實時統計網絡帶寬使用率。

NetHogs項目官方介紹:“NetHogs是一個小型的net top工具,不像大多數工具那樣拖慢每個協議或者是每個子網的速度而是按照進程進行帶寬分組。NetHogs不需要依賴載入某個特殊的內核模塊。如果發生了網絡阻塞你可以啓動NetHogs立即看到哪個PID造成的這種狀況。這樣就很容易找出哪個程序跑飛了然後突然佔用你的帶寬。”

本文爲你介紹如何在Linux/Centos操作系統下如何安裝和使用NetHogs按進程監控網絡帶寬使用率。

Centos6

可以使用yum安裝命令如下:

nethogs屬於epel裏面軟件包,如果本機沒有安裝epel需要先安裝epel,命令如下:

#rpm -Uvh http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm

#yum -y install libpcap nethogs

Centos7

安裝依賴包

[root@rs-server ~]# yum install libpcap libpcap-devel -y
[root@rs-server ~]# yum -y install epel-release
安裝nethogs

[root@rs-server ~]# cat /etc/redhat-release 
CentOS Linux release 7.4.1708 (Core) 
[root@rs-server ~]# uname -r
3.10.0-693.el7.x86_64
[root@rs-server ~]# yum install nethogs -y

命令用法:直接在命令行終端輸入nethogs  默認監聽eth0網卡的信息 而且是每秒刷新一次。

[root@rs-server ~]# nethogs -help
usage: nethogs [-V] [-h] [-b] [-d seconds] [-v mode] [-c count] [-t] [-p] [-s] [device [device [device ...]]]
-V : prints version.
-h : prints this help.
-b : bughunt mode - implies tracemode.
-d : delay for update refresh rate in seconds. default is 1.
-v : view mode (0 = KB/s, 1 = total KB, 2 = total B, 3 = total MB). default is 0.
-c : number of updates. default is 0 (unlimited).
-t : tracemode.
-p : sniff in promiscious mode (not recommended).
-s : sort output by sent column.
-a : monitor all devices, even loopback/stopped ones.
device : device(s) to monitor. default is all interfaces up and running excluding loopback

When nethogs is running, press:
q: quit
s: sort by SENT traffic
r: sort by RECEIVE traffic
m: switch between total (KB, B, MB) and KB/s mode

Nethogs命令介紹

以下是NetHogs的一些交互命令(鍵盤快捷鍵)

  • m : 修改單位

  • r : 按流量排序

  • s : 按發送流量排序

  • q : 退出命令提示符

參數介紹:

  • -V : 顯示版本信息,注意是大寫字母V.  

  • -v:切換顯示單位,默認是默認是KB/s(0表示 KB/s,1表示KB,2表示B,3表示MB)

  • -c:檢測次數(後面直接跟數字)

  • -a:檢測所有的設備

  • -d : 延遲更新刷新速率,以秒爲單位。默認值爲 1.  

  • -t : 跟蹤模式.  

  • -b : bug 狩獵模式 — — 意味着跟蹤模式.  

  • -p : 混合模式(不推薦).  

  • device: 要監視的設備名稱. 默認爲 eth0  

案例:

#nethogs eth0 -d 5  //這個命令意思是監控網卡eth0的帶寬佔用情況,每五秒刷新一次

如果要同時監視eth0和eth1接口,使用以下命令即可:

#nethogs eth0 eth1

如果是連接了vpn的話可以 eth0換成vpn那塊網卡設備即可。

交互命令

以下是NetHogs的一些交互命令(鍵盤快捷鍵)

  • m : 修改單位
  • r : 按流量排序
  • s : 按發送流量排序
  • q : 退出命令提示符

 

【介紹完細節流量之後,在介紹一個總的進出流量查看工具】

nload介紹

nload是一個實時監控網絡流量和帶寬使用情況,展示進出的流量情況,不僅有數值,也可以有動態圖展示。

 

nload 安裝

[root@rs-server ~]# yum -y install epel-release

nload安裝

[root@rs-server ~]# yum install nload -y

nload如果直接輸入這個命令默認只查看第一個網絡的流量進出情況,一般是在nload後面指定網絡,可以指定多個網絡。

 

nload操作介紹

nload 默認分爲上下兩塊:

  • 上半部分是:Incoming也就是進入網卡的流量,

  • 下半部分是:Outgoing,也就是從這塊網卡出去的流量,

每部分都有當前流量(Curr),

平均流量(Avg),

最小流量(Min),

最大流量(Max),

總和流量(Ttl)這幾個部分,看起來還是蠻直觀的。

 

nload默認的是eth0網卡,如果你想監測eth1網卡的流量
#nload eth1

參數介紹

  • -a:全部數據的刷新時間週期,單位是秒,默認是300.

  • -i:進入網卡的流量圖的顯示比例最大值設置,默認10240 kBit/s.

  • -m:不顯示流量圖,只顯示統計數據。

  • -o:出去網卡的流量圖的顯示比例最大值設置,默認10240 kBit/s.

  • -t:顯示數據的刷新時間間隔,單位是毫秒,默認500。

  • -u:設置右邊Curr、Avg、Min、Max的數據單位,默認是自動變的.注意大小寫單位不同!

  • h|b|k|m|g h: auto, b: Bit/s, k: kBit/s, m: MBit/s etc.

  • H|B|K|M|G H: auto, B: Byte/s, K: kByte/s, M: MByte/s etc.

  • -U:設置右邊Ttl的數據單位,默認是自動變的.注意大小寫單位不同(與-u相同)!

  • Devices:自定義監控的網卡,默認是全部監控的,使用左右鍵切換。

界面操作

  • 上下方向鍵、左右方向鍵、enter鍵或者tab鍵都就可以切換查看多個網卡的流量情況

  • 按 F2 顯示選項窗口。

  • 按 F5 將當前設置保存到用戶配置文件。

  • 按 F6 從配置文件重新加載設置。

  • 按 q 或者 Ctrl+C 退出 nload。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章