1. tcp的11种状态:
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 - 没有任何连接状态;
2. 查看tcp连接状态的命令:
[root@node1 ~]# netstat-antp
[root@node1 ~]# netstat -ant | grep -c ESTABLISHED(状态名称)
2
3. 优化zabbix客户端的内核参数:
[root@node1 ~]# vim /etc/sysctl.conf
net.ipv4.tcp_fin_timeout = 30 #timeout时间
net.ipv4.tcp_keepalive_time = 1200 #长连接
net.ipv4.tcp_syncookies = 1 #cookies ,记录登录状态
net.ipv4.tcp_tw_reuse = 1 #time_wait复用
net.ipv4.tcp_tw_recycle = 1 #回收
net.ipv4.ip_local_port_range = 10000 65000 #调整本地随机端口范围net.ipv4.tcp_max_syn_backlog=8192
net.ipv4.tcp_max_tw_buckets = 5000
4. 手动批量创建自定义监控项:
1>. 添加一个文件写入11个状态:
[root@node1 ~]# cd /etc/zabbix/zabbix_agent2.d/
[root@node1 zabbix_agent2.d]# vim tcp.txt
ESTABLISHED
SYN_SENT
SYN_RECV
FIN_WAIT1
FIN_WAIT2
TIME_WAIT
CLOSED
CLOSED_WAIT
LAST_ACK
LISTEN
CLOSING
2>. 使用循环创建子配置文件,自定义监控项key:
[root@node1 zabbix_agent2.d]# while read line; do echo "UserParameter=$line
,netstat -ant | grep -c '$line'" >> tcp.conf ;done < tcp.txt
[root@node1 zabbix_agent2.d]# cat tcp.conf
UserParameter=ESTABLISHED,netstat -ant | grep -c 'ESTABLISHED'
UserParameter=SYN_SENT,netstat -ant | grep -c 'SYN_SENT'
UserParameter=SYN_RECV,netstat -ant | grep -c 'SYN_RECV'
UserParameter=FIN_WAIT1,netstat -ant | grep -c 'FIN_WAIT1'
U