zabbix--監控 TCP 連線狀態
阿新 • • 發佈:2020-07-13
命令測試
Tcp的連線狀態對於我們web伺服器來說是至關重要的,從TCP的連線狀態中可以看出網路的連線情況,伺服器的壓力情況,對伺服器的併發有很好的直觀反映;尤其是併發量ESTAB;或者是syn_recv值,假如這個值比較大的話我們可以認為是不是受到了攻擊,或是是time_wait值比較高的話,我們要考慮看我們核心是否需要調優,太高的time_wait值的話會佔用太多埠,要是埠少的話後果不堪設想。
我們可以利用下面命令來查詢11中狀態的連線數,下面我們也可以利用這個命令來寫指令碼。
[root@access01 ~]# netstat -an|awk '/^tcp/{++S[$NF]}END{for(a in S) print a,S[a]}' LISTEN 57 ESTABLISHED 1197 TIME_WAIT 309
zabbix 客戶端配置
1.編寫tcp狀態獲取指令碼
# vim /etc/zabbix/scripts/tcp_conn_status.sh #!/bin/bash #this script is used to get tcp and udp connetion status #tcp status metric=$1 tmp_file=/tmp/tcp_status.txt /bin/netstat -an|awk '/^tcp/{++S[$NF]}END{for(a in S) print a,S[a]}' > $tmp_file case $metric in closed) output=$(awk '/CLOSED/{print $2}' $tmp_file) if [ "$output" == "" ];then echo 0 else echo $output fi ;; listen) output=$(awk '/LISTEN/{print $2}' $tmp_file) if [ "$output" == "" ];then echo 0 else echo $output fi ;; synrecv) output=$(awk '/SYN_RECV/{print $2}' $tmp_file) if [ "$output" == "" ];then echo 0 else echo $output fi ;; synsent) output=$(awk '/SYN_SENT/{print $2}' $tmp_file) if [ "$output" == "" ];then echo 0 else echo $output fi ;; established) output=$(awk '/ESTABLISHED/{print $2}' $tmp_file) if [ "$output" == "" ];then echo 0 else echo $output fi ;; timewait) output=$(awk '/TIME_WAIT/{print $2}' $tmp_file) if [ "$output" == "" ];then echo 0 else echo $output fi ;; closing) output=$(awk '/CLOSING/{print $2}' $tmp_file) if [ "$output" == "" ];then echo 0 else echo $output fi ;; closewait) output=$(awk '/CLOSE_WAIT/{print $2}' $tmp_file) if [ "$output" == "" ];then echo 0 else echo $output fi ;; lastack) output=$(awk '/LAST_ACK/{print $2}' $tmp_file) if [ "$output" == "" ];then echo 0 else echo $output fi ;; finwait1) output=$(awk '/FIN_WAIT1/{print $2}' $tmp_file) if [ "$output" == "" ];then echo 0 else echo $output fi ;; finwait2) output=$(awk '/FIN_WAIT2/{print $2}' $tmp_file) if [ "$output" == "" ];then echo 0 else echo $output fi ;; *) echo -e "\e[033mUsage: sh $0 [closed|closing|closewait|synrecv|synsent|finwait1|finwait2|listen|established|lastack|timewait]\e[0m" esac
2.給指令碼賦予執行許可權並執行指令碼進行測試,給tcp_status.txt文字zabbix許可權
# chmod +x /etc/zabbix/scripts/tcp_conn_status.sh
# bash /etc/zabbix/scripts/tcp_conn_status.sh established
1239
# chown zabbix.zabbix /tmp/tcp_status.txt
3.編寫zabbix子配置檔案
# vim /etc/zabbix/zabbix_agentd.d/userparameter_tcp_conn.conf UserParameter=tcp.status[*],/etc/zabbix/scripts/tcp_conn_status.sh $1
4.啟動zabbix-agent
# systemctl restart zabbix-agent.service
zabbix 服務端配置
✏️ 本文所使用模板連結:https://pan.baidu.com/s/1pq-2Swff1XzeHwVkvABQEQ 提取碼:2iab
首先在伺服器上面測試能否獲取到值
# zabbix_get -s 172.24.115.5 -k tcp.status[established]
826
1.建立模板
2.建立該模板下的11個監控項,下面示例其中一個
3.建立該模板下的圖形
4.關聯該模板到客戶端主機
5.進行資料檢視
6.在grafana上面進行繪圖展示