使用zabbix监控TCP连接状态

监控原理:

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网页添加监控项

可以根据监控项做图形
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这是一个比较复杂的任务,需要使用Shell脚本编写。以下是一个简单的实现,你可以根据实际情况进行修改和完善。 1. Zabbix监控TCP连接状态收集 首先,我们可以使用netstat命令来获取TCP连接状态信息。然后,我们可以编写一个脚本,将该信息转换为Zabbix可接受的格式,并将其发送到Zabbix Server上。 ``` #!/bin/bash HOSTNAME=$(hostname) # 获取TCP连接状态信息 TCP_STATUS=$(netstat -nat | awk '{print $6}' | sort | uniq -c | awk '{print $2,$1}') # 将信息转换为Zabbix可接受的格式 ITEMS="" for status in $TCP_STATUS do key="tcp.status[$status]" value=$(echo $TCP_STATUS | awk -v status="$status" '{if ($1 == status) print $2}') ITEMS="$ITEMS -z $ZABBIX_SERVER -s $HOSTNAME -k $key -o $value" done # 将信息发送到Zabbix Server上 zabbix_sender $ITEMS ``` 2. Zabbix监控MySQL状态信息收集 接下来,我们可以使用MySQL命令行工具来获取MySQL状态信息。然后,我们可以编写一个脚本,将该信息转换为Zabbix可接受的格式,并将其发送到Zabbix Server上。 ``` #!/bin/bash HOSTNAME=$(hostname) # 获取MySQL状态信息 MYSQL_STATUS=$(mysqladmin -u root -pYOUR_PASSWORD status) # 将信息转换为Zabbix可接受的格式 ITEMS="" IFS="|" for status in $MYSQL_STATUS do key=$(echo $status | awk '{print $1}') value=$(echo $status | awk '{print $2}') ITEMS="$ITEMS -z $ZABBIX_SERVER -s $HOSTNAME -k mysql.status[$key] -o $value" done # 将信息发送到Zabbix Server上 zabbix_sender $ITEMS ``` 3. Zabbix监控内存信息收集 最后,我们可以使用free命令来获取内存信息。然后,我们可以编写一个脚本,将该信息转换为Zabbix可接受的格式,并将其发送到Zabbix Server上。 ``` #!/bin/bash HOSTNAME=$(hostname) # 获取内存信息 MEMORY=$(free | awk 'NR==2{print $2,$3,$4}') # 将信息转换为Zabbix可接受的格式 ITEMS="-z $ZABBIX_SERVER -s $HOSTNAME -k memory.total -o $(echo $MEMORY | awk '{print $1}')" ITEMS="$ITEMS -z $ZABBIX_SERVER -s $HOSTNAME -k memory.used -o $(echo $MEMORY | awk '{print $2}')" ITEMS="$ITEMS -z $ZABBIX_SERVER -s $HOSTNAME -k memory.free -o $(echo $MEMORY | awk '{print $3}')" # 将信息发送到Zabbix Server上 zabbix_sender $ITEMS ``` 注意,上述脚本中的ZABBIX_SERVER和YOUR_PASSWORD需要替换为实际的值。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值