0,适用于服务器比较多,并启动了很多端口的情况。避免手动一个一个添加。
1,zabbix客户端配置
- 添加zabbix用户为sudo用户,服务器远程执行脚本用
1
echo "zabbix ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
- 修改zabbix配置文件,允许root用户执行脚本
1
echo "AllowRoot=1" >> /etc/zabbix/zabbix_agentd.conf
- 编写获取端口的脚本
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27mkdir /etc/zabbix/scripts/
vim /etc/zabbix/scripts/discover_port.sh
#!/bin/bash
portarray=(`ss -tnlp |awk {'print $4'}|awk -F':' '{if ($NF~/^[0-9]*$/) print $NF}'|sort|uniq`)
length=${#portarray[@]}
function zabbix_json(){
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"
}
function check(){
sudo ss -tnlp |grep 'users' |awk -F ':' "/:$1/ {print \$NF}" |grep -oE '\".*\"' |sort |uniq |head -n1 |sed 's/"//g' |awk -F ',' '{print $1}'
}
[[ $1 = check ]] && $* || zabbix_json - 修改脚本权限
1
2chown zabbix:zabbix /etc/zabbix/scripts/discover_port.sh
chmod +x /etc/zabbix/scripts/discover_port.sh - 配置获取服务器端口键值配置文件
1
2cat /etc/zabbix/zabbix_agentd.d/auto_discover_port.conf
UserParameter=discovery.tcpport[*],/etc/zabbix/scripts/discover_port.sh $1 $2 - 重启zabbix服务
1
systemctl restart zabbix-agent.service
2,本地执行脚本测试
3,zabbix服务端执行脚本测试
4,都可以成功执行了,开始进行zabbix自动发现配置
配置–>模板–>选择Template OS Linux by Zabbix agent模板–>自动发现规则–>创建发现规则
- 接下来在创建好的自动发现规则里操作
监控项原型–>创建监控项原型 - 再来创建第二个监控项原型
- 最后创建触发器
- 都创建好之后查看你配置这台zabbix的监控项
5,可以看到服务器上启动的端口都监控起来了,如果想排除掉某些端口,只需要改一下脚本就行
如果遇到奇奇怪怪的问题,比如服务器获取不了客户端信息的情况,检查你的selinux看看