一、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?如何產生的?