MongoDB: вращение журнала не работает в Ubuntu 18.04 - PullRequest
0 голосов
/ 11 ноября 2019

Я попытался настроить ротацию журналов на небольшом сервере VPS, используя следующие инструкции: https://docs.mongodb.com/manual/tutorial/rotate-log-files/.

Однако я вижу, что файл журнала mongodb очень большой (> 1 ГБ) и не был перенесентак как я пытался настроить вращение. Вот что у меня в файле 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

Прежде всего, я не уверен, почему синтаксис отличается. Я также выполнил команду db.runCommand( { logRotate : 1 } ) внутри монго, хотя я считаю, что это одноразовая ротация. Из файла mongodb.conf и параметров командной строки я бы подумал, что это должно работать. Что-нибудь еще, что я должен добавить?

1 Ответ

0 голосов
/ 12 ноября 2019

logrotate: reopen означает, что он будет продолжать открывать тот же файл журнала, и вы должны вращать журнал с помощью внешнего инструмента. См. Вращение журнала с --logRotate, снова откройте .

Обратите внимание на предостережение с reopen на связанной странице:

  • Вы должны использовать опцию --logappendс --logRotate reopen.
  • Вы должны переименовать файл журнала, используя внешний процесс, следуя типичному поведению ротации журналов в Linux / Unix.

Если вы хотите повернуть журнал, как только онПри достижении определенного размера вы можете использовать reopen вместе с утилитой logrotate , которая должна присутствовать в большинстве дистрибутивов Linux. См. Руководство / учебное пособие для вашего конкретного дистрибутива о правильных настройках утилиты logrotate. Вот несколько примеров: Как правильно настроить ротацию журналов для MongoDB и Mongodb - правильный способ ротации журналов .

Если вы предпочитаете MongoDB вращать журналы для вас, вы должны использовать logrotate: rename. Это позволит переименовать старый файл журнала, а затем создавать новый при каждом перезапуске сервера. См. Поведение журнала вращения по умолчанию .

...