一、配置脚本,将脚本分发到各个minion端
1.1.脚本内容
vim 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"
1.2.本地测试脚本
# /bin/bash /usr/local/zabbix-agent/script/discover_port.sh { "data":[ {"{#TCP_PORT}":"10050"}, {"{#TCP_PORT}":"22"}, {"{#TCP_PORT}":"25"}, {"{#TCP_PORT}":"443"}, {"{#TCP_PORT}":"80"}, {"{#TCP_PORT}":"9008"}, {"{#TCP_PORT}":"9012"}, {"{#TCP_PORT}":"9083"}, {"{#TCP_PORT}":"9085"}, {"{#TCP_PORT}":"9088"}, {"{#TCP_PORT}":"9089"} ] }
二、修改zabbix客户端配置文件,增加参数
2.1.修改配置文件,增加参数
# vim /usr/local/zabbix-agent/etc/zabbix_agentd.conf #增加如下 UserParameter=tcpportlisten,/bin/bash /usr/local/zabbix-agent/script/discover_port.sh "$1"
2.2.重启zabbix客户端
# /etc/init.d/zabbix_agentd restart Shutting down zabbix_agentd: [ OK ] Starting zabbix_agentd: [ OK ]
三、服务端测试连通
3.1.测试通信
# /usr/local/zabbix/bin/zabbix_get -s 10.27.182.76 -k tcpportlisten { "data":[ {"{#TCP_PORT}":"10050"}, {"{#TCP_PORT}":"22"}, {"{#TCP_PORT}":"25"}, {"{#TCP_PORT}":"443"}, {"{#TCP_PORT}":"80"}, {"{#TCP_PORT}":"9008"}, {"{#TCP_PORT}":"9012"}, {"{#TCP_PORT}":"9083"}, {"{#TCP_PORT}":"9085"}, {"{#TCP_PORT}":"9088"}, {"{#TCP_PORT}":"9089"} ] }
四、添加自动发现规则
4.1.创建发现规则
4.2.配置发现规则名称
4.3.配置检测规则
4.4.配置触发器
五、错误处理
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
原文地址:http://blog.51cto.com/ckl893/2104864
时间: 2024-11-25 23:21:22