首页 > 其他分享 >自定义监控项

自定义监控项

时间:2024-06-06 23:54:53浏览次数:29  
标签:状态 自定义 ACK 报文 tcp 监控 FIN WAIT

采集TCP连接状态(实战项目)

精确分析tcp连接状态,可以精准得知服务器的链接情况,确保web服务器的健康

1. 命令获取tcp的状态

[root@web-7 ~]#
# -a 显示所有socket、-t显示tcp协议连接  -n 只显示ip
[root@web-7 ~]#netstat -ant
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN     
tcp        0      0 10.0.0.7:10050          10.0.0.61:59054         TIME_WAIT  
tcp        0      0 10.0.0.7:10050          10.0.0.61:58996         TIME_WAIT  


2.提取精准的状态数据
# -c 统计行数
[root@web-7 ~]#netstat -ant |grep -c TIME_WAIT
34

# 有6个tcp已经确认建立了连接
[root@web-7 ~]#netstat -ant |grep -c LISTEN
6




3. 修改自定义监控项的配置文件,按照zabbix-agent的规则,参考写一个。
[root@web-7 ~]#cat /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf 

使用参数,自定义监控的命令
UserParameter=mysql.version,mysql -V

UserParameter=监控项名称,监控项获取值的命令

因此写法如下,这里采集LISTEN、TIME_WAIT、ESTABLISHED几个状态


cat >/etc/zabbix/zabbix_agentd.d/tcp_status.conf <<'EOF'
UserParameter=LISTEN,netstat -ant|grep -c LISTEN
UserParameter=TIME_WAIT,netstat -ant|grep -c TIME_WAIT
UserParameter=ESTABLISHED,netstat -ant|grep -c ESTABLISHED
EOF

重启agent
[root@web-7 ~]#systemctl restart zabbix-agent


4.测试自定义的监控项是否可用
[root@m-61 ~]#zabbix_get -s 10.0.0.7 -k LISTEN
6
[root@m-61 ~]#zabbix_get -s 10.0.0.7 -k TIME_WAIT
38
[root@m-61 ~]#zabbix_get -s 10.0.0.7 -k ESTABLISHED
2


# nice,就这么简单,可以用了。

5.上述的配置文件,也支持高级写法,以传参的形式动态采集值

cat > /etc/zabbix/zabbix_agentd.d/tcp_status.conf <<'EOF'
UserParameter=tcp_status[*],netstat -ant|grep -c $1
EOF

[root@web-7 ~]#systemctl restart zabbix-agent


zabbix-UI添加

创建监控项

自定义监控项的属性

查看最新的web7监控数据

TCP所有的连接状态

CLOSED: 表示初始状态。

LISTEN: 表示服务器端的某个SOCKET处于监听状态,可以接受连接。

SYN_SENT:在服务端监听后,客户端SOCKET执行CONNECT连接时,客户端发送SYN报文,此时客户端就进入
SYN_SENT状态,等待服务端的确认


SYN_RCVD: 表示服务端接受到了SYN报文,在正常情况下,这个状态是服务器端的SOCKET在建立TCP连接时的三
次握手会话过程中的一个中间状态,很短暂,基本上用netstat你是很难看到这种状态的,除非你特意写了一
个客户端测试程序,故意将三次TCP握手过程中最后一个ACK报文不予发送。因此这种状态时,当收到客户端的
ACK报文后,它会进入到ESTABLISHED状态。

ESTABLISHED:表示连接已经建立了。

FIN_WAIT_1: 这个是已经建立连接之后,其中一方请求终止连接,等待对方的FIN报文。FIN_WAIT_1状态是当
SOCKET在ESTABLISHED状态时,它想主动关闭连接,向对方发送了FIN报文,此时该SOCKET即进入到FIN_WAIT_1
状态。而当对方回应ACK报文后,则进入到FIN_WAIT_2状态,当然在实际的正常情况下,无论对方何种情况下
,都应该马上回应ACK报文,所以FIN_WAIT_1状态一般是比较难见到的,而FIN_WAIT_2状态还有时常常可以用
netstat看到。

FIN_WAIT_2:实际上FIN_WAIT_2状态下的SOCKET,表示半连接,也即有一方要求close连接,但另外还告诉对
方,我暂时还有点数据需要传送给你,稍后再关闭连接。

TIME_WAIT: 表示收到了对方的FIN报文,并发送出了ACK报文,就等2MSL后即可回到CLOSED可用状态了。如果
FIN_WAIT_1状态下,收到了对方同时带FIN标志和ACK标志的报文时,可以直接进入到TIME_WAIT状态,而无须
经过FIN_WAIT_2状态。


CLOSING: 这种状态比较特殊,实际情况中应该是很少见,属于一种比较罕见的例外状态。正常情况下,当你
发送FIN报文后,按理来说是应该先收到(或同时收到)对方的ACK报文,再收到对方的FIN报文。但是CLOSING状
态表示你发送FIN报文后,并没有收到对方的ACK报文,反而却也收到了对方的FIN报文。什么情况下会出现此
种情况呢?其实细想一下,也不难得出结论:那就是如果双方几乎在同时close一个SOCKET的话,那么就出现
了双方同时发送FIN报文的情况,也即会出现CLOSING状态,表示双方都正在关闭SOCKET连接。


CLOSE_WAIT: 这种状态的含义其实是表示在等待关闭。怎么理解呢?当对方close一个SOCKET后发送FIN报文给
自己,你系统毫无疑问地会回应一个ACK报文给对方,此时则进入到CLOSE_WAIT状态。接下来呢,实际上你真
正需要考虑的事情是察看你是否还有数据发送给对方,如果没有的话,那么你也就可以close这个SOCKET,发
送FIN报文给对方,也即关闭连接。所以你在CLOSE_WAIT状态下,需要完成的事情是等待你去关闭连接。


LAST_ACK: 这个状态还是比较容易好理解的,它是被动关闭一方在发送FIN报文后,最后等待对方的ACK报文。
当收到ACK报文后,也即可以进入到CLOSED可用状态了。

添加图形


自定义触发器
配置 > 主机 > 触发器 > 创建触发器


标签:状态,自定义,ACK,报文,tcp,监控,FIN,WAIT
From: https://www.cnblogs.com/btcm409181423/p/18236342

相关文章

  • C# 使用Newtonsoft.Json的JsonProperty设置返回的Json数据列名/C# 通过实体类序列化生
    原文链接:https://blog.csdn.net/weixin_44917045/article/details/103236167         https://blog.csdn.net/bazinga_y/article/details/134416680在写分页的时候,返回Json数据给前台的时候,数据不能出来,原因就是Json数据的列名是大写的,而页面需要的是小写的。......
  • 实时监控电脑屏幕软件有哪些?(珍藏篇)
    在当今的数字化工作环境中,实时监控电脑屏幕软件是企业管理、远程协助、教育监控等领域不可或缺的工具。这些软件能够帮助管理者了解员工的工作状态、提升团队协作效率、确保数据安全,同时在家庭教育和远程技术支持中也有广泛应用。 以下是精选的几款实时监控电脑屏幕软......
  • 金蝶云星空在原有简单账表的基础上加上自定义字段
    以采购订单执行明细表为例,在原有基础上加上下面的两个字段产业链备注:F_TXBE_CYL_Notes产业链物料明细ID:F_TXBE_CYL_MateriaID1、首先打开采购订单执行明细表过滤界面找到显示隐藏列中的字段合集 新增字段:产业链备注:F_TXBE_CYL_Notes产业链物料明细ID:F_TXBE_CYL_MateriaID2......
  • shell脚本之证书到期监控和企微告警
    shell脚本之证书到期监控和企微告警shell脚本实现ssl证书过期及webhook推送脚本https.sh检测和告警脚本, https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxxxxxxxxxxxx替换为自己企微的webhook地址即可#!/bin/bash#*******************************************......
  • Spring运维之boot项目打包jar和插件运行并且设置启动时临时属性和自定义配置文件
    打包与运行window版本上制作我们要把idea中的程序抽取出来作为一个独立的jar包把jar包放到服务器上服务器是长期运行的我们就能随时访问了在Maven的生命周期中选择package打包功能在资源管理器中查找java-jar文件名.jarjava-jar文件名.jar但是我们在测试里面......
  • Python实现【监控远程仓库代码提交,如果有提交就自动执行需要监控测试的接口,以确保新提
    一、代码如下importgitfromdel_folderimportdel_folderimporttimefromsend_Dmessageimportsend_messagefromsend_giftimportsend_gift#设置远程仓库路径remote_url='xxx'#本地仓库路径local_path='xxx'#webhook地址和密钥webhook_url="x......
  • 在Linux中,如何进行系统性能的持续监控?
    在Linux中进行系统性能的持续监控,需要综合运用各种命令行工具和图形化界面工具,以及自动化脚本和第三方监控平台。以下是实现持续监控的一些建议步骤和工具:1.使用基础命令行工具实时查看top:实时查看CPU使用率、内存占用、运行中的进程等基本信息。htop(一个增强版的top):提供......
  • tapPromise 函数 (绑定hooks方法)tapable 库,创建自定义插件的库
    tapPromise函数(绑定hooks方法)tapable库,创建自定义插件的库刚看到了一个插件的use函数//引入组件use(plugin:IPluginClass,options?:IPluginOption){if(this._checkPlugin(plugin)&&this.canvas){this._saveCustomAttr(plugin);constpluginRu......
  • 用MATLAB开发智能电脑监控软件
    在现代信息社会中,电脑监控软件变得越来越重要。它们被广泛应用于家庭和企业中,用于监控电脑活动,确保信息安全。本文将介绍如何使用MATLAB开发一款智能电脑监控软件,并提供多个代码示例,以展示其功能和实现过程。1.数据采集首先,我们需要采集电脑的各类数据,例如CPU使用率、内存使用情......
  • c#WinFrom自定义图表仪表控件-频谱
     这是为客户定制的一个频谱图表控件,先看下成品效果,gif较大,略等片刻   开发步骤分析:1、界面有多个间距不等的线分割的区域,每个区域的值范围不同,我们就需要把每个区域定义出来,方便我们操作的时候来计算值2、有几个圆圈是需要鼠标来回拖动的,那么就需要将每个圆的区域定义......