MongoDB:日志轮换在Ubuntu 18.04中似乎不起作用

问题描述 投票:0回答:1

我尝试使用以下https://docs.mongodb.com/manual/tutorial/rotate-log-files/中的说明在小型VPS服务器上设置日志轮换。

但是,我发现mongodb日志文件非常大(> 1GB),并且自从尝试设置轮换以来尚未转换。这是我的mongodb.conf文件中的内容:

dbpath=/var/lib/mongodb
logpath=/var/log/mongodb/mongodb.log
logappend=true
smallfiles = true
logRotate=reopen
bind_ip = 0.0.0.0
journal=true
replSet = rs0
oplogSize = 100

当我运行db._adminCommand( {getCmdLineOpts: 1})时,我在systemLog下看到此内容:

"systemLog" : {
    "destination" : "file",
    "logAppend" : true,
    "logRotate" : "reopen",
    "path" : "/var/log/mongodb/mongodb.log"
}

我以前使用的是mongod服务,而不是我当前正在使用的mongodb服务。似乎旋转适用于mongod(即使我不记得设置它),因为有些旧日志文件的大小相同,这意味着旋转恰好在文件太大时发生,而不是而不是按计划的时间间隔进行,我希望它能够像以前一样继续工作。查看mongod.conf文件,这里是配置:

systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log

首先,我不确定为什么语法不同。我也曾在mongo中运行db.runCommand( { logRotate : 1 } )命令,尽管我认为这是一次轮换。从mongodb.conf文件和命令行选项中,我认为它应该可以工作。我还有什么要补充的吗?

mongodb ubuntu-18.04 logrotate
1个回答
0
投票

logrotate: reopen表示它将继续打开相同的日志文件,您应该使用外部工具旋转日志。参见Log Rotation with --logRotate reopen

请注意链接页面中带有reopen的警告:

  • 您必须将--logappend选项与--logRotate reopen一起使用。
  • 您应按照典型的Linux / Unix日志轮换行为,使用外部进程重命名日志文件。

如果要在日志达到一定大小后对其进行轮换,可以将reopenlogrotate utility结合使用,在大多数Linux发行版中都应使用。有关logrotate实用程序的正确设置,请参见有关特定发行版的手册/教程。这是一些示例:How to setup log rotation for MongoDB properlyMongodb - proper way to rotate logs

如果您希望MongoDB为您轮换日志,则应使用logrotate: rename。这将重命名旧的日志文件,然后在每次服务器重新启动时创建一个新的日志文件。参见Default Log Rotation Behavior

© www.soinside.com 2019 - 2024. All rights reserved.