在 CentOS 上查看 MongoDB 日志的常用方法
一 快速定位日志文件路径
- 常见默认路径为:/var/log/mongodb/mongod.log。若通过包管理器安装并启用服务,日志通常写入该文件;若为源码或自定义安装,路径以配置文件中的 systemLog.path 为准。也可在 /etc/mongod.conf 中查看或调整日志配置。示例查看配置:
- 查看配置文件:cat /etc/mongod.conf
- 在 mongo shell 中查看日志组件:db.getLogComponents()
- 获取全部日志内容:db.adminCommand({ getLog: 1 })
二 常用查看与过滤命令
- 实时查看最新日志:tail -f /var/log/mongodb/mongod.log
- 查看末尾 N 行:tail -n 200 /var/log/mongodb/mongod.log
- 关键字过滤(如错误):grep -i “error” /var/log/mongodb/mongod.log
- 复杂分析示例(统计特定错误出现次数):awk ‘/error code 11000/ {count++} END {print count}’ /var/log/mongodb/mongod.log
- 若服务未写入预期文件,可用系统日志排查:journalctl -xe | grep mongod
三 在 mongo shell 内查看与调整日志
- 连接 shell:mongo(或带鉴权:mongo --host --port -u -p --authenticationDatabase admin)
- 查看各组件日志级别:db.getLogComponents()
- 动态设置日志级别(示例将整体设为 1,查询组件设为 2):db.adminCommand({ setLogLevel: 1, logComponentVerbosity: { verbosity: 1, query: { verbosity: 2 } } })
四 日志轮转与运维建议
- 使用 logrotate 做按日轮转、保留 7 天、压缩归档,避免日志无限增长。示例配置(/etc/logrotate.d/mongod):
- /var/log/mongodb/mongod.log {
daily
rotate 7
missingok
notifempty
compress
delaycompress
sharedscripts
postrotate
/bin/kill -SIGUSR1 $(cat /var/run/mongodb/mongod.pid 2>/dev/null) 2>/dev/null || true
endscript
}
- 在 mongod.conf 中启用基于 logrotate 的重新打开:systemLog: { logrotate: { reopen: true, path: /var/log/mongodb/mongod.log } }
- 分析慢查询与异常时,可结合 mtools(如 mlogfilter、mloginfo)做时间筛选与统计,便于定位性能瓶颈