Ncat 是一个通用的命令行工具,用于在网络上读取、写入、重定向和加密数据。它旨在成为网络瑞士军刀,处理各种各样的安全测试和管理任务。接下来介绍 Zabbix 如何利用 ncat 实现远端端口状态的监控。
os version
代码语言:javascript复制[root@zabbix-server ~]# cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core)
ncat config
代码语言:javascript复制#install ncat
[root@zabbix-server ~]# yum install nc
#ncat version
[root@zabbix-server ~]# rpm -qa |grep ncat
nmap-ncat-6.40-19.el7.x86_64
格式
代码语言:javascript复制ncat [options] [hostname] [port]
参数介绍
代码语言:javascript复制-h 帮助信息
-i secs 延时的间隔
-l 监听模式,用于入站连接
-n 指定数字的IP地址,不能用hostname
-o file 记录16进制的传输
-p port 本地端口号
-r 任意指定本地及远程端口
-s addr 本地源地址
-u UDP模式
-v 详细输出——用两个-v可得到更详细的内容
-w secs timeout的时间
-z 将输入输出关掉——用于扫描时
测试
TCP
代码语言:javascript复制[root@zabbix-server alertscripts]# nc -w 1 192.168.99.50 -z 2222 && echo 0 || echo 1
0
[root@zabbix-server alertscripts]# nc -w 1 192.168.99.50 -z 2221 && echo 0 || echo 1
1
udp
代码语言:javascript复制[root@ZABBIX-Server alertscripts]# nc -u -w 1 192.168.99.50 -z 514 && echo 0 || echo 1
0
[root@ZABBIX-Server alertscripts]# nc -u -w 1 192.168.99.50 -z 515 && echo 0 || echo 1
1
nc 脚本
代码语言:javascript复制[root@zabbix-server alertscripts]# cat nc_port.sh
#!/bin/bash
ipaddr=$1
port=$2
nc -w 1 ${ipaddr} -z ${port} && echo 0 || echo 1
[root@ZABBIX-Server alertscripts]#
[root@ZABBIX-Server alertscripts]# pwd
/usr/lib/zabbix/alertscripts
zabbix config
zabbix-agent(修改配置后重启 zabbix-agent)
代码语言:javascript复制UnsafeUserParameters=1
UserParameter=nc.port[*],/usr/lib/zabbix/alertscripts/nc_port.sh $1 $2
测试
服务器开启 tcp 2222 端口,分别测试 2222 和 2221 其中 0 为开启 ,1 为关闭。
代码语言:javascript复制[root@ZABBIX-Server ~]# zabbix_get -s 192.168.99.50 -k nc.port[192.168.99.50,2222]
0
[root@ZABBIX-Server ~]# zabbix_get -s 192.168.99.50 -k nc.port[192.168.99.50,2221]
1
映射值
监控项
预处理
Throttling 功能( Zabbix4.2 以上版本支持 )
Discard unchanged 直接丢弃重复的数据,如 item 采集的前一个数据和目前数据重复,则只保存前一个数据,直接丢弃后续采集的数据
Discard unchanged with heartbeat 配置一个心跳时间,周期时间内至少会存储一个不变的采集数据
最新数据
触发器