Tcp的连接状态对于我们web服务器来说是至关重要的,尤其是并发量ESTABLISH;或者是syn_recv值,假如这个值比较大的话我们可以认为是不是受到了攻击,或是是time_wait值比较高的话,我们要考虑看我们内核是否需要调优,太高的time_wait值的话会占用太多端口,要是端口少的话后果不堪设想:
一、下面是一个监控的脚本:
脚本放在/usr/local/zabbix/scripts/下面,命名tcp_status。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
#!/bin/bash
#shuidi
#scripts for tcp status
function
SYNRECV {
/usr/sbin/ss
-ant |
awk
'{++s[$1]} END {for(k in s) print k,s[k]}'
|
grep
'SYN-RECV'
|
awk
'{print $2}'
}
function
ESTAB {
/usr/sbin/ss
-ant |
awk
'{++s[$1]} END {for(k in s) print k,s[k]}'
|
grep
'ESTAB'
|
awk
'{print $2}'
}
function
FINWAIT1 {
/usr/sbin/ss
-ant |
awk
'{++s[$1]} END {for(k in s) print k,s[k]}'
|
grep
'FIN-WAIT-1'
|
awk
'{print $2}'
}
function
FINWAIT2 {
/usr/sbin/ss
-ant |
awk
'{++s[$1]} END {for(k in s) print k,s[k]}'
|
grep
'FIN-WAIT-2'
|
awk
'{print $2}'
}
function
TIMEWAIT {
/usr/sbin/ss
-ant |
awk
'{++s[$1]} END {for(k in s) print k,s[k]}'
|
grep
'TIME-WAIT'
|
awk
'{print $2}'
}
function
LASTACK {
/usr/sbin/ss
-ant |
awk
'{++s[$1]} END {for(k in s) print k,s[k]}'
|
grep
'LAST-ACK'
|
awk
'{print $2}'
}
function
LISTEN {
/usr/sbin/ss
-ant |
awk
'{++s[$1]} END {for(k in s) print k,s[k]}'
|
grep
'LISTEN'
|
awk
'{print $2}'
}
$1
|
二、填写key值:
1
2
3
|
# cat /etc/zabbix/zabbix_agentd.conf
#monitor tcp
UserParameter=tcp[*],
/usr/local/zabbix/scripts/tcp_status
$1
|
三、导入模板(在我的附件上,然后触发器根据自己的情况调整:)
模版的导入很简单,具体我这里不再介绍。
四、查看效果:
五、各参数意义
TCP套接字解释 状态意义
CLOSED 没有使用这个套接字
LISTEN 套接字正在监听入境连接
SYN_SENT 套接字正在试图主动建立连接
SYN_RECEIVED 正在处于连接的初始同步状态
ESTABLISHED 连接已建立
CLOSE_WAIT 远程套接字已经关闭:正在等待关闭这个套接字
FIN_WAIT_1 套接字已关闭,正在关闭连接
CLOSING 套接字已关闭,远程套接字正在关闭,暂时挂起关闭确认
LAST_ACK 远程套接字已,正在等待本地套接字的关闭确认
FIN_WAIT_2 套接字已关闭,正在等待远程套接字关闭
TIME_WAIT 这个套接字已经关闭,正在等待远程套接字的关闭传送
到此TCP监控我们就配置OK了。
附件:http://down.51cto.com/data/2366231
本文转自 wzlinux 51CTO博客,原文链接:http://blog.51cto.com/wzlinux/1704878,如需转载请自行联系原作者