监控原理:
netstat -an |grep ^tcp |grep LISTEN |wc -l
8
tcp状态:
- 可以使用man netstat查看TCP的各种状态信息描述
ESTABLISHED socket已经建立连接
CLOSED socket没有被使用,无连接
CLOSING 服务器端和客户端都同时关闭连接
CLOSE_WAIT 等待关闭连接
TIME_WAIT 表示收到了对方的FIN报文,并发送出了ACK报文,等待2MSL后就可回到CLOSED状态
LAST_ACK 远端关闭,当前socket被动关闭后发送FIN报文,等待对方ACK报文
LISTEN 监听状态
SYN_RECV 接收到SYN报文
SYN_SENT 已经发送SYN报文
FIN_WAIT1 连接正在关闭
FIN_WAIT2 正在等待来自远端的关闭。
监控脚本编写
vim tcp_connection_status.sh
#!/bin/bash
LISTEN() {
netstat -an |grep ^tcp |grep LISTEN |wc -l
}
ESTABLISHED() {
netstat -an |grep ^tcp |grep ESTABLISHED |wc -l
}
TIME_WAIT() {
netstat -an |grep ^tcp |grep TIME_WAIT |wc -l
}
SYN_SENT() {
netstat -an |grep ^tcp |grep SYN_SENT |wc -l
}
SYN_RECV() {
netstat -an |grep ^tcp |grep SYN_RECV |wc -l
}
CLOSE() {
netstat -an |grep ^tcp |grep CLOSE |wc -l
}
$1
添加zabbix配置文件
tcp_status.conf
UserParameter=tcp.status[*],/usr/local/zabbix/bin/tcp_connection_status.sh $1
在zabbix-server端
zabbix_get -s 192.168.226.164 -p 10055 -k tcp.status[timewait]
在web网页添加监控项
可以根据监控项做图形