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

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

          #!/bin/bash  #file name      :watch_dog.sh  #function       :1、查看mongodb數(shù)據(jù)庫集合;2、查看各個集合索引;3、查看各個集合片鍵  #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:請輸入使用的配置參數(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:路徑有問題"        warn_info        exit 1     fi  }    #執(zhí)行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的一行數(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語句      #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ù)庫中查,原因是只顯示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語句   handler_sql   warn_info "F:watch dog finishes work"  }    echo   warn_info "==============================="  #開始工作  watch_dog2_work
        贊(0)
        分享到: 更多 (0)
        網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號
        主站蜘蛛池模板: 亚洲国产精品线在线观看| 国产精品免费看久久久香蕉| 99久久精品免费看国产| 一夲道无码人妻精品一区二区| 四虎影视国产精品永久在线| 国产精品一区二区av| 中日精品无码一本二本三本| 国产精品日韩欧美久久综合 | 亚洲第一永久AV网站久久精品男人的天堂AV| 国产成人亚洲合集青青草原精品 | 久久国产精品免费| 日韩欧美精品不卡| …久久精品99久久香蕉国产| 日韩精品中文字幕无码一区| 亚洲精品国产精品乱码不卡| 国产精品一区三区| 国产2021久久精品| 777被窝午夜精品影院| 国产在线不卡午夜精品2021| 国产色婷婷五月精品综合在线| 亚洲国产精品无码久久SM| 香蕉依依精品视频在线播放 | 国产精品99久久免费观看| 久久久无码精品亚洲日韩蜜臀浪潮| 亚洲精品tv久久久久久久久久| 精品久久久久中文字| 国产精品内射婷婷一级二| 91精品国产福利在线观看| 最新国产精品亚洲| 国产成人亚洲精品91专区手机| 亚洲国产精品热久久| 成人国产精品动漫欧美一区| 国产AV国片精品一区二区| 99久久精品免费| 国产在线精品一区二区夜色 | 亚洲国产精品无码专区| 亚洲精品无码午夜福利中文字幕| 亚洲情侣偷拍精品| 中文字幕日本精品一区二区三区| 亚洲一级Av无码毛片久久精品 | 精品无码久久久久久尤物|