cl_303303303 发表于 2018-10-26 13:40:55

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]
查看完整版本: zabbix根据主机和端口列表自动发现监控远程MongoDB实例