zabbix 自動發現監控端口(六)
阿新 • • 發佈:2018-04-18
zabbix一、配置腳本,將腳本分發到各個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
zabbix 自動發現監控端口(六)