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
后面添加监控项,添加图形是和上面一样的操作,就不再赘述了。
评论
发表评论