zabbix-监控tcp十一状态

本文详细解析了TCP连接的十一种状态,并介绍了如何通过Zabbix进行自定义TCP监控配置及web界面操作流程。

1.tcp的十一种状态详解

  • 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 - 没有任何连接状态;
  • 客户端独有的:(1)SYN_SENT (2)FIN_WAIT1 (3)FIN_WAIT2 (4)CLOSING (5)TIME_WAIT 。
  • 服务端独有的:(1)LISTEN (2)SYN_RCVD (3)CLOSE_WAIT (4)LAST_ACK 。
  • 共有的:(1)CLOSED (2)ESTABLISHED 。
  • 关于tcp详解链接

2.自定义监控tcp的key

[root@zabbix-01 ~]# cd /etc/zabbix/zabbix_agentd.d/
[root@zabbix-01 zabbix_agentd.d]# cat -n tcp_state.conf  
     1  UserParameter=tcp_state[*],netstat -ant|grep -c $1
[root@zabbix-01 zabbix_agentd.d]#  systemctl restart zabbix-agent
zabbix-server测试
[root@zabbix ~]# zabbix_get -s 10.0.0.7 -k tcp_state[LISTEN]
8

3.zabbix-web界面操作

3.1创建模板

这里写图片描述

3.2创建监控项

这里写图片描述

3.3所有监控项

这里写图片描述

3.4添加主机

这里写图片描述

3.5查看结果

这里写图片描述

<think>我们正在讨论Zabbix监控TCP连接状态的问题。根据用户提供的引用信息,我们可以总结出以下关键点:1.需要创建一个自定义脚本来获取TCP连接状态(如LISTEN,ESTABLISHED等)。2.在Zabbix agent的配置文件中定义UserParameter,以便Zabbixserver可以通过agent调用该脚本。3.在Zabbix server上创建监控项(Items)、触发器(Triggers)和图形(Graphs)来展示和告警。但是,用户提到的是Zabbix7,而引用中使用的可能是旧版本。不过,配置方法基本一致。以下步骤适用于Zabbix7:步骤1:在Zabbix agent上创建监控脚本例如,创建一个脚本`/etc/zabbix/zabbix_agentd.d/tcp_status.sh`,用于获取TCP连接状态。脚本内容如下:```bash#!/bin/bash#该脚本用于获取指定TCP连接状态的数量#使用方式:tcp_status.sh [状态名] if[ $# -ne1 ];thenecho"Usage: $0 <TCP_STATUS>"exit1fiTCP_STATUS=$1ss -ant |grep -i "$TCP_STATUS" |wc-l```赋予脚本执行权限:```bashchmod +x /etc/zabbix/zabbix_agentd.d/tcp_status.sh```步骤2:配置Zabbix agent在agent配置目录(通常为`/etc/zabbix/zabbix_agentd.d/`)下创建一个配置文件,例如`tcp_status.conf`,内容如下:``` UserParameter=tcp_status[*],/bin/bash /etc/zabbix/zabbix_agentd.d/tcp_status.sh "$1"```重启Zabbixagent使配置生效: ```bashsystemctlrestart zabbix-agent```步骤3:在Zabbix server上测试使用`zabbix_get`命令测试能否获取数据(假设agent的IP是10.211.55.10): ```bashzabbix_get-s10.211.55.10-p10050 -k "tcp_status[LISTEN]"```步骤4:在Zabbix Web界面配置1.创建模板(Template):-进入“配置”->“模板”->“创建模板”-填写模板名称,如“TemplateTCP Status”,并添加到群组。2.创建监控项(Items):-在模板中创建监控项,例如监控LISTEN状态的连接数:-名称:TCP LISTEN connections-键值:tcp_status[LISTEN]-数据类型:数字(无符号整数)-更新间隔:1m(或其他合适间隔)-类似地,可以创建其他状态监控项(如ESTABLISHED,TIME_WAIT等)。3.创建触发器(Triggers):-例如,当LISTEN状态的连接数过高时触发告警:-名称:Highnumberof TCPconnections inLISTENstate on{HOST.NAME}-表达式:{Template TCPStatus:tcp_status[LISTEN].last()}>1000#设置合适的阈值4.创建图形(Graphs):-将多个监控项绘制在同一图形中,以便观察不同状态TCP连接的趋势。5.将模板关联到主机:-在主机配置中,选择“模板”页签,添加刚创建的模板。注意:以上步骤中的配置名称和阈值需要根据实际情况调整。引用说明: [^1]提供了测试监控数据的方法和导入模板的提示。 [^2]展示了如何定义UserParameter和调用脚本。 [^3]描述了在Web界面添加监控项、触发器和图形的过程。因此,按照上述步骤,用户可以在Zabbix7上监控TCP连接状态。相关问题:1.如何监控其他TCP状态(如CLOSE_WAIT, SYN_SENT等)?2.如何优化脚本以减少服务器负载?3.当TCP连接数异常时,如何设置更智能的告警阈值?</think>### Zabbix 7 监控 TCP 连接状态配置指南 在 Zabbix 7 中监控 TCP 连接状态,需通过自定义监控项实现,以下是详细步骤: #### 第一步:Agent 端配置脚本 1. **创建监控脚本** 在 Zabbix Agent 服务器上创建脚本 `/etc/zabbix/scripts/tcp_status.sh`: ```bash #!/bin/bash status=$1 ss -ant | awk -v state="$status" '$1 == state {count++} END {print count+0}' ``` 2. **设置脚本权限**: ```bash chmod +x /etc/zabbix/scripts/tcp_status.sh chown zabbix:zabbix /etc/zabbix/scripts/tcp_status.sh ``` 3. **配置 Agent 参数** 在 `/etc/zabbix/zabbix_agentd.d/tcp_status.conf` 中添加: ```ini UserParameter=tcp_status[*],/etc/zabbix/scripts/tcp_status.sh "$1" ``` 4. **重启 Agent**: ```bash systemctl restart zabbix-agent ``` #### 第二步:Zabbix Server 测试 ```bash zabbix_get -s <agent_ip> -k "tcp_status[LISTEN]" # 测试 LISTEN 状态 zabbix_get -s <agent_ip> -k "tcp_status[ESTAB]" # 测试 ESTABLISHED 状态 ``` 正常应返回数字(如 `8`)[^1]。 #### 第三步:Web 界面配置 1. **创建模板** - 进入 **配置 → 模板 → 创建模板** - 名称:`Template OS Linux TCP Status` - 群组:`Templates/Operating systems` 2. **添加监控项** | 键值 | 名称 | 更新间隔 | |---|---|---| | `tcp_status[LISTEN]` | TCP LISTEN | 1m | | `tcp_status[ESTAB]` | TCP ESTABLISHED | 1m | | `tcp_status[TIME_WAIT]` | TCP TIME_WAIT | 1m | > 支持所有 `ss -ant` 状态(如 SYN_SENT、CLOSE_WAIT 等)[^2] 3. **创建触发器**(示例) ```ini 名称: High TIME_WAIT connections on {HOST.NAME} 表达式: {Template OS Linux TCP Status:tcp_status[TIME_WAIT].last()}>1000 严重性: 警告 ``` 4. **创建图形** - 添加新图形,包含所有 TCP 状态监控- 类型:**堆叠图**(直观显示连接分布) 5. **关联模板到主机** 在主机配置中,选择 **模板** 页签 → 添加 `Template OS Linux TCP Status`[^3] #### 关键注意事项 1. 确保 Agent 已安装 `iproute2` 包(提供 `ss` 命令) 2. 防火墙需开放 `10050` 端口 3. 可通过 **监控 → 最新数据** 验证数据采集 4. 对于高并发场景,建议调整 Agent 的 `StartAgents` 参数 > 配置完成后,可在 **仪表盘** 添加图形组件,实时监控状态连接数变化趋势[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值