1. 程式人生 > >Shell應用之網絡卡流量監測

Shell應用之網絡卡流量監測

需求分析
1)按固定時間監測一次網絡卡流量
2)當網絡卡流量為0時重啟網絡卡

一、網絡卡流量查詢
sar(System ActivityReporter系統活動情況報告)是目前Linux上最為全面的系統性能分析工具之一,可以從多方面對系統的活動進行報告,包括:檔案的讀寫情況、系統呼叫的使用情況、磁碟I/O、CPU效率、記憶體使用狀況、程序活動及IPC有關的活動等,sar命令有sysstat安裝包安裝。
這裡我們利用sar 命令中的網路監控功能
sar -n #統計網路資訊
sar -n選項使用6個不同的選項:DEV,EDEV,NFS,NFSD,SOCK,IP,EIP,ICMP,EICMP,TCP,ETCP,UDP,SOCK6,IP6,EIP6,ICMP6,EICMP6和UDP6 ,DEV顯示網路介面資訊,EDEV顯示關於網路錯誤的統計資料,NFS統計活動的NFS客戶端的資訊,NFSD統計NFS伺服器的資訊,SOCK顯示套接字資訊,ALL顯示所有5個開關。它們可以單獨或者一起使用。
sar -n DEV 1 1: 每間隔1秒統計一次,總計統計1次,其中的average是在多次統計後的平均值

[[email protected] sbin]# sar -n DEV 1 1  
Linux 3.10.0-862.el7.x86_64 (mail.rhcc.com)     11/08/18    _x86_64_    (1 CPU)

21:33:15        IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
21:33:16        ens37      1.01      0.00      0.06      0.00      0.00      0.00      0.00
21:33:16           lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
21:33:16    virbr0-nic      0.00      0.00      0.00      0.00      0.00      0.00      0.00
21:33:16       virbr0      0.00      0.00      0.00      0.00      0.00      0.00      0.00
21:33:16        ens33      0.00      0.00      0.00      0.00      0.00      0.00      0.00

Average:        IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
Average:        ens37      1.01      0.00      0.06      0.00      0.00      0.00      0.00
Average:           lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
Average:    virbr0-nic      0.00      0.00      0.00      0.00      0.00      0.00      0.00
Average:       virbr0      0.00      0.00      0.00      0.00      0.00      0.00      0.00
Average:        ens33      0.00      0.00      0.00      0.00      0.00      0.00      0.00

二、網絡卡的查詢和重啟

  #>查詢的命令有
  397  ip a
  398  ifconfig 
  399  nmcli device show
  #>網絡卡重啟 
  402  ifdown ens37 && ifup ens37
  405  ifdown ens37 ; ifup ens37

網路網絡卡的配置路徑在

[[email protected] sbin]# cd /etc/sysconfig/network-scripts/
更改完配置記得重啟服務

三、抓包分析
通常網絡卡流量異常時都需要檢視分析,往往抓包就是最直觀的檢視方式

[
[email protected]
network-scripts]# tcpdump -nn -i ens37 -c 100

>加上-w 引數可以將抓取的內容儲存到固定的.cap檔案中,這個檔案是可以用

Windows的wireshark工具檢視的,同樣tcpdump -r *.cap 也可以檢視。

四、案例分析

#!/bin/bash
LANG=C  #>設定英文的的環境
if [ ! rpm -q sysstat &> /dev/null ]
then
    yum install -y sysstat
fi       #>判斷sar是否可執行
sar -n DEV 1 10 |grep 'ens37' > /tmp/ens37_sar.log  #>監測網絡卡流量重定向
net_in=`grep '^Average:' /tmp/ens37_sar.log|awk '{print $5}'`     #>分析入流量
net_out=`grep '^Average:' /tmp/ens37_sar.log|awk '{print $6}'`     #>分析出流量
if [ $net_in == "0" -a $net_out == "0" ] 
then
    echo "`date` ens37 Flow anomaly"  >> /tmp/net.log
    ifdown ens37 &&  ifup ens37
fi      #>判斷出入的流量是否為0 ,為0則重啟網絡卡

五、定時監測的實現
image

[[email protected] sbin]# crontab -e
no crontab for root - using an empty one
crontab: installing new crontab
[[email protected] sbin]# crontab -l
30 * * * * /bin/sh /usr/local/sbin/tp.sh 

-------------END---------------