標籤:mongodb監控指令碼
指令碼涵蓋兩種監控mongo的方法:使用內建的mongostat工具查看,各個監控項的位置可能要按實際的mongostat輸出進行調整;進入admin庫,查看具體狀態資訊,可能需要驗證。
完整步驟:
1.建立用於監控的使用者角色:mongo使用者的許可權按使用者角色進行劃分
> use admin > db.getRoles()> db.createRole( { role:"mongostatRole", privileges:[{resource:{cluster:true},actions:["serverStatus"]}], roles:[]} ) //建立一個使用mongostat命令許可權的使用者角色
2.建立系統監控角色
> db.getUsers() > db.createUser( { user:"dbmon", pwd:"password", roles:[{role:"mongostatRole",db:"admin"}]} )
3.編寫指令碼,mongodb_sts.sh
#!/bin/bashhost="127.0.0.1"passwd="password"rst=‘‘case "$1" in conn) rst=`mongostat -n 1 -u dbbak -p $passwd --authenticationDatabase=admin|awk ‘NR==2 {print $(NF-1)}‘` ;; dirty) rst=`mongostat -n 1 -u dbbak -p $passwd --authenticationDatabase=admin|awk -F[\ ]+ ‘NR==2 {print $8}‘` ;; used) rst=`mongostat -n 1 -u dbbak -p $passwd --authenticationDatabase=admin|awk -F[\ ]+ ‘NR==2 {print $9}‘` ;; qr) rst=`mongostat -n 1 -u dbbak -p $passwd --authenticationDatabase=admin|awk -F[\ \|]+ ‘NR==2 {print $(NF-7)}‘` ;; qw) rst=`mongostat -n 1 -u dbbak -p $passwd --authenticationDatabase=admin|awk -F[\ \|]+ ‘NR==2 {print $(NF-6)}‘` ;; res) res=$(echo "db.serverStatus().mem" | mongo -u dbbak -p $passwd admin|awk -F[,\ ] ‘/"resident"/{print $3}‘) rst=$[res*1024*1024] ;; vsize) resize=$(echo "db.serverStatus().mem" | mongo -u dbbak -p $passwd admin|awk -F[,\ ] ‘/"virtual"/{print $3}‘) rst=$[resize*1024*1024] ;; *) echo "aaaaaaaaaaaa"# exit 5esacif [ -z $rst ];then echo 0else echo $rstfi
4.指令碼應用:cacti、zabbix等
本文出自 “11414123” 部落格,轉載請與作者聯絡!
mongodb監控指令碼