在CentOS系统上管理MongoDB日志的技巧包括以下几个方面:
/var/log/mongodb
或者自定义的日志路径下,如 /usr/local/mongodb/data/log/mongodb.log
。cat /var/log/mongodb/mongod.log
或 tail -f /var/log/mongodb/mongod.log
查看日志文件内容。手动清理:可以使用MongoDB的内置命令 logRotate
手动清理日志文件。例如:
use admindb.runCommand({ logRotate : 1 })
将当前的日志文件重命名为 mongod.log.N
,其中 N
是一个递增的数字,新的日志文件将从零开始重新创建。
自动清理:可以通过编写定时任务来自动清理MongoDB的日志文件。例如,使用 crontab
每天凌晨3点运行一个脚本:
0 3 * * * /path/to/log_cleanup.sh
脚本示例:
#!/bin/bash
MONGODIR="/usr/local/mongodb"
LOGFILE="$MONGODIR/logs/mongod.log"
DATE=$(date +%Y%m%d)
BACKUPFILE="$LOGFILE.$DATE"
mv "$LOGFILE" "$BACKUPFILE"
/usr/local/mongodb/bin/mongo admin --eval "db.runCommand({ logRotate : 1 })"
使用logrotate:MongoDB的日志分割可以通过Linux系统自带的 logrotate
工具来实现。配置文件通常放置在 /etc/logrotate.d/
目录下。例如:
/opt/mongodb/log/mongodb.log {
rotate 180
daily
size 100M
missingok
notifempty
copytruncate
compress
dateext
extension .gz
}
这个配置表示每天分割日志文件,保留180天的日志文件,每个日志文件最大为100MB。
通过MongoDB命令进行切割:在MongoDB运行时指定日志文件路径,或者使用配置文件:
use admindb.runCommand({ logRotate : 1 })
向进程发送SIGUSR1信号:可以通过发送 SIGUSR1
信号来手动切割日志:
kill -SIGUSR1 19555
mongostat
、mongotop
、db.serverStatus()
等来监控数据库性能。通过以上技巧,可以有效地管理CentOS系统上MongoDB的日志,确保数据库的高效和稳定运行。