MongoDB 在 Linux 中的日志管理设置
一 配置文件与基础参数
systemLog:
destination: file # 输出到文件;也可设为 syslog 或 stderr
path: /var/log/mongodb/mongod.log
logAppend: true # 重启后追加而非覆盖
verbosity: 1 # 全局日志详细程度,0~5,越大越详细
# 可选:按组件细粒度控制
# component:
# storage:
# journal:
# verbosity: 2
sudo systemctl restart mongod
-- 将全局详细程度设为 1
db.setLogLevel(1)
-- 仅调整 storage.journal 组件为 2
db.setLogLevel(2, "storage.journal")
-- 查看当前各组件日志级别
db.getLogComponents()
二 日志轮转的两种方式
方式 A:内置轮转(MongoDB 自带)
-- 轮转 server 日志
db.adminCommand({ logRotate: "server" })
-- 仅轮转审计日志
db.adminCommand({ logRotate: "audit" })
-- 同时轮转 server 与 audit
db.adminCommand({ logRotate: 1 })
方式 B:使用 Linux logrotate(推荐用于按天/按大小归档与压缩)
/var/log/mongodb/mongod.log {
daily
rotate 7
missingok
notifempty
compress
delaycompress
create 0640 mongodb mongodb
sharedscripts
postrotate
# 若使用 systemLog.logRotate: rename,则通知 MongoDB 执行内置轮转
if pgrep mongod >/dev/null; then
systemctl kill --signal=SIGUSR1 mongod 2>/dev/null || \
/bin/kill -SIGUSR1 $(cat /var/run/mongodb/mongod.pid 2>/dev/null) >/dev/null 2>&1
fi
endscript
}
三 慢查询与审计日志
operationProfiling:
slowOpThresholdMs: 100 # 超过 100ms 的操作记录为慢查询
mode: slowOp # 也可设为 all 或 off
security:
authorization: enabled
auditLog:
destination: file
format: JSON
path: /var/log/mongodb/audit.json
# 可选:按条件过滤
# filter: '{ "severity": { "$gte": 1 } }'
四 日志查看与安全运维建议