ログファイルのローテーション
項目一覧
Overview
--logpath
オプションまたは systemLog.path
設定で使用すると、mongod
および mongos
インスタンスは、すべてのアクティビティと操作のライブ アカウントをログファイルに報告します。アクティビティ データをログファイルに報告する場合、デフォルトでは、MongoDB は logRotate
コマンドに応答して、または mongod
または mongos
プロセスがオペレーティング システムから SIGUSR1
シグナルを受信した場合にのみログをローテーションします。サーバー ログと監査ログは、logRotate
コマンドを使用して、一緒にまたは個別にローテーションできます。
MongoDB の標準的なログ ローテーション アプローチでは、現在のログファイルをアーカイブし、新しいログファイルを作成します。具体的には、mongod
または mongos
インスタンスにより、ISODate 形式の UTC タイムスタンプが現在のログファイル名に追加され、ファイル名が変更されます。さらに、このインスタンスにより新しいログファイルが開き、古いログファイルが閉じて、すべての新しいログエントリが新しいログファイルに送信されます。
また、systemLog.logRotate
または --logRotate
を reopen
に設定することで、MongoDB を Linux/Unix の logrotate
ユーティリティをサポートするように構成できます。reopen
を使用すると、mongod
または mongos
によりログファイルが閉じられた後、ローテーション前に別のプロセスによってファイルの名前が変更されたと想定して、同じ名前のログファイルが再度開かれます。
最後に、--syslog
オプションを使用して、ログデータを syslog
に送信するよう mongod
を構成できます。この場合、代わりのログ ローテーション ツールを利用できます。
注意
ログファイルをローテーションするには、次のいずれかの手順を実行する必要があります。
MongoDB の
logRotate
コマンドを実行するLinux/Unix の
logrotate
ユーティリティを実行する
このページ後半の例を参照してください。
デフォルトのログ ローテーション動作
デフォルトでは、MongoDB では --logRotate rename
の動作が使用されます。rename
を使用すると、mongod
または mongos
により現在のログファイル名に UTC タイムスタンプが追加され、ファイル名が変更されます。また、新しいログファイルが開かれ、古いログファイルが閉じられて、すべての新しいログエントリが新しいログファイルに送信されます。
mongod
インスタンスを起動します。
mongod -v --logpath /var/log/mongodb/server1.log
また、--logRotate rename
を明示的に指定できます。
ログファイルのローテーション
ログファイルをローテーションするには、以下のように mongosh
: の admin
データベースから logRotate
コマンドを発行します。
db.adminCommand( { logRotate : "server" } )
監査が有効な場合、必要に応じてサーバー ログと監査ログの両方を同時にローテーションするために、1
を server
ではなく logRotate
に指定できます。監査ログは、--logRotate
設定に従ってサーバー ログと同じ方法でローテーションされ
注意
このコマンドは認証されたレプリカセットのアービタでは実行できません。
新しいログファイルの表示
新しいログファイルを一覧表示して、新しく作成されたログを表示します。
ls /var/log/mongodb/server1.log*
2 つのログファイルがリストされます。server1.log
は mongod
または mongos
により再度ログファイルが開かれたときに作成されたログファイルで、server1.log.<timestamp>
は名前が変更された元のログファイルです。
ログファイルをローテーションしても、ローテーション済みの「古い」ログファイルは変更されません。ログをローテーションすると、server1.log
ファイルの名前がタイムスタンプを含む名前に変更され、新しい空の server1.log
ファイルが新しく入力されるログをすべて受け取ります。
を使用したログ ローテーション --logRotate reopen
--logRotate reopen
を使用してログをローテーションすると、Linux/Unix の一般的なログ ローテーションの動作通り、ログファイルが閉じ、再度開きます。
mongod
の動作を指定して、reopen
--logRotate
インスタンスを起動 します。
mongod -v --logpath /var/log/mongodb/server1.log --logRotate reopen --logappend
--logappend
オプションは、--logRotate reopen
. とともに使用する必要があります。
Syslog のログ ローテーション
syslog ログ ローテーションでは、ログデータはファイルに書き込まれる代わりに、mongod
により syslog に送信されます。
MongoDB は、 syslog
へのログ メッセージにコンポーネントを含めます。
オプションでmongod
--syslog
インスタンスを起動
mongod --syslog
--logpath
を含めないでください。--syslog
がログ データを syslog に送信するよう mongod
に指示するため、--logpath
を指定するとエラーが発生します。
メッセージを syslog に記録するときに使用する機能レベルを指定するには、--syslogFacility
オプションか、systemLog.syslogFacility
構成設定を使用します。
ログ ローテーションの強制 SIGUSR1
Linux および UNIX を基盤としたシステムでは、SIGUSR1
シグナルを使用して 1 つのプロセスのログをローテーションできます。
たとえば、実行中の mongod
インスタンスのプロセス ID(PID)が 2200
の場合、次のコマンドは Linux 上でそのインスタンスのログファイルをローテーションします。
kill -SIGUSR1 2200