站長(zhǎng)資訊網(wǎng)
        最全最豐富的資訊網(wǎng)站

        linux-監(jiān)控查詢mongo索引片鍵腳本

          #!/bin/bash  #file name      :watch_dog.sh  #function       :1、查看mongodb數(shù)據(jù)庫(kù)集合;2、查看各個(gè)集合索引;3、查看各個(gè)集合片鍵  #version        :V 1.0    #配置參數(shù)  #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/"    #配置腳本需要的參數(shù)  if [ $# -ne 1  ] ;then    echo "Warn:請(qǐng)輸入使用的配置參數(shù)名稱,如local,pro等,在路徑../conf中配置的參數(shù)文件名"    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:路徑有問(wèn)題"        warn_info        exit 1     fi  }    #執(zhí)行mysql存儲(chǔ)過(guò)程  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'  }    #打包語(yǔ)句成sql語(yǔ)句  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的一行數(shù)據(jù)    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語(yǔ)句      #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數(shù)據(jù)庫(kù)中查,原因是只顯示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}")  #  #數(shù)據(jù)封裝成數(shù)組,兼容search_collection的結(jié)果  #  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"  #}      #程序執(zhí)行  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"     #執(zhí)行sql語(yǔ)句   handler_sql   warn_info "F:watch dog finishes work"  }    echo   warn_info "==============================="  #開(kāi)始工作  watch_dog2_work
        贊(0)
        分享到: 更多 (0)
        網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)
        主站蜘蛛池模板: 精品国产不卡一区二区三区| 华人亚洲欧美精品国产| 2020国产精品永久在线| 亚洲国产精品无码成人片久久| 久久国产乱子伦精品免费午夜| 国产精品推荐天天看天天爽| 国产精品偷伦视频免费观看了| 精品麻豆丝袜高跟鞋AV| 91精品全国免费观看青青| 国产午夜精品理论片久久影视| 99久久国产综合精品网成人影院 | 久久国产乱子精品免费女| 亚洲国产精品无码成人片久久| 国内精品伊人久久久久影院对白| 久久国产精品99精品国产987| 国产成人精品一区二区三区免费| 3级黄性日本午夜精品| 精品国产三级a∨在线| 亚洲精品国产精品国自产观看| 久久精品国产亚洲AV无码麻豆| 国产AV午夜精品一区二区三区 | 国自产精品手机在线观看视频| 精品一区二区三区免费| 9久久9久久精品| 精品久久久久久久久午夜福利| 亚洲午夜国产精品无码老牛影视| 国产99视频精品免费专区| 日韩欧精品无码视频无删节| 国产精品视频一区二区三区| 精品人妻系列无码天堂| 无码人妻精品一区二区三区66| 亚洲精品456播放| 中文字幕无码久久精品青草| 午夜精品免费在线观看| 久久se精品一区精品二区国产| 99久久精品免费国产大片| 青青青青久久精品国产| 伊人久久精品无码av一区| 日产国产精品亚洲系列| 精品国产91久久久久久久| 91精品国产自产在线观看永久|