zabbix 5 0中自定義監控單個IP的最大流量

2021-10-11 00:14:17 字數 2443 閱讀 7028

有時我們的伺服器可能被某個ip大量拉取資料,占用大量寬頻,,

現在要實現,用zabbix監控,有ip異常大流量時,就傳送警報。。

使用iftop列印5秒資料,取出5秒內的最大傳送流量,如下圖紅框中的資料。。

編輯zabbix_agentd.conf(預設在/etc/zabbix/目錄下)使之可以執行指令碼

vim /etc/zabbix/zabbix_agentd.conf

修改或新增以下四項

timeout=10

allowroot=1

include=/etc/zabbix/zabbix_agentd.d/*.conf

unsafeuserparameters=1

在zabbix_agentd.d目錄下的conf檔案中新增"userparameter=ip.maxsendofip,/etc/zabbix/scripts/maxsendofip.sh"

#使用iftop工具,取5秒內單個ip對應的最大流量值

#取iftop執行5秒後的第1行中倒數第二列的資料

# => 為從伺服器傳送給ip的流量,,從ip傳到伺服器時'$3=="=>"改為'$2=="<="

result=$(sudo iftop -n -t -s 5 2>/dev/null | awk '$3=="=>" ')

#下面部分是為了適用於zabbix而做的一些額外的工作

#iftop出來的結果為(6.60mb 208kb 320b等),將其結果整合進zabbix時要去掉這些單位並對數值做轉換(zabbix裡我統一用b做單位,只給zabbix傳數值)

if [ -z "$result" ];then

echo 0

else

num=$(echo $result|tr -d "a-za-z")

unit=`echo $`

case $unit in

[kk]) echo "$num*1024"|bc;;

[mm]) echo "$num*1024*1024"|bc;;

[gg]) echo "$num*1024*1024*1024"|bc;;

*) echo "$num"

esac

fi

因為iftop需要root許可權才能執行,編輯zabbix使用者配置sudo許可權執行iftop。

visudo,新增以下三行**,ctrl+o 儲存,回車鍵確認,ctrl+x退出。

user_alias    zb_users=zabbix

cmnd_alias sys_status=/usr/sbin/iftop,/usr/sbin/iotop,/usr/sbin/tcpdump

zb_users all=(root) nopasswd:sys_status

上邊完成後重啟zabbix_agent。。systemctl restart zabbix_agentd

因為客戶端的指令碼執行會在5秒以上,服務端預設的超時是3秒,所以還需要改服務端的timeout。

vim /etc/zabbix/zabbix_server.conf

修改或新增下邊一項

timeout=10

服務端就這樣了。。重啟,,systemctl restart zabbix-server

在控制面板上新增以下監控項

再新增乙個觸發器。100mb=100*1024*1024

新增後,就可以在最新資料中檢視獲取到的資料了。

zabbix5 0系統監控難點彙總

yum reinstall y mariadb server mariadb systemctl start mariadb.service systemctl enable mariadb.service 建議執行下安全配置 mysql secure installationmysql uroot...

zabbix自定義監控

1 監控資料備份情況 主動模式 1 資料備份及傳送成功 1 2 資料匯入成功 1 2 在zabbix agent客戶端配置如下 root zagent zabbix cat etc zabbix zabbix agentd.conf startagents 0 設定該值為0,則agent不會監聽本地...

zabbix監控之自定義監控

自定義監控node1資料庫狀態,並設定報警 編輯agent客戶端的userparameter mysql.conf 檔案,最後一行新增自定義監控內容 root node1 cd etc zabbix zabbix agentd.d root node1 zabbix agentd.d lsuserp...