對網卡流量監控的一些想法
今天來給大家講講一些對於網卡流量的想法,網卡流量代表著客戶的訪問你服務的數據量,但是這裏量是有閾值的,如果你的網卡的流量居高不下,那就有可能你的服務器被攻擊了,所以,監控網卡的流量是事關重要的事情,說到監控,我們便可以想到,寫腳本或者利用監控軟件來做監控,zabbix監控軟件就提供了很好的平臺;zabbix作為一個熱門的監控軟件,不僅比較全面的監控模板,而且使用者還可以自己自定義keys,做監控。
自定義監控處理有監控軟件外,我們還需要獲取到數據才能實現我們監控的目的;對於如何獲取到網卡流量的數據,我這裏提供一個命令Sar,當然還有其它的命令,這裏就不多說了;Sar命令可以為我們提供網卡的流量的信息,所以基於
一、sar命令的使用
Sar命令主要的作用是用來查看網卡的流量的,linux/centos默認是沒有裝的,所以需要yum安裝才能使用。
#yum install -y sysstat
通過sar –h我們可以查看得到sar的用法
[root@mysql etc]# sar -h 用法: sar [ 選項 ] [ <時間間隔> [ <次數> ] ] 主選項和報告: -b I/O 和傳輸速率信息狀況 -B 分頁狀況 -d 塊設備狀況 -H 交換空間利用率 -I { <中斷> | SUM | ALL | XALL } 中斷信息狀況 -m { <關鍵詞> [,...] | ALL } 電源管理統計信息 關鍵字: CPU CPU 頻率 FAN 風扇速度 \t\tFREQ\tCPU 平均時鐘頻率 IN 輸入電壓 TEMP 設備溫度 \t\tUSB\t連接的USB 設備 -n { <關鍵詞> [,...] | ALL } 網絡統計信息 關鍵詞可以是: DEV 網卡 EDEV 網卡 (錯誤)
接下來我們使用它來獲取網卡的信息,比如查看網卡流量的每秒顯示一次,共顯示1次的網卡流量信息。
[root@mysql etc]# sar -n DEV 1 1 Linux 3.10.0-514.el7.x86_64 (mysql) 2018年03月14日 _x86_64_ (4 CPU) 15時00分00秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s 15時00分01秒 eth0 37.00 36.00 6.54 24.27 0.00 0.00 0.00 15時00分01秒 lo 23.00 23.00 18.17 18.17 0.00 0.00 0.00 平均時間: IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s 平均時間: eth0 37.00 36.00 6.54 24.27 0.00 0.00 0.00 平均時間: lo 23.00 23.00 18.17 18.17 0.00 0.00 0.00
我們可以看到,使用sar命令它已經把結果給統計出來的,
IFACE 表示設備名稱
rxpck/s 每秒接收的包的數量
txpck/s 每秒發出的包的數量
rxKB/s 每秒接收的數據量,單位KByte
txKB/s 每秒發出的數據量,單位KByte
若服務器丟包非常嚴重,需要查看網卡流量是否異常。接收數據部分 rxpck大於4000,或者rxKB大於5000,則有可能被攻擊了,正常服務器網卡流量沒有這麽大。除非自己在拷貝數據。
接下來,我們談談sar命令的一些常用的一些用法。
sar -n DEV #查看當天從零點到當前時間的網卡流量信息
sar -n DEV 1 1 #每秒顯示一次,共顯示1次
sar -n DEV -f /var/log/sa/saxx 查看xx日的網卡流量歷史
sar -q #查看歷史負載
sar -b #查看磁盤讀寫
二、使用sar命令截取rxpck/s與rxKB/s的值
有了sar命令查看網卡的流量,我們就可以實現監控了,結合zabbix做對網卡的監控rxpck/s與rxKB/s的值
通過sar,命令並結合awk獲取你網卡的rxpck/s的值,我這裏的網卡是eth0
[root@mysql etc]# sar -n DEV 1 1 | awk 'NR==8{print $3}' 37.00
獲取你網卡的rxKB/s的值
[root@mysql etc]# sar -n DEV 1 1 | awk 'NR==8{print $5}' 10.63
我們可以發現我們想要的數據已經是截取出來了
三、zabbix自定義keys做監控
1、在zabbix客戶端zabbix_agentd.conf文件添加自定義keys,並重啟客戶端
# vim /usr/local/zabbix/etc/zabbix_agentd.conf
UnsafeUserParameters=1 UserParameter=receivce_data,sar -n DEV 1 1 | awk 'NR==8{print $5}' UserParameter=receivce_package_number,sar -n DEV 1 1 | awk 'NR==8{print $3}'
2、zabbix測試是否能獲到zabbix客戶端的健值的數據
[root@zabbix ~]# zabbix_get -s 192.168.1.200 -k receivce_data 7.79
[root@zabbix ~]# zabbix_get -s 192.168.1.200 -k receivce_package_number 52.00
從這裏可以發現是已經可以獲取的
3、zabbix服務端監控出圖
到zabbix的web頁面創建network_receivce_package_number 和network_receivce_data模板,點擊:配置à模板à創建模板,如圖1、圖2所示
圖1 network_receivce_package_number模板的創建
圖2 network_receivce_data模板的創建
4、創建監控項,點擊: network_receivce_package_number /network_receivce_dataà監控項à創建監控項,但是要註意的是你的鍵值是你的自定義keys的名字。如圖3、圖4所示:
圖3 network_receivce_package_number模板添加監控項
圖4 network_receivce_data模板添加監控項
5、添加圖像,綁定network_receivce_package_number /network_receivce_data各自的監控項。如圖5、圖6所示
圖5 network_receivce_package_numbe模板綁定監控項
圖6 network_rdata模板綁定監控項
6、添加network_receivce_package_number /network_receivce_data觸發條件,為做告警使用,如圖7、圖8所示
network_receivce_package_number的閾值我們可以設置為4000,因為正常的服務器的包的數量沒那麽大。(設置最新T值大於4000時,觸發告警)
圖7 network_receivce_package_number模板添加觸發器
network_receivce_datar的閾值我們可以設置為5000(相當於5M),因為正常的服務器的流量沒那麽大。(設置最新T值大於5000時,觸發告警)
圖8 network_receivce_data模板添加觸發器
7、綁定主機,出圖,出數據。
到了這一步,我們的自定義keys監控就基本完成了;但是,我們的自定義keys畢竟只是一個模板,並不能夠出圖出數據,所以,這就需要人為的讓主機綁定模板,這樣才能出圖出數據。結果如圖9所示
圖9 主機綁定模板
#查看圖像,查看獲取的數據,是否正確,如圖10、圖11所示
圖10 network_receivce_package_number出圖數據
圖11 network_receivce_data出圖
#可以發現,獲取的數據和出圖都已經達到我們的目的了。自動義對網絡流量的的監控已經成功了。
四、總結
基於zabbix和sar監控網卡流量的監控完成了,但是不是覺得沒啥作用,是的,在沒有告警的情況下,是啥用的,說到底是沒人看。所以我們需要告警,基於告警的話,在這裏可以參考文章,這裏有搭建zabbix告警處理的部署zabbix郵件告警,一點小分享,希望對你有用。
對網卡流量監控的一些想法