獲取tcp連線數的兩種方法:
netstat -n | awk '/^tcp/ end '
ss -ant | awk 'nr>1 end '
netstat是遍歷/proc下面每個pid目錄,ss直接讀/proc/net
下面的統計資訊。所以ss執行的時候消耗資源以及消耗的時間都比netstat少很多。
規範指令碼存放目錄:
mkdir /etc/zabbix/scripts
1.編寫監控tcp連線數的shell指令碼,並新增執行許可權
# cat /etc/zabbix/scripts/tcp_status.sh
#!/bin/bash
#[ $#
-ne1 ] && echo
"usage:close-wait|closed|closing|estab|fin-wait-1|fin-wait-2|last-ack|listen|syn-recv syn-sent|time-wait" && exit
1tcp_status_fun
() end ' > /tmp/netstat.tmp
ss -ant | awk 'nr>1 end ' > /tmp/ss.tmp
tcp_stat_value=$(grep "$tcp_stat" /tmp/ss.tmp | cut -d
' '-f2)
if [ -z $tcp_stat_value ];then
tcp_stat_value=0
fiecho
$tcp_stat_value
}tcp_status_fun $1
新增執行許可權:
chmod +x tcp_status.sh
2.建立乙個自定義的key:
# cat /etc/zabbix/zabbix_agentd.d/tcp.conf
userparameter=tcp_status[*],/bin/bash /etc/zabbix/scripts/tcp_status.sh "$1"
3.重啟zabbix-agent,修改配置檔案必須重啟
systemctl restart zabbix-agent
4.服務端使用zabbix_get測試是否能正常獲取值
zabbix_get -s
127.0
.0.1
-k tcp_status[estab]
5.web介面,匯入tcp模板,建立主機並關聯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 接收到它的連線終止請求的確認。
time_wait 兩個存在的理由:
1.可靠的實現tcp全雙工連線的終止;
2.允許老的重複分節在網路中消逝。
closed:不在連線狀態(這是為方便描述假想的狀態,實際不存在)
Zabbix 監控TCP連線的狀態
tcp的連線狀態對於我們web伺服器來說是至關重要的,尤其是併發量establish 或者是syn recv值,假如這個值比較大的話我們可以認為是不是受到了 或是是time wait值比較高的話,我們要考慮看我們核心是否需要調優,太高的time wait值的話會占用太多埠,要是埠少的話後果不堪設想 ...
zabbix對tcp狀態監控
1 先編寫乙個獲取tcp狀態的指令碼檔案,指令碼放在 usr lib zabbix alertscripts vim usr lib zabbix alertscripts tcp status.sh bin bash ne 1 echo usage close wait closed closin...
zabbix 監控Linux 主機TCP連線數
環境 linux 主機 步驟 1,在linux 主機上寫個指令碼執行查詢當前tcp 連線的引數輸出到相應值得文字中 2,建立個任務計畫,每分鐘執行一次 3,linux 主機上的 zabbix 客戶端配置檔案定義好自定義key 1,在 home zabbix sh 建立乙個tcpconnection ...