zabbix 添加自动发现端口并监控

最近在部署zabbix监控  有些服务器上开启的服务端口非常多  如果一个个添加监控会很繁琐,于是想到了自动发现规则  自动发现服务器上的服务端口并进行监控。

在zabbix客户端服务器上进行操作

1)编写端口自动发现的脚本

  

cat /usr/local/zabbix/scripts/discover_port.sh
#!/bin/bash
portarray=(`sudo 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"

chmod +x discovertcpport.sh ##增加执行权限

2)配置zabbix客户端的配置文件

在最后添加

tail -5 /usr/local/zabbix/etc/zabbix_agentd.conf

##自动发现端口并监控
UserParameter=tcpportlisten,/bin/bash /usr/local/zabbix/scripts/discover_port.sh "$1"

3)重启zabbix_agent服务

 

/etc/init.d/zabbix_agentd restart

4)在zabbix客户端进行脚本测试

sh /usr/local/zabbix/scripts/discover_port.sh
{
"data":[
{"{#TCP_PORT}":"10050"},
{"{#TCP_PORT}":"10509"},
{"{#TCP_PORT}":"111"},
{"{#TCP_PORT}":"12871"},
{"{#TCP_PORT}":"228"},
{"{#TCP_PORT}":"25"},
{"{#TCP_PORT}":"3001"},
{"{#TCP_PORT}":"32555"},
{"{#TCP_PORT}":"38312"},
{"{#TCP_PORT}":"8001"},
{"{#TCP_PORT}":"8002"},
{"{#TCP_PORT}":"8003"},
{"{#TCP_PORT}":"8004"},
{"{#TCP_PORT}":"8005"},
{"{#TCP_PORT}":"9000"}
]
}

5)在zabbix服务端进行测试

/usr/local/zabbix/bin/zabbix_get -s 10.128.10.93 -k tcpportlisten
{
"data":[
{"{#TCP_PORT}":"10050"},
{"{#TCP_PORT}":"10509"},
{"{#TCP_PORT}":"111"},
{"{#TCP_PORT}":"12871"},
{"{#TCP_PORT}":"228"},
{"{#TCP_PORT}":"25"},
{"{#TCP_PORT}":"3001"},
{"{#TCP_PORT}":"32555"},
{"{#TCP_PORT}":"38312"},
{"{#TCP_PORT}":"8001"},
{"{#TCP_PORT}":"8002"},
{"{#TCP_PORT}":"8003"},
{"{#TCP_PORT}":"8004"},
{"{#TCP_PORT}":"8005"},
{"{#TCP_PORT}":"9000"}
]
}

测试通过后再zabbixweb页面上进行配置

创建自动发现规则

 

 创建监控项原型

 

 创建 触发器原型

 

 6)查看是否成功

在配置---主机----触发器中进行查看  说明已经成功

 

问题总结

5.1.服务器测试与客户端通信时:

zabbix sudo: no tty present and no askpass program specified
 

解决:

zabbix客户端修改zabbix_agentd.conf:

AllowRoot=1
 

重启客户端:

# /etc/init.d/zabbix_agentd restart
 

脚本添加权限及修改属主:

# chown zabbix. discover_port.sh
# chmod +x discover_port.sh
 

5.2.测试通信报错2:

zabbix sudo: sorry, you must have a tty to run sudo
 

解决:

vi /etc/sudoers (最好用visudo命令)
注释掉 Default requiretty 一行
#Default requiretty
posted @ 2018-12-28 10:57  pyng  阅读(4516)  评论(0编辑  收藏  举报