標籤:tcp ss zabbix
這段時間一直忙,沒時間好好理下監控,趁著假期有時間,理了一下。
對於zabbix監控TCP狀態,在網上查了很多資料,大多數都是使用netstat命令來實現。
如果伺服器的壓力小,連結少,不會有問題,但隨著伺服器壓力和連結數的增加,用netstat就會造成執行速度慢,server端無法接收到執行結果,造成監控異常。
平時一直用SS,所以試著用SS代替netstat,速度快了不少。
個人較喜歡偷懶,看到網上很多少寫了非常長的指令碼,又是函數,又是寫臨時檔案的。其實完全沒必要,不用寫啥指令碼,臨時檔案,很簡單的就搞定了。
下面是具體實現方式:
1、在web端建立模板,具體版本如下面這些圖。
650) this.width=650;" title="2.jpg" style="float:none;" alt="wKiom1kFojXhMW7bAADI2vVZvgo317.jpg-wh_50" src="https://s4.51cto.com/wyfs02/M02/92/F1/wKiom1kFojXhMW7bAADI2vVZvgo317.jpg-wh_500x0-wm_3-wmp_4-s_936561179.jpg" />650) this.width=650;" title="1.jpg" style="float:none;" alt="wKioL1kFojXSF9odAAEsrpLVI_Q346.jpg-wh_50" src="https://s4.51cto.com/wyfs02/M00/92/EF/wKioL1kFojXSF9odAAEsrpLVI_Q346.jpg-wh_500x0-wm_3-wmp_4-s_4175644234.jpg" />
2、通過下面ss的源碼我們可以知道SS能識別的TCP狀態的關鍵字。
static const char *sstate_name[] = { "UNKNOWN", [TCP_ESTABLISHED] = "ESTAB", [TCP_SYN_SENT] = "SYN-SENT", [TCP_SYN_RECV] = "SYN-RECV", [TCP_FIN_WAIT1] = "FIN-WAIT-1", [TCP_FIN_WAIT2] = "FIN-WAIT-2", [TCP_TIME_WAIT] = "TIME-WAIT", [TCP_CLOSE] = "UNCONN", [TCP_CLOSE_WAIT] = "CLOSE-WAIT", [TCP_LAST_ACK] = "LAST-ACK", [TCP_LISTEN] = "LISTEN", [TCP_CLOSING] = "CLOSING",};
我們用這些關鍵字替換上面Item中的KEY來實現所有狀態的擷取。
3、配置zabbix agent設定檔。
cat tcp_status.sh UserParameter=tcp.status[*], /usr/sbin/ss -ant|grep -c $1
4、最後重啟zabbix agent後,關聯模板即可。
650) this.width=650;" title="3.jpg" style="float:none;" alt="wKioL1kFojagcpy_AADT8sIb2js607.jpg-wh_50" src="https://s2.51cto.com/wyfs02/M02/92/EF/wKioL1kFojagcpy_AADT8sIb2js607.jpg-wh_500x0-wm_3-wmp_4-s_1727616658.jpg" />
寫的比較簡單,大家自己嘗試先,有問題再聊。
本文出自 “woshiyu001” 部落格,請務必保留此出處http://woshiyu001.blog.51cto.com/672735/1920819
zabbix3.0 使用SS代替netstat無需指令碼,1分鐘搞定TCP狀態監控