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

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號
国产精品无码DVD在线观看| 无码人妻精品一区二区蜜桃 | 国产精品黄页在线播放免费| 久久久国产精品四虎| 亚洲天堂久久精品| 久久精品国产亚洲AV果冻传媒| 亚洲精品国产字幕久久不卡| 九九精品在线视频| 亚洲精品无码专区久久同性男| 亚洲欧美日韩国产精品一区| 国产成人福利精品视频| 国产麻豆剧果冻传媒免精品费网站| 亚洲精品无码不卡在线播放| 国产chinesehd精品酒店| 精品亚洲成A人无码成A在线观看| 91精品国产闺蜜国产在线闺蜜| 99精品中文字幕| 日韩精品中文字幕无码一区| 久久精品亚洲中文字幕无码网站| 久久国产亚洲精品麻豆| 国内精品久久九九国产精品| 三上悠亚精品一区二区久久| 国产一级精品高清一级毛片| 久久久99精品成人片中文字幕| 精品国产一区二区三区2021| 国产精品亚洲w码日韩中文| 国产精品热久久无码av| 国产叼嘿久久精品久久| 国产精品成人观看视频网站| 国产精品亚洲高清一区二区| 精品成人av一区二区三区| 国产精品嫩草影院久久| 久久久久久久久久免免费精品 | 久久久99精品一区二区| 成人国内精品久久久久一区| 久久se这里只有精品| 久久丝袜精品中文字幕| 99热精品在线观看| 国内精品久久久久| 久热香蕉精品视频在线播放| 香蕉国产精品频视|