站長資訊網
        最全最豐富的資訊網站

        linux-監控查詢mongo索引片鍵腳本

          #!/bin/bash  #file name      :watch_dog.sh  #function       :1、查看mongodb數據庫集合;2、查看各個集合索引;3、查看各個集合片鍵  #version        :V 1.0    #配置參數  #base_data_path='../data/'  #mongodb_url='172.20.72.42:20000'  #mongodb_config_url='172.20.72.42:20000'  #mysql_host_ip="10.40.66.184"  #mysql_host_port="3306"  #mysql_user="root"  #mysql_pwd="Ab123456"  #mysql_database_name="XXXX"  ################################    PATH="$PATH:/data/mongodb/bin/"    #配置腳本需要的參數  if [ $# -ne 1  ] ;then    echo "Warn:請輸入使用的配置參數名稱,如local,pro等,在路徑../conf中配置的參數文件名"    echo    exit 1  fi      source_url="/data/mongodb/watch_mongoDb/conf/$1.conf"  if [ ! -e  "$source_url" ];then    echo "Warn:配置文件不存在"    echo     exit 1  fi    source $source_url  ###############################        #提醒信息  warn_info(){    echo "$(date +"%Y-%m-%d %T"):$1"  }    #獲取路徑  data_path(){     if [ $# -eq 1  ] ;then        echo "${base_data_path}/data/"$1.$$     else        warn_info "Warn:路徑有問題"        warn_info        exit 1     fi  }    #執行mysql存儲過程  handler_sql(){    warn_info 'B:handler shard sql,begin'    mysql -u${mysql_user} -p${mysql_pwd} -h${mysql_host_ip} -P${mysql_host_port}  ${mysql_database_name} < $(data_path sql)    warn_info 'F:handler shards sql success,finish'  }    #打包語句成sql語句  package_sql(){    warn_info "B:package sql execute,begin,M:${1},DB:${2},DATA:${3}"    database=${2%.*}    collection=${2#*.}    #賦值    warn_info "===>database:${database}==>collection:${collection}==>value:${3}"    echo "call mongo_collection_handler(${1},${3},"${collection}","${database}");" >> $(data_path "sql")    warn_info "F:package sql execute,finish,M:${1},DB:${2},DATA:${3}"  }    #處理片鍵文件信息  handler_shards(){    warn_info "B:handler shards execute,begin,DB:$1"      while read line    do      my_id=$(echo "$line" | jq --compact-output  ._id |sed 's/"http://g')      mykey=$(echo "$line" | jq --compact-output  .key |sed -e 's/"/\"/g'  -e 's/{/"{/g' -e 's/}/}"/g')      #database=${my_id%.*}      #collection=${my_id#*.}      package_sql 2 "$my_id" "$mykey"        done < $(data_path "shard.$1")    warn_info "F:handler shards execute,finish,DB:$1"  }    #查詢片鍵信息  search_shard(){    warn_info "B:search shard execute,begin,DB:$1,URL:$2"    collection_count=$(jq '.|length' $(data_path "col.$1"))    warn_info "=>${1} collection count :$collection_count"        for (( i=0; i< ${collection_count}; i=i+1 ));     do       collection_name=`jq .[$i] $(data_path "col.$1") | sed 's/"http://g'`;       result=`mongo --quiet $2/config --eval "printjson(db.collections.findOne({'_id':'$1.$collection_name'},{'key':1}))"`       #打印原始信息       #echo $result >> $(data_path "raw.shard.$1")        if [[ $result != "null" || $(echo $result | jq .key) != "null"  ]] ;then  	#echo "{ "_id" : "AAAA_XXXX.${collection_name}", "key" :null}" >> $(data_path "shard.$1")          #else  	echo $result >> $(data_path "shard.$1")       fi    done    #刪除null的一行數據    sed -i '/null/d' $(data_path "shard.$1")     warn_info "F:search shard execute,finsh,DB:$1,URL:$2"  }    #處理集合索引信息  handler_indexes(){    warn_info "B:handler indexes,begin,DB:$1"         while read line     do      #獲取索引信息      indexes=""$(echo $line | jq --compact-output .[].key | sed 's/"/\"/g')""      #獲取db-集合信息      db_collection_name=$(echo $line | jq --compact-output .[0].ns|sed 's/"http://g')      #打包成sql語句      #echo "<<<<<<========="      #echo "---->$(echo $indexes)---->"      #echo "++++> ${indexes}"      #echo "=====>>>>>>>>>"      package_sql 1 "$db_collection_name" "$(echo $indexes)"        done < $(data_path "index.$1")      warn_info "F:handler indexes,finish,DB:$1"  }    #查詢集合索引信息  search_index(){    warn_info "search collection index,begin,DB:$1,URL:$2"    collection_count=$(jq '.|length' $(data_path "col.$1"))    warn_info "collection_count:${collection_count}"    for (( i=0; i< ${collection_count}; i=i+1 ));    do       collection=$(jq --compact-output .[$i] $(data_path "col.$1") | sed 's/"http://g');       temp_indexes=$(mongo --quiet "$2/$1" --eval "printjson(db.getCollection("${collection}").getIndexes())")       echo $temp_indexes | jq --compact-output . >> $(data_path "index.$1")    done      warn_info "search collection index,finish,DB:$1,URL:$2"  }    #查詢所有表集合  search_collection(){   warn_info "B:searh collection executed,begin,DB:$1,URL:$2"   mongo --quiet "$2/$1"  --eval "printjson(db.getCollectionNames())" > $(data_path "col.${1}")   warn_info "F:search collection execute,finish,DB:S1,URL:$2"  }    #集合從mysql數據庫中查,原因是只顯示mysql中的列出的集合信息  #search_collection2(){  #  warn_info "B:search collection2 executed,begin,DB:$1"  #  collection_sql="SELECT collection_name from mongo_collection_info where enabled_flag=1 and database_name="${1}";"  #  warn_info "===execute sql=>${collection_sql}=>"  #  mysql  -u${mysql_user} -p${mysql_pwd} -h${mysql_host_ip} -P${mysql_host_port}  ${mysql_database_name} -e "${collection_sql}" > $(data_path "col.${1}")  #  #數據封裝成數組,兼容search_collection的結果  #  sed -i  -e 's/^/"&/g' -e 's/$/&",/g' -e "1i [" -e '$s/.$//' $(data_path "col.${1}")  #  echo "]" >> $(data_path "col.${1}")  #  warn_info "F:search collection2 executed,fi:nish,DB:$1"  #}      #程序執行  watch_dog2_work(){   warn_info "B:watch dog starts woring data"     search_collection "AAAA_XXXX" "$mongodb_url"   search_collection "BBBB_XXXX" "$mongodb_url"     search_index "AAAA_XXXX" "$mongodb_url"   search_index "BBBB_XXXX" "$mongodb_url"     search_shard "AAAA_XXXX" "$mongodb_config_url"   search_shard "BBBB_XXXX" "$mongodb_config_url"     handler_indexes "mapper_XXXX"   handler_indexes "BBBB_XXXX"     handler_shards "AAAA_XXXX"   handler_shards "BBBB_XXXX"     #執行sql語句   handler_sql   warn_info "F:watch dog finishes work"  }    echo   warn_info "==============================="  #開始工作  watch_dog2_work
        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 91av国产精品| 国产啪亚洲国产精品无码| 777国产盗摄偷窥精品0OOO| 中文字幕av日韩精品一区二区| 久久精品国产久精国产| 久久国产亚洲精品无码| 亚洲中文久久精品无码| 中文字幕精品视频| 国产精品无打码在线播放| 国产成人精品日本亚洲| 亚洲精品午夜无码电影网| 精品久久久久久久中文字幕| 青青青国产精品国产精品久久久久| 亚洲精品卡2卡3卡4卡5卡区| 免费精品久久久久久中文字幕| 国产2021久久精品| 精品一区二区三区在线视频| 99国产欧美久久久精品蜜芽| 日产精品一线二线三线芒果| 亚洲А∨精品天堂在线 | 麻豆精品视频在线观看| 99久久亚洲综合精品成人| 91精品国产高清91久久久久久| 无码精品国产一区二区三区免费 | 亚洲国产精品久久久久| 国产精品嫩草影院一二三区入口| 精品久久久久久无码中文字幕一区| 中文字幕亚洲精品无码| 亚洲AV无码成人精品区大在线| 精品久久久久久久久久久久久久久| 国产精品高清在线| 成人午夜精品亚洲日韩 | 国产成人精品综合在线观看| 青青草国产精品久久久久| 欧美一卡2卡3卡四卡海外精品| 久久91精品国产91久久小草| 日韩精品成人a在线观看| 久久国产综合精品五月天| 久久精品国产亚洲Aⅴ香蕉| 精品亚洲一区二区三区在线播放| 精品久久久久久久中文字幕|