Docs Menu
Docs Home
/
MongoDBマニュアル
/ /

ログファイルのローテーション

項目一覧

  • Overview
  • デフォルトのログ ローテーション動作
  • を使用したログ ローテーション --logRotate reopen
  • Syslog のログ ローテーション
  • ログ ローテーションの強制 SIGUSR1

--logpath オプションまたは systemLog.path 設定で使用すると、mongod および mongos インスタンスは、すべてのアクティビティと操作のライブ アカウントをログファイルに報告します。アクティビティ データをログファイルに報告する場合、デフォルトでは、MongoDB は logRotate コマンドに応答して、または mongod または mongos プロセスがオペレーティング システムから SIGUSR1 シグナルを受信した場合にのみログをローテーションします。サーバー ログと監査ログは、logRotate コマンドを使用して、一緒にまたは個別にローテーションできます。

MongoDB の標準的なログ ローテーション アプローチでは、現在のログファイルをアーカイブし、新しいログファイルを作成します。具体的には、mongod または mongos インスタンスにより、ISODate 形式の UTC タイムスタンプが現在のログファイル名に追加され、ファイル名が変更されます。さらに、このインスタンスにより新しいログファイルが開き、古いログファイルが閉じて、すべての新しいログエントリが新しいログファイルに送信されます。

また、systemLog.logRotate または --logRotatereopen に設定することで、MongoDB を Linux/Unix の logrotate ユーティリティをサポートするように構成できます。reopen を使用すると、mongod または mongos によりログファイルが閉じられた後、ローテーション前に別のプロセスによってファイルの名前が変更されたと想定して、同じ名前のログファイルが再度開かれます。

最後に、--syslog オプションを使用して、ログデータを syslog に送信するよう mongod を構成できます。この場合、代わりのログ ローテーション ツールを利用できます。

注意

logRotateは複製されたコマンドではありません。 レプリカセット ノードのログをローテーションするには、レプリカセットの各インスタンスに接続し、 logRotateを実行する必要があります。

ログファイルをローテーションするには、次のいずれかの手順を実行する必要があります。

  • SIGUSR1シグナルを mongod または mongos プロセスに送信する

  • MongoDB の logRotate コマンドを実行する

  • Linux/Unix の logrotate ユーティリティを実行する

このページ後半の例を参照してください。

Tip

以下も参照してください。

ロギングについて詳しくは、「プロセスのログ」セクションを参照してください。

デフォルトでは、MongoDB では --logRotate rename の動作が使用されます。rename を使用すると、mongod または mongos により現在のログファイル名に UTC タイムスタンプが追加され、ファイル名が変更されます。また、新しいログファイルが開かれ、古いログファイルが閉じられて、すべての新しいログエントリが新しいログファイルに送信されます。

1
mongod -v --logpath /var/log/mongodb/server1.log

また、--logRotate rename を明示的に指定できます。

2

以下のように、別のターミナルで一致するファイルをリストします。

ls /var/log/mongodb/server1.log*

結果には server1.log というログファイルが 1 つ含まれます。

3

ログファイルをローテーションするには、以下のように mongosh:admin データベースから logRotate コマンドを発行します。

db.adminCommand( { logRotate : "server" } )

監査が有効な場合、必要に応じてサーバー ログと監査ログの両方を同時にローテーションするために、1server ではなく logRotate に指定できます。監査ログは、--logRotate 設定に従ってサーバー ログと同じ方法でローテーションされ

注意

このコマンドは認証されたレプリカセットのアービタでは実行できません。

4

新しいログファイルを一覧表示して、新しく作成されたログを表示します。

ls /var/log/mongodb/server1.log*

2 つのログファイルがリストされます。server1.logmongod または mongos により再度ログファイルが開かれたときに作成されたログファイルで、server1.log.<timestamp> は名前が変更された元のログファイルです。

ログファイルをローテーションしても、ローテーション済みの「古い」ログファイルは変更されません。ログをローテーションすると、server1.log ファイルの名前がタイムスタンプを含む名前に変更され、新しい空の server1.log ファイルが新しく入力されるログをすべて受け取ります。

--logRotate reopen を使用してログをローテーションすると、Linux/Unix の一般的なログ ローテーションの動作通り、ログファイルが閉じ、再度開きます。

1
mongod -v --logpath /var/log/mongodb/server1.log --logRotate reopen --logappend

--logappendオプションは、--logRotate reopen. とともに使用する必要があります。

2

以下のように、別のターミナルで一致するファイルをリストします。

ls /var/log/mongodb/server1.log*

結果には server1.log というログファイルが 1 つ含まれます。

3

ログ ファイルをローテーションするには、以下のように mongosh:adminデータベースからlogRotateコマンドを発行します。

db.adminCommand( { logRotate : "server" } )

ログファイルの名前を変更するには、一般的な Linux/Unix のログ ローテーション動作に従って外部プロセスを使用する必要があります。

syslog ログ ローテーションでは、ログデータはファイルに書き込まれる代わりに、mongod により syslog に送信されます。

MongoDB は、 syslogへのログ メッセージにコンポーネントを含めます。

1
mongod --syslog

--logpath を含めないでください。--syslog がログ データを syslog に送信するよう mongod に指示するため、--logpath を指定するとエラーが発生します。

メッセージを syslog に記録するときに使用する機能レベルを指定するには、--syslogFacility オプションか、systemLog.syslogFacility 構成設定を使用します。

2

システムのデフォルトのログ ローテーション メカニズムを使用して、ログ出力を保存してローテーションします。

Linux および UNIX を基盤としたシステムでは、SIGUSR1 シグナルを使用して 1 つのプロセスのログをローテーションできます。

たとえば、実行中の mongod インスタンスのプロセス ID(PID)が 2200 の場合、次のコマンドは Linux 上でそのインスタンスのログファイルをローテーションします。

kill -SIGUSR1 2200

戻る

終了操作