一、MongoDB Linux版日志查看方法
确定日志文件路径
MongoDB在Linux系统上的默认日志路径为/var/log/mongodb/mongod.log,可通过MongoDB配置文件(/etc/mongod.conf)中的systemLog.path参数确认或修改路径。
基础查看命令
cat命令查看完整日志内容:cat /var/log/mongodb/mongod.log;tail命令实时追踪日志变化(如tail -f /var/log/mongodb/mongod.log),或查看最后N行(如tail -n 100 /var/log/mongodb/mongod.log);less命令分页查看日志(支持上下滚动和关键词搜索,如less /var/log/mongodb/mongod.log)。通过MongoDB Shell查看
db.getLogComponents()查看当前日志组件配置(如各模块的日志级别);db.adminCommand({getLog: 1})获取MongoDB服务端的最新日志条目。实时监控技巧
若需持续观察特定事件(如连接、查询),可结合tail -f与grep过滤,例如:tail -f /var/log/mongodb/mongod.log | grep "query",实时显示所有查询操作。
二、MongoDB Linux版日志分析方法
基础分析命令
grep筛选特定日志类型(如慢查询):grep "slow query" /var/log/mongodb/mongod.log;awk统计慢查询数量(假设慢查询日志中包含"ms"且时间超过1000ms):cat /var/log/mongodb/mongod.log | grep "query" | awk '{print $9}' | awk -F "ms" '{if ($1 > 1000) print $1}' | wc -l。使用mtools工具集分析
mtools是一组开源命令行工具,专门用于处理MongoDB日志,常用功能包括:
mloginfo /var/log/mongodb/mongod.log;mlogfilter /var/log/mongodb/mongod.log --from "2025-05-01T00:00:00" --to "2025-05-02T00:00:00" --query '{ "command": "find" }';--group参数(如按命名空间分组):mplotqueries /var/log/mongodb/mongod.log --group namespace --output-file query_stats.png。使用jq工具解析JSON日志
若日志为JSON格式(需确认systemLog.jsonFormat设置为true),可使用jq提取特定字段(如持续时间超过6000毫秒的查询):jq '. | select(.attr.durationMillis >= 6000)' /var/log/mongodb/mongod.log。
日志轮转与清理
logrotate自动轮转日志(避免单个文件过大),编辑/etc/logrotate.d/mongodb文件,添加如下配置(每天轮转、保留7天、压缩旧日志):/var/log/mongodb/mongod.log {
daily
rotate 7
compress
missingok
notifempty
sharedscripts
copytruncate
dateext
postrotate
/bin/kill -SIGUSR1 $(cat /var/log/mongodb/mongod.lock 2>/dev/null) 2>/dev/null || true
endscript
}
```;
db.adminCommand({logRotate: 1}),无需重启服务。