MongoDB数据库巡检脚本的示例:
#!/bin/bash# 设置MongoDB连接信息
MONGODB_HOST="your_mongodb_host"
MONGODB_PORT="your_mongodb_port"
MONGODB_USER="your_mongodb_username"
MONGODB_PASSWORD="your_mongodb_password"# 设置巡检结果输出文件路径
OUTPUT_FILE="/path/to/output.log"# 获取MongoDB版本信息
version_info=$(mongo --host $MONGODB_HOST --port $MONGODB_PORT --username $MONGODB_USER --password $MONGODB_PASSWORD --authenticationDatabase=admin --eval "db.version()" --quiet)
echo "MongoDB Version:" $version_info > $OUTPUT_FILE# 获取数据库列表
databases=$(mongo --host $MONGODB_HOST --port $MONGODB_PORT --username $MONGODB_USER --password $MONGODB_PASSWORD --authenticationDatabase=admin --eval "db.adminCommand({listDatabases: 1})" --quiet | grep 'name' | awk '{print $3}')# 巡检开始时间
start_time=$(date +"%Y-%m-%d %H:%M:%S")
echo "Start Time:" $start_time >> $OUTPUT_FILE
echo "" >> $OUTPUT_FILE# 遍历数据库列表进行巡检
for db in $databases
doecho "Checking database:" $dbecho "===================================" >> $OUTPUT_FILEecho "Database:" $db >> $OUTPUT_FILE# 获取数据库大小size_info=$(mongo --host $MONGODB_HOST --port $MONGODB_PORT --username $MONGODB_USER --password $MONGODB_PASSWORD --authenticationDatabase=admin --eval "db.stats()" --quiet --eval "printjson({dbSize: db.stats().dataSize, indexesSize: db.stats().indexSize, storageSize: db.stats().storageSize})")echo "Database Size:" >> $OUTPUT_FILEecho "$size_info" >> $OUTPUT_FILE# 获取数据库集合大小collection_info=$(mongo --host $MONGODB_HOST --port $MONGODB_PORT --username $MONGODB_USER --password $MONGODB_PASSWORD --authenticationDatabase=admin --eval "db.getCollectionNames()" --quiet | awk '{print $3}' | xargs -I {} mongo --host $MONGODB_HOST --port $MONGODB_PORT --username $MONGODB_USER --password $MONGODB_PASSWORD --authenticationDatabase=admin --eval "db.getCollection('{}').stats()" --quiet --eval "printjson({name: '{}', size: db.getCollection('{}').stats().size})")echo "Collection Sizes:" >> $OUTPUT_FILEecho "$collection_info" >> $OUTPUT_FILEecho "===================================" >> $OUTPUT_FILEecho "" >> $OUTPUT_FILE
done# 巡检结束时间
end_time=$(date +"%Y-%m-%d %H:%M:%S")
echo "End Time:" $end_time >> $OUTPUT_FILEecho "Database inspection completed. Please check the output file: $OUTPUT_FILE"
请根据需要修改 MONGODB_HOST
、MONGODB_PORT
、MONGODB_USER
、MONGODB_PASSWORD
和 OUTPUT_FILE
变量为你的MongoDB连接信息和输出文件路径。运行脚本后,将会生成一个巡检报告文件,其中包含了MongoDB版本、每个数据库的大小和每个集合的大小等信息。
这只是一个基本的示例脚本,你可以根据具体需求进行扩展和定制,添加更多的巡检项和检查规则。