亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

shell編程實戰之如何監控網卡流量

發布時間:2020-09-22 09:20:14 來源:億速云 閱讀:143 作者:小新 欄目:建站服務器

這篇文章將為大家詳細講解有關shell編程實戰之如何監控網卡流量,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

最近客戶的網站出現卡慢現象,通過檢查,出問題是原因是因為帶寬吃緊,所以讓客戶將服務器帶寬從原本的2M增加到4M的帶寬,網站速度一下就提升了。那么如何監控網卡流量情況,linux有許多命令可以查看。比如iftop,sar等等。

這里,我想寫一個監控網卡流量情況的腳本。統計每一分鐘的網卡流量情況,輸入到指定文件中。可以使用sar -n DEV 1 59查看一分鐘內網卡平均流量。

此腳本的核心是獲取1分鐘內網卡的平均流量。我們來看看sar這個命令會輸出哪些信息吧。

# sar -n DEV 1 59
Linux 4.18.0-80.11.2.el8_0.x86_64 (30gk.com)  09/20/2020  _x86_64_ (4 CPU)
11:25:25 AM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s   %ifutil
11:25:26 AM      eth0     16.00     11.00      1.26      1.38      0.00      0.00      0.00      0.00
11:25:26 AM        lo     12.00     12.00      4.77      4.77      0.00      0.00      0.00      0.00
11:25:26 AM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s   %ifutil
11:25:27 AM      eth0     18.00     23.00      2.98     28.85      0.00      0.00      0.00      0.00
11:25:27 AM        lo     12.00     12.00      4.77      4.77      0.00      0.00      0.00      0.00
……
Average:        IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s   %ifutil
Average:         eth0      8.56     12.59      1.07      7.05      0.00      0.00      0.00      0.00
Average:           lo     12.20     12.20      4.79      4.79      0.00      0.00      0.00      0.00

我們需要的信息是AVERAGE: eth0這行。rxkb/s表示網卡每秒接受的字節數,rxkb/s表示每秒發送的字節數,他們的單位都是kb。我們待會要將它轉換為kbit/s,因為日常習慣用kbit/s表示網絡帶寬使用情況。

然后,我們需要過濾其他不需要的行,使用grep命令可以輕松辦到。首先grep過濾掉所有不含Average的行,然后過濾不含eth0的行。

# sar -n DEV 1 59 | grep -i average | grep eth0
Average:         eth0      7.44      7.00      0.83      6.72      0.00      0.00      0.00      0.00

然后,使用awk命令過濾掉不需要的列,我們只需要第5列以及第6列信息;

# sar -n DEV 1 4 | grep -i average | grep eth0 | awk '{print $5*8"\t"$6*8}'
28.32 182.96

至此,我們已經獲取到了1分鐘內eth0網卡的平均輸入輸出流量了,該腳本的核心問題解決了。下面貼出完整的代碼:

#!/bin/bash
# 監控網卡流量,并輸出到日志文件中

export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:~/bin
export LANG=en

# 日志存放目錄
PATH_DIR=/root/netdatas/`date +%F`
# 日志文件名稱
FILE_NAME=`date +%F`.log
# 監控的網卡名稱
NET_NAME=eth0
 
[ -d PATH_DIR ] || mkdir -p $PATH_DIR
 
while [ 1 ];do
    date +"%H:%M" >> $PATH_DIR/$FILE_NAME
 
    netinfo=$(sar -n DEV 1 59 | grep -i average | grep $NET_NAME | \
        awk '{print $5*8":"$6*8}' )
    echo  "$NET_NAME input:$(echo $netinfo | cut -d: -f1)kbit/s" >> $PATH_DIR/$FILE_NAME
    echo "$NET_NAME output:$(echo $netinfo | cut -d: -f2)kbit/s" >> $PATH_DIR/$FILE_NAME
    echo '#########################' >> $PATH_DIR/$FILE_NAME
done

該腳本的編寫非常的簡單,搞清楚了如何獲取1分鐘內網卡流量就搞定了90%了。不過有點要注意,我服務器上的網卡名稱為eth0,你的可能名稱和我不一樣,所以如果你要使用該腳本,需要將所有的eth0改為你服務器上的網卡名。當然,可以將網卡名稱當做參數來傳遞給腳本,這里為了圖方便就沒有這么做了(主要原因是不想對輸入的網卡名做校驗)。

來驗證下此腳本是否能正常運行。執行該腳本后,查看下日志里的內容如下:

12:15
eth0 input:16.64kbit/s
eth0 output:16.72kbit/s
#########################
12:16
eth0 input:16.72kbit/s
eth0 output:17.12kbit/s
#########################
12:17
eth0 input:17.92kbit/s
eth0 output:17.6kbit/s

可以看到,此腳本能正常運行。

關于shell編程實戰之如何監控網卡流量就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

河源市| 金堂县| 南乐县| 鲁山县| 大洼县| 佛坪县| 郧西县| 库尔勒市| 扎鲁特旗| 毕节市| 万年县| 鸡泽县| 临颍县| 米林县| 卫辉市| 五指山市| 海安县| 商城县| 富源县| 芮城县| 常州市| 宁化县| 株洲县| 遂平县| 沁阳市| 敦化市| 固镇县| 双鸭山市| 九江市| 屯留县| 黄大仙区| 黑水县| 石狮市| 隆德县| 崇仁县| 石林| 武宣县| 秦皇岛市| 湖南省| 八宿县| 牙克石市|