ログローテーション は、大量のログファイルを生成するサーバーを管理する管理者向けに設計されたユーティリティです。これは、ディスクスペースを節約するだけでなく、ディスクスペースの不足によってシステムが応答しなくなる潜在的なリスクを回避するのに役立ちます。
通常、この種の問題を回避するための解決策は、セットアップすることです。 /var
用の個別のパーティションまたは論理ボリューム マウントポイント。ただし、特にすべてのログを別のパーティションに移動するには遅すぎる場合は、logrotateもこの問題の実行可能な解決策になる可能性があります。
このチュートリアルでは、Red Hat Enterprise Linuxでlogrotateサービスを構成して、ログファイルを制御下に戻す方法を示します。
このチュートリアルでは、次のことを学びます。
- RHELでlogrotateユーティリティを使用する方法
- ログローテーション構成ファイルの保存場所
- カスタムログローテーション構成を設定する方法
- ログローテーションの実装をテストする方法
カテゴリ | 使用する要件、規則、またはソフトウェアバージョン |
---|---|
システム | Red Hat Enterprise Linux |
ソフトウェア | ログローテーション |
その他 | rootまたはsudo を介したLinuxシステムへの特権アクセス コマンド。 |
コンベンション | # –指定されたLinuxコマンドは、rootユーザーとして直接、またはsudo を使用して、root権限で実行する必要があります。 コマンド$ –特定のLinuxコマンドを通常の非特権ユーザーとして実行する必要があります |
ログローテーションとは何ですか?
Logrotateは、システム管理者がシステムによって生成されたログファイルを体系的にローテーションおよびアーカイブする機能を提供し、オペレーティングシステムのディスク容量要件を削減します。デフォルトでは、logrotateは、場所/etc/cron.daily/
からcronスケジューラを使用して1日1回呼び出されます。 。
# ls /etc/cron.daily/ cups logrotate makewhatis.cron mlocate.cron prelink readahead.cron rhsmd tmpwatch
logrotateの構成
Logrotateの構成は、2つの別々の構成ファイルを編集することによって行われます。
- /etc/logrotate.conf
- /etc/logrotate.d/に保存されているサービス固有の構成ファイル
メインのlogrotate.conf
ファイルには一般的な構成が含まれています。これがデフォルトのlogrotate構成ファイルlogrotate.conf
です。 :
weekly rotate 4 create dateext include /etc/logrotate.d /var/log/wtmp { monthly create 0664 root utmp minsize 1M rotate 1 }
- 1行目–毎週 構成オプションにより、メイン構成ファイルおよび/etc/logrotate.d/ディレクトリで定義されたすべてのログファイルが毎週ローテーションされます。
- 2行目–4を回転 logrotateがすべてのログファイルの4週間のバックアップを保持することを保証します
- 3行目–作成 オプションは、各ローテーション後に新しい空のログファイルを作成するようにlogrotateに指示します
- 4行目– dateext 特定の各ログファイルがlogrotateによって処理された日付の形式で、ローテーションされたすべてのログファイルに拡張子を追加します
- 5行目–含める ディレクトリ/etc/logrotate.dからの他のすべての構成
- 6〜11行目には、特定のサービスログローテーション構成が含まれています
logrotate.conf
とは対照的に 、ディレクトリ/etc/logrotate.d/
logrotateで使用される特定のサービス構成ファイルが含まれています。次のセクションでは、サンプルのスケルトンログローテーション構成を作成します。
ログローテーションする新しいサービスログを含める
このセクションでは、新しいログファイルをlogrotate構成に追加します。 /var/log/linuxserver.log
というログファイルがあるとします。 、/var/log
に座っています 毎日ローテーションする必要のあるディレクトリ。
まず、新しいログファイルに対応するために新しいlogrotate構成ファイルを作成する必要があります。
# vi /etc/logrotate.d/linuxserver
次のテキストを/etc/logrotate.d/linuxserverに挿入します。
/var/log/linuxserver.log { rotate 7 daily compress delaycompress missingok notifempty create 660 linuxuser linuxuser }
この構成ファイルは毎日実行され、linuxuserおよびlinuxuserグループが所有する最大7つのアーカイブを作成し、660のアクセス許可を持ち、すべてのログを圧縮し、昨日と空のログファイルのみを除外します。選択したlogrotate構成キーワードを次に示します。完全なチュートリアルについては、logrotateのマニュアルページを確認してください。
毎日 | ログファイルは毎日ローテーションされます。 |
毎週 | ログファイルは、現在の平日が最後のローテーションの平日よりも小さい場合、または最後のローテーションから1週間以上経過した場合にローテーションされます。これは通常、週の最初の日にログをローテーションするのと同じですが、logrotateが毎晩実行されていない場合、ログローテーションは最初の有効な機会に発生します。 |
毎月 | ログファイルは、logrotateが1か月に初めて実行されるときにローテーションされます(これは通常、その月の1日です)。 |
notifempty | ログが空の場合はローテーションしないでください(これにより、ifemptyオプションが上書きされます)。 |
nocompress | 古いバージョンのログファイルは圧縮されていません。 |
delaycompress | 前のログファイルの圧縮を次のローテーションサイクルに延期します。これは、圧縮と組み合わせて使用した場合にのみ効果があります。一部のプログラムにログファイルを閉じるように指示できないため、しばらく前のログファイルへの書き込みを続行する可能性がある場合に使用できます。 |
圧縮 | 古いバージョンのログファイルは、デフォルトでgzipで圧縮されています。 |
メールアドレス | ログが存在しなくなると、アドレスにメールで送信されます。特定のログでメールを生成する必要がない場合は、nomailディレクティブを使用できます。 |
missingok | ログファイルが見つからない場合は、エラーメッセージを発行せずに次のログファイルに進みます。 |
設定ファイルの準備ができたら、それをlogrotateディレクトリにコピーして、所有者と権限を変更するだけです。
# cp linuxserver /etc/logrotate.d/ # chmod 644 /etc/logrotate.d/linuxserver # chown root.root /etc/logrotate.d/linuxserver
新しいLogrotate構成のテスト
logrotate構成が実装されたので、以下の手順に従ってテストします。
- サンプルログファイルがまだ存在しない場合は、作成します。
# echo "rotate my log file" > /var/log/linuxserver.log
- ログファイルを配置したら、logrotateですべてのログを
-f
でローテーションします。 オプション。# logrotate -f /etc/logrotate.conf
警告:上記のコマンドは、
/etc/logrotate.d
で定義されているすべてのログをローテーションします ディレクトリ。 - ここで、/ var / log / directoryに再度アクセスして、ログファイルがローテーションされ、新しいログファイルが作成されたことを確認します。
まとめ
すでに述べたように、システムがログファイルで詰まらないようにする最善の方法は、/var/
用に別のパーティション/論理ボリュームを作成することです。 またはさらに良い/var/log
ディレクトリ。ただし、それでもlogrotateを使用すると、ログファイルを圧縮してディスク容量を節約できます。 Logrotateは、追加のコピーを作成するか、新しくローテーションされたログファイルを電子メールで送信することにより、将来の参照用にログファイルをアーカイブするのにも役立ちます。