1. 程式人生 > >zabbix3.4上使用自定義腳本監控公網tcp端口時延情況

zabbix3.4上使用自定義腳本監控公網tcp端口時延情況

enc latency 腳本監控 vpd map lse 正則表達 xxxxx 技術

我們搭建了***,主要是利用公網地址上tcp端口映射進行連接,從而達到訪問的目的。但是有時候,網絡不穩定,或者是公網地址震蕩異常,導致***連接異常,所以我們很有必要監控tcp端口的連接的時延情況,當時延大於1000ms時,會嚴重的影響到使用體驗,這時就要排查網絡原因了。

如果能利用zabbix監控tcp端口的情況,並統計,當達到一定閾值的時候就告警,方便及時排查。


一、思路

1.linux上,可以使用nmap程序掃描端口之外,還可以統計大致的掃描結果,可以利用每次掃描端口的耗時來衡量網絡連接質量,例如時延;

2.編寫shell腳本,定期檢測nmap掃描結果,截取耗時的字段,生成監控項,衡量時延

3.zabbix上可以使用外部檢查的方式使用自定義腳本

4.zabbix上利用腳本,定期檢查,生成圖形和告警


二、腳本編寫

使用nmap程序,獲取指定端口連接信息

nmap -Pn xxxx.xxxx.xxxx.xxxx -pxxxxx

獲取信息如下所示

技術分享圖片

其中(0.0081s latency),指的就是監測指定端口掃描的時延,這個就是我們需要獲取的信息

為了獲取指定信息,我們就必須使用正則表達式和相關的文本處理,按照如下方式進行

nmap -Pn xxxx.xxxx.xxxx.xxxx -pxxx|grep  'Host'  |awk '{print $4}'|sed  's/^(//'|sed 's/s$//'

完成處理後,顯示結果就是我們需要的信息

技術分享圖片

按照以上,就可以編寫腳本了,記得加上可執行權限


zabbix上的外部腳本是以zabbix用戶身份運行的,而nmap的運行需要root權限,這時我們需要必須使用visudo讓zabbix用戶能夠以root權限運行nmap,網上關於visudo的教程很多,本文不再說明
在20行下添加

zabbix ALL=(root)/usr/bin/nmap

技術分享圖片


完成腳本編寫後,將腳本放在/usr/lib/zabbix/externalscripts/路徑下


三、監控實現

在zabbix上,配置監控項,使用外部檢查的方式

技術分享圖片

註意,信息類型改為浮點,而非數字;更新間隔推薦60秒以上


配置觸發器,當延遲超過1000ms,則開始報警

觸發器定義方式為在平均5分鐘內檢查到監控項的平均值大於1(1000ms)時告警

技術分享圖片

最後,定義圖形,如下所示

技術分享圖片


最後完成效果如下所示

技術分享圖片

zabbix3.4上使用自定義腳本監控公網tcp端口時延情況