在日常運維環境中,我們肯定會遇到以下這種需求:
1、網絡流量異常,不知道是哪個程序的流量爆漲?
2、日常需要監控網絡實時的流量進去數據
基於這兩點需求,民工哥今天給大家分享兩個很強大的命令工具:
-
Nethogs
-
Nload
1.Nethogs
1.1 Nethogs介紹
NetHogs是一個開源的命令行工具(類似於Linux的top命令),用來按進程或程序實時統計網絡帶寬使用率。
NetHogs是一個小型的net top工具,不像大多數工具那樣拖慢每個協議或者是每個子網的速度而是按照進程進行帶寬分組。NetHogs不需要依賴載入某個特殊的內核模塊。如果發生了網絡阻塞你可以啟動NetHogs立即看到哪個PID造成的這種狀況。這樣就很容易找出哪個程序跑飛了然后突然占用你的帶寬。
1.2 Nethogs安裝
安裝依賴包
[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
[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 -help出現幫助信息,表明安裝成功,非常的簡單快速。
1.3 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
1.4 Nethogs實踐
[root@rs-server ~]# nethogs
Ethernet link detected
Ethernet link detected
Waiting for first packet to arrive (see sourceforge.net bug 1019381)
NetHogs version 0.8.5
PID USER PROGRAM DEV SENT RECEIVED
1023 root sshd: root@pts/0 ens33 0.166 0.059 KB/sec
? root unknown TCP 0.000 0.000 KB/sec
TOTAL 0.166 0.059 KB/sec
直接使用nethogs命令的顯示界面如上
[root@rs-server ~]# nethogs -d 2 -v 3 -c 5 -a
Ethernet link detected
Ethernet link detected
Ethernet link detected
Waiting for first packet to arrive (see sourceforge.net bug 1019381)
NetHogs version 0.8.5
PID USER PROGRAM DEV SENT RECEIVED
1023 root sshd: root@pts/0 ens33 0.001 0.000 MB
? root unknown TCP 0.000 0.000 MB
TOTAL 0.001 0.000 MB
nethogs命令功能還是挺強大的,抓緊時間練習一下吧!!
2.Nload
2.1 nload介紹
nload是一個實時監控網絡流量和帶寬使用情況,展示進出的流量情況,不僅有數值,也可以有動態圖展示。
2.2 nload 安裝
[root@rs-server ~]# yum -y install epel-release
nload安裝
[root@rs-server ~]# yum install nload -y
nload如果直接輸入這個命令默認只查看第一個網絡的流量進出情況,一般是在nload后面指定網絡,可以指定多個網絡。
2.3 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。
2.4 nload實踐
Device ens33 [192.168.1.100] (1/1):
============================================================================
Incoming:
Curr: 936.00 Bit/s
Avg: 1.27 kBit/s
Min: 840.00 Bit/s
Max: 6.26 kBit/s
Ttl: 8.78 MByteOutgoing:
Curr: 7.70 kBit/s
Avg: 7.70 kBit/s
Min: 3.97 kBit/s
Max: 10.49 kBit/s
Ttl: 299.35 kByte
更多相關的參數與操作,大家可以自己練習一下。