准备几台服务器
客户端服务器关闭或者开放10050端口
编写shell脚本
编写discovery.sh脚本
转换为json格式的数据,可以被zabbix服务器识别
#!/bin/bash
#检测端口
portarray=(`netstat -tnlp|egrep -i "$1"|awk {'print $4'}|awk -F':' '{if ($NF~/^[0-9]*$/) print $NF}'|sort|uniq`)
length=${#portarray[@]}
printf "{\n"
printf '\t'"\"data\":["
for ((i=0;i<$length;i++))
do
printf '\n\t\t{'
printf "\"{#TCP_PORT}\":\"${portarray[$i]}\"}"
if [ $i -lt $[$length-1] ];then
printf ','
fi
done
printf "\n\t]\n"
printf "}\n"
客户端运行一下
修改配置文件
这里面的配置自己配置,每个人都不一样,我是源码安装的跟yum安装有点区别
进入mem.conf添加,随便添加在哪里
重启zabbix_agentd服务
服务器端运行
zabbix_get -s 192.168.10.142 -k discovery
跟客户端一样
配置浏览器
配置自动发现
点击模板自动发现
创建发现规则
创建监控原型
创建触发器
添加主机
出现了Value should be a JSON object.
原因是脚本运行的是zabbix用户无法使用netstat -tunlp查询端口,所以我们需要添加权限
chmod +s /bin/netstat