zabbix 監控 tcp 連接數


 

 

 

一、zabbix-agent 服務器配置

1、編輯zabbix_agent配置文件,添加以下內容

 vim  /etc/zabbix/zabbix_agentd.conf
 ##添加此行
 UserParameter=tcp.state[*],/etc/zabbix/auto_detection_tcp_state.sh $1

 

2、重啟zabbix-agent

 service zabbix_agentd restart

 

3、腳本內容

cat /etc/zabbix/auto_detection_tcp_state.sh
#!/bin/bash
#TCP連接數及狀態
 
if [ $# -ne 1 ];then
        echo -e "\033[32mUsage: sh $0 {ESTABLISHED|LISTEN|TIME_WAIT|CLOSED|CLOSE_WAIT|CLOSING|FIN_WAIT1|FIN_WAIT2|LAST_ACK|SYN_RECV|SYN_SENT}\033[0m"
        exit 1
fi
 
case $1 in
        #socket已經建立連接
        ESTABLISHED)
        result=$(netstat -an | awk '/^tcp/ {print $0}'|grep -wc "ESTABLISHED")
        echo $result
        ;;
        #監聽狀態  
        LISTEN)
        result=$(netstat -an | awk '/^tcp/ {print $0}'|grep -wc "LISTEN")
        echo $result
        ;;
        #表示收到了對方的FIN報文,並發送出了ACK報文,等待2MSL后就可回到CLOSED狀態
        TIME_WAIT)
        result=$(netstat -an | awk '/^tcp/ {print $0}'|grep -wc "TIME_WAIT")
        echo $result
        ;;
        #socket沒有被使用,無連接
        CLOSED)
        result=$(netstat -an | awk '/^tcp/ {print $0}'|grep -wc "CLOSED")
        echo $result
        ;;
        #等待關閉連接
        CLOSE_WAIT)
        result=$(netstat -an | awk '/^tcp/ {print $0}'|grep -wc "CLOSE_WAIT")
        echo $result
        ;;
        #服務器端和客戶端都同時關閉連接
        CLOSING)
        result=$(netstat -an | awk '/^tcp/ {print $0}'|grep -wc "CLOSING")
        echo $result
        ;;
        #套接字已關閉,連接正在關閉
        FIN_WAIT1)
        result=$(netstat -an | awk '/^tcp/ {print $0}'|grep -wc "FIN_WAIT1")
        echo $result
        ;;
        #連接已關閉,套接字正在等待從遠程端關閉
        FIN_WAIT2)
        result=$(netstat -an | awk '/^tcp/ {print $0}'|grep -wc "FIN_WAIT2")
        echo $result
        ;;
        #遠端關閉,當前socket被動關閉后發送FIN報文,等待對方ACK報文
        LAST_ACK)
        result=$(netstat -an | awk '/^tcp/ {print $0}'|grep -wc "LAST_ACK")
        echo $result
        ;;
        #接收到SYN報文
        SYN_RECV)
        result=$(netstat -an | awk '/^tcp/ {print $0}'|grep -wc "SYN_RECV")
        echo $result
        ;;
        #已經發送SYN報文
        SYN_SENT)
        result=$(netstat -an | awk '/^tcp/ {print $0}'|grep -wc "SYN_SENT")
        echo $result
        ;;
        *)
        echo -e "\033[32mUsage: sh $0 {ESTABLISHED|LISTEN|TIME_WAIT|CLOSED|CLOSE_WAIT|CLOSING|FIN_WAIT1|FIN_WAIT2|LAST_ACK|SYN_RECV|SYN_SENT}\033[0m"
esac

 

4、授權並驗證腳本

 chmod +x auto_detection_tcp_state.sh
./auto_detection_tcp_state.sh   LISTEN
9
zabbix_get -s 10.0.10.243 -k "tcp.state[LISTEN]"
9

 

二、Zabbix監控平台配置

1、模板

 

2、導入TCP狀態監控模板

配置->模板->導入(右上角)->選擇下載的模板文件->最后點擊導入
 

3、關聯模板

要把導入的模板關聯到相對應的主機上邊、配置->點擊你的主機->模板->選擇剛才導入模板,點擊添加,最后點擊更新即可。

最后展示

 
ESTABLISHED socket已經建立連接
CLOSED socket沒有被使用,無連接
CLOSING 服務器端和客戶端都同時關閉連接
CLOSE_WAIT 等待關閉連接
TIME_WAIT 表示收到了對方的FIN報文,並發送出了ACK報文,等待2MSL后就可回到CLOSED狀態
LAST_ACK 遠端關閉,當前socket被動關閉后發送FIN報文,等待對方ACK報文
LISTEN 監聽狀態
SYN_RECV 接收到SYN報文
SYN_SENT 已經發送SYN報文
FIN_WAIT1 The socket is closed, and the connection is shutting down
FIN_WAIT2 Connection is closed, and the socket is waiting for a shutdown from the remote
 

TCP 相關資料

time_wait狀態產生的原因,危害,如何避免
什么是time_wait?如何產生的?


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM