MongoDB在Linux中的日志管理如何设置
导读:MongoDB 在 Linux 中的日志管理设置 一 配置文件与基础参数 配置文件通常位于:/etc/mongod.conf。在 systemLog 段可设置输出目标、路径、追加模式与详细程度: systemLog: destina...
MongoDB 在 Linux 中的日志管理设置
一 配置文件与基础参数
- 配置文件通常位于:/etc/mongod.conf。在 systemLog 段可设置输出目标、路径、追加模式与详细程度:
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()
- 说明:组件级设置会覆盖全局设置;详细程度取值范围为0~5,数值越大输出越详细。
二 日志轮转的两种方式
-
方式 A:内置轮转(MongoDB 自带)
- 触发命令(在 mongosh 的 admin 库执行):
-- 轮转 server 日志 db.adminCommand({ logRotate: "server" } ) -- 仅轮转审计日志 db.adminCommand({ logRotate: "audit" } ) -- 同时轮转 server 与 audit db.adminCommand({ logRotate: 1 } ) - 也可向 mongod/mongos 进程发送信号触发:SIGUSR1。
- 行为说明:
- 默认行为为 rename:MongoDB 会将当前日志文件重命名为带有 UTC 时间戳 的新文件,然后新建同名日志继续写入。
- 若希望配合 Linux 的 logrotate 使用“关闭并重新打开同名文件”的语义,可在配置中设置:systemLog.logRotate: reopen,由外部先重命名旧日志,再通知 MongoDB 重新打开新文件。
- 触发命令(在 mongosh 的 admin 库执行):
-
方式 B:使用 Linux logrotate(推荐用于按天/按大小归档与压缩)
- 创建配置文件:/etc/logrotate.d/mongodb
- 示例(按天轮转、保留 7 天、压缩、延迟压缩、权限与属主设置):
/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
}
- 说明:
- 当 systemLog.logRotate 为 reopen 时,postrotate 只需执行“关闭并重新打开”动作(如 logrotate 的 copytruncate 或先 mv 再发送 SIGUSR1)。
- 审计日志也可单独配置轮转策略(路径与权限按实际环境调整)。
三 慢查询与审计日志
- 慢查询日志(Profiling)
- 在配置文件中启用并设定阈值(单位:毫秒):
operationProfiling:
slowOpThresholdMs: 100 # 超过 100ms 的操作记录为慢查询
mode: slowOp # 也可设为 all 或 off
- 说明:慢查询会写入服务器日志,便于定位性能瓶颈。
- 审计日志(Audit)
- 启用审计并输出为 JSON 到文件:
security:
authorization: enabled
auditLog:
destination: file
format: JSON
path: /var/log/mongodb/audit.json
# 可选:按条件过滤
# filter: '{
"severity": {
"$gte": 1 }
}
'
- 审计日志同样支持通过 logRotate 命令或 SIGUSR1 进行轮转(可在 admin 库分别针对 server 与 audit 执行)。
四 日志查看与安全运维建议
- 常用查看与分析
- 实时查看:tail -f /var/log/mongodb/mongod.log
- 检索与结构化分析:grep/awk 进行关键字筛选;MongoDB 日志为文本格式,必要时可结合 jq 做字段解析;大规模场景建议接入 ELK/Graylog 做集中化存储与可视化。
- 安全与权限
- 日志文件应限制访问权限,仅允许 mongodb 用户(及必要的管理组)读取;例如:0640 mongodb mongodb。
- 保留策略与容量规划
- 通过 logrotate 的 rotate 与 compress 控制保留周期与磁盘占用;对审计日志可设置更长保留期并单独归档,以满足合规要求。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: MongoDB在Linux中的日志管理如何设置
本文地址: https://pptw.com/jishu/775609.html
