Zabbix自定义监控——TCP状态

声明: 本次记录使用zabbix 5.0版本

下载安装


添加客户端(agent)

这里使用自动发现来添加

1,创建自动发现规则:




2,创建监控项(自定义key)

首先(客户端)创建自定义key:
root@www:~# vim /etc/zabbix/zabbix_agentd.d/tcp_status.conf
UserParameter=tcp.status.[*],ss -antp  |grep -ic "$1"
在zabbix sever上测试key:
[root@xjd-cloud ~]yum install -y zabbix-get     #默认没有安装的,需要手动安装
[root@xjd-cloud ~]# zabbix_get -s <客户端地址> -p <端口> -k tcp.status.[listen]
能显示数字为正常,使用默认端口10050的,可以省略 -p <端口> 参数

PS:注意我这里是5.0版本,更老的版本需要先改zabbix默认配置文件(/etc/zabbix/zabbix_agentd.conf),要在里面修改参数 “ UnsafeUserParameters=1”以及“Include=/etc/zabbix/zabbix_agentd.d/*.conf”

在web端创建监控项截图





创建图形









进阶版
通过一个bash脚本来完成数据的采集,并在UserParameter中调用这个脚本。这种方式的一个优点是脚本的内容可以根据需要进行复杂的处理,比如条件判断,循环处理等等。
mkdir /etc/zabbix/tcp_connect.status    #创建一个文件夹
vim  /etc/zabbix/tcp_connect.status/tcp_connect_status.sh   #准备以下脚本 
#!/bin/bash
#ss -antp 命令的6种常见状态
#LISTEN:表示套接字正在监听传入的连接。
#ESTAB(ESTABLISHED):表示TCP连接已经成功建立。
#SYN_SENT:表示正在等待回应的连接请求。
#SYN_RECV:表示已经收到并正在等待确认的连接请求。
#TIME_WAIT:表示收到了对方的关闭请求,并同意关闭。
#CLOSED:表示没有任何连接状态。
LISTEN() {
	ss -antp |grep -ic "LISTEN" 
}
ESTAB() {
	ss -antp |grep -ic "ESTAB"
}
SYN-SENT() {
	ss -antp |grep -ic "SYN-SENT"
}
SYN-RECV() {
	ss -antp |grep -ic "SYN-RECV"
}
TIME-WAIT() {
	ss -antp |grep -ic "TIME-WAIT"
}
CLOSE() {
	ss -antp |grep -ic "CLOSE" 
}

$1
授权、添加key
chmod  +x  /etc/zabbix/tcp_connect.status/tcp_connect_status.sh 
chown -R zabbix:zabbix /etc/zabbix/tcp_connect.status/tcp_connect_status.sh 

vim    /etc/zabbix/zabbix_agentd.d/tcp_connect_status.conf
UserParameter=tcp.connect.status[*],/etc/zabbix/tcp_connect.status/tcp_connect_status.sh $1
在sever上测试
[root@xjd-cloud ~]# zabbix_get -s aws1.ftp.sh -k tcp.connect.status[LISTEN] 
16
[root@xjd-cloud ~]# zabbix_get -s aws1.ftp.sh -k tcp.connect.status[ESTAB] 
2
[root@xjd-cloud ~]# zabbix_get -s aws1.ftp.sh -k tcp.connect.status[TIME-WAIT] 
72
后面添加监控项,添加图形是和上面一样的操作,就不再赘述了。

评论

此博客中的热门博文

ELK日志平台——Elasticsearch 8.x安装部署

Linux终端中文字体显示乱码问题解决方法

部署ELK日志平台集群(Elasticsearch, Logstash, Kibana)实验记录