文章插圖

文章插圖
一、本次監控的服務器環境為:
操作系統版本:centos7
zabbix-agnet版本:3.0.8
zabbix-server版本: 3.4.10
二、在安裝之前先了解一下tcp的一些知識,各個狀態的意義如下:
LISTEN – 偵聽來自遠方TCP端口的連接請求;
SYN-SENT – 在發送連接請求后等待匹配的連接請求;
SYN-RECEIVED – 在收到和發送一個連接請求后等待對連接請求的確認;
ESTABLISHED – 代表一個打開的連接,數據可以傳送給用戶;
FIN-WAIT-1 – 等待遠程TCP的連接中斷請求,或先前的連接中斷請求的確認;
FIN-WAIT-2 – 從遠程TCP等待連接中斷請求;
CLOSE-WAIT – 等待從本地用戶發來的連接中斷請求;
CLOSING – 等待遠程TCP對連接中斷的確認;
LAST-ACK – 等待原來發向遠程TCP的連接中斷請求的確認;
TIME-WAIT – 等待足夠的時間以確保遠程TCP接收到連接中斷請求的確認;
CLOSED – 沒有任何連接狀態;
TCP連接過程是狀態的轉換,促使發生狀態轉換的是用戶調用:OPEN,SEND,RECEIVE,CLOSE,ABORT和STATUS;傳送過來的數據段,特別那些包括以下標記的數據段SYN,ACK,RST和FIN;還有超時,上面所說的都會使TCP狀態發生變化 。
詳解
1、LISTENING狀態
FTP服務啟動后首先處于偵聽(LISTENING)狀態 。
2、ESTABLISHED狀態
ESTABLISHED的意思是建立連接 。表示兩臺機器正在通信 。
3、CLOSE_WAIT
對方主動關閉連接或者網絡異常導致連接中斷,這時我方的狀態會變成CLOSE_WAIT 此時我方要調用close()來使得連接正確關閉
4、TIME_WAIT
我方主動調用close()斷開連接,收到對方確認后狀態變為TIME_WAIT 。TCP協議規定TIME_WAIT狀態會一直持續2MSL(即兩倍的分 段最大生存期),以此來確保舊的連接狀態不會對新連接產生影響 。處于TIME_WAIT狀態的連接占用的資源不會被內核釋放,所以作為服務器,在可能的情 況下,盡量不要主動斷開連接,以減少TIME_WAIT狀態造成的資源浪費 。
目前有一種避免TIME_WAIT資源浪費的方法,就是關閉socket的LINGER選項 。但這種做法是TCP協議不推薦使用的,在某些情況下這個操作可能會帶來錯誤 。
5、SYN_SENT狀態
SYN_SENT狀態表示請求連接,當你要訪問其它的計算機的服務時首先要發個同步信號給該端口,此時狀態為SYN_SENT,如果連接成功了就變為 ESTABLISHED,此時SYN_SENT狀態非常短暫 。但如果發現SYN_SENT非常多且在向不同的機器發出,那你的機器可能中了沖擊波或震蕩波 之類的病毒了 。這類病毒為了感染別的計算機,它就要掃描別的計算機,在掃描的過程中對每個要掃描的計算機都要發出了同步請求,這也是出現許多 SYN_SENT的原因 。
三、服務端安裝部署
1、先在服務器上新建腳本vim/etc/zabbix/tcp_connections.sh
#!/bin/bash#netstat -an | awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}’ | grep -w “ESTABLISHED” |cut -d” ” -f2#netstat -an | awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}’ | grep -w “TIME_WAIT” |cut -d” ” -f2#netstat -an | awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}’ | grep -w “LISTEN” |cut -d” ” -f2
ARGS=1if [ $# -ne “$ARGS” ];thenecho “Please input one arguement:”ficase $1 inESTABLISHED)result=`netstat -an | awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}’ | grep -w “ESTABLISHED” |cut -d” ” -f2`echo $result;;TIME_WAIT)result=`netstat -an | awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}’ | grep -w “TIME_WAIT” |cut -d” ” -f2`echo $result;;LISTEN)result=`netstat -an | awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}’ | grep -w “LISTEN” |cut -d” ” -f2`echo $result;;*)echo “Usage:$0(TIME_WAIT|ESTABLISHED|LISTEN)”;;esac
2、給腳本賦可執行權限
chmod +x tcp_connections.sh
3、測試腳本是否正常
[[email protected] zabbix]# ./tcp_connections.sh LISTEN20
4、修改配置文件,加載腳本
vim zabbix_agentd.conf
新增一列
UserParameter=tcp.status[*],/etc/zabbix/tcp_connections.sh $1 $2
5、重啟服務
[[email protected] zabbix]# service zabbix-agent restartRedirecting to /bin/systemctl restart zabbix-agent.service
四、web端配置
新建三個監控項,健值分別是
tcp.status[ESTABLISHED]
tcp.status[TIME_WAIT]
tcp.status[LISTEN]
【查看TCP連接數 查看端口的連接數】配完一般1分鐘后能采集到數據
- ip地址端口號查詢 查看端口ip地址
- 遠程桌面連接云服務器 如何連接遠程云服務器
- navicat 數據庫連接 navicate怎么連接數據庫
- 怎樣查看iis版本 怎么看iis版本
- 怎么查看網站日志 網頁日志在哪里看
- 連接MySQL失敗 mysql連接不成功怎么辦
- 怎么連接plsql plsql可以連接哪些數據庫
- cad怎么把斷線連接 cad怎么切斷線
- 查看服務器操作系統命令 查看服務器信息命令
- windows10圖片查看器修復 win10圖片查看器修復
