zabbix根据主机和端口列表自动发现监控远程MongoDB实例
#This script is used to get discoveredmongodb servers status#echo "db.serverStatus().uptime"|mongo 192.168.5.23:30002/admin-uroot -pxxxx
#echo "db.serverStatus().mem.mapped"|mongo 192.168.5.23:30002/admin-uroot -pxxx
#echo "db.serverStatus().globalLock.activeClients.total"|mongo 192.168.5.23:30002/admin-uroot -pxxx
# Macro {#MONGO_INFO}"HOSTNAME:PORT:USERNAME:PASSWORD"
#sh discovery_mongodb_status.shuptime{#MONGO_HOST}
#sh discovery_mongodb_status.shmem mapped{#MONGO_HOST}
#sh discovery_mongodb_status.shglobalLock activeClients total{#MONGO_HOST}
#one more parameter
mongo_info=""
command_line=""
function check_mongo_info() {
num=$(echo $mongo_info|awk -F":" '{print NF}')
host=$(echo $mongo_info|awk -F":" '{print $1}')
port=$(echo $mongo_info|awk -F":" '{print $2}')
username=$(echo $mongo_info|awk -F":" '{print $3}')
password=$(echo $mongo_info|awk -F":" '{print $4}')
case $num in
2)
command_line="/data/app_platform/mongodb/bin/mongo $host:$port/admin"
;;
3)
command_line="/data/app_platform/mongodb/bin/mongo $host:$port/admin -u$username -p''"
;;
4)
command_line="/data/app_platform/mongodb/bin/mongo $host:$port/admin -u$username -p$password"
;;
esac
}
case $# in
2)
mongo_info=$(grep $2 /usr/local/zabbix/bin/mongodb_servers.txt)
check_mongo_info
output=$(/bin/echo "db.serverStatus().$1" |$command_line|sed -n '3p')
;;
3)
mongo_info=$(grep $3 /usr/local/zabbix/bin/mongodb_servers.txt)
check_mongo_info
output=$(/bin/echo "db.serverStatus().$1.$2" |$command_line|sed -n '3p')
;;
4)
mongo_info=$(grep $4 /usr/local/zabbix/bin/mongodb_servers.txt)
check_mongo_info
output=$(/bin/echo "db.serverStatus().$1.$2.$3" |$command_line|sed -n '3p')
;;
esac
#check if the output contains "NumberLong"
if [[ "$output" =~ "NumberLong" ]];then
echo $output|sed -n 's/NumberLong(//p'|sed -n 's/)//p'
else
echo $output
fi
页:
[1]