最近在部署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客戶端修改zabbix_agentd.conf:
重啟客戶端:
腳本添加權限及修改屬主:
5.2.測試通信報錯2:
解決: