ログローテーションとアーカイブ
`logrotate`を導入してログファイルのサイズを管理し、ディスク容量の枯渇を防ぎ、効率的なログアーカイブの運用を実現します。
「ログローテーションとアーカイブ」はCoddyKit上の無料Linux Server Deployment & SSH Masteryレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはLinux Server Deployment & SSH Mastery学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Linux Server Deployment & SSH Masteryコースには全4レッスンが含まれています。
ログローテーションが重要な理由
サーバーログはデバッグや監視に不可欠ですが、時間の経過とともに非常に大きくなることがあります。放置するとディスク容量をすぐに使い果たし、サーバーの不安定化やクラッシュにつながるおそれがあります。
そこで役立つのが ログローテーション です。これはログファイルのサイズを効率的に管理するための重要な処理です。
`logrotate` ユーティリティの紹介
Linux システムでは、ログファイルの管理を自動化するために logrotate というユーティリティを使用します。主な機能は次のとおりです。
- ログをローテーションする(古いログの名前を変更する)
- 古いログを圧縮して容量を節約する
- 古いログファイルを削除する
- ローテーション後にカスタムスクリプトを実行する
ほとんどの Linux ディストリビューションでは、logrotate があらかじめインストールされ、cron ジョブによって毎日実行されるよう設定されています。
`logrotate` が設定を読み取る場所
logrotate は、特定のファイルから設定を読み取ります。主な場所は2つあります。
/etc/logrotate.conf:メイン設定ファイルです。グローバル設定やデフォルト値が記述されていることがよくあります。/etc/logrotate.d/:個々のアプリケーションやサービスが、それぞれのログローテーションルールを配置するディレクトリです。このディレクトリ内の各ファイルは、個別の設定として扱われます。
このモジュール方式により、サービスごとに異なるルールを簡単に管理できます。
ログローテーションの頻度を設定する
最初に定義する項目の1つが、ログをローテーションする頻度です。logrotate には、次のディレクティブがあります。
daily:毎日ログをローテーションします。weekly:週に1回ログをローテーションします。monthly:月に1回ログをローテーションします。yearly:年に1回ログをローテーションします。
ログの詳細をどれだけ保持するかと、ディスク使用量のバランスを考えて頻度を選びます。
古いログを保持する数を設定する
rotate ディレクティブは、最も古いログを削除する前に、logrotate が保持する古いログファイルの数を指定します。たとえば rotate 4 は、現在のログファイルに加えて、ローテーションされた4つのログ(アーカイブ版)を保持するという意味です。
上限に達すると、新しいローテーションが行われる際に、最も古いローテーション済みログが削除されます。
古いログファイルの圧縮
ディスク容量をさらに節約するために、logrotateでは古いログファイルを圧縮できます。compressディレクティブで圧縮を有効にします。通常はgzipが使用されます。
有効にすると、ローテーションされたログは.gzファイル(例:myapp.log.1.gz)として保存されます。ほとんどのサーバーログで有効にすることを強くおすすめします。
時間だけでなくサイズでもローテーションする
ログが非常に速く増加する場合があり、毎日または毎週のローテーションを待つだけでは不十分です。sizeディレクティブを使うと、時間間隔に関係なく、ログが指定したファイルサイズを超えたときにローテーションできます。
size 100k:ログファイルが100キロバイトを超えた場合にローテーションします。size 10M:ログファイルが10メガバイトを超えた場合にローテーションします。size 1G:ログファイルが1ギガバイトを超えた場合にローテーションします。
時間間隔(例:daily)とsizeの両方を指定した場合は、どちらか一方の条件を満たした時点でローテーションされます。
`logrotate`の設定例
次は、あるアプリケーションのログファイルについて、/etc/logrotate.d/で見つかる可能性があるシンプルな設定ファイルの例です。
この設定では、ログを毎日ローテーションし、古いコピーを7つ保持して圧縮します。
/var/log/my_app/access.log {
daily
rotate 7
compress
notifempty
missingok
}
`logrotate`を手動で実行する
logrotateは通常cronによって自動的に実行されますが、手動でローテーションをテストしたり強制したりすることもできます。主なコマンドはlogrotate /etc/logrotate.confです。
ローテーションを強制するには(設定のテストに便利です)、-fフラグを使用します。
logrotate -f /etc/logrotate.d/my_app:特定の設定ファイルに対してローテーションを強制します。logrotate -f /etc/logrotate.conf:設定されているすべてのログに対してローテーションを強制します。
-d(デバッグ)フラグを使用すると、実際にはローテーションを実行せずに、どのような処理が行われるかを確認できます。
確認問題:ログの保持
/var/log/webserver/error.logに対する次のlogrotate設定について考えてみましょう。
/var/log/webserver/error.log {
weekly
rotate 4
compress
notifempty
}この設定が数週間にわたって実行されている場合、常に何個の圧縮された過去のログファイルが見つかると考えられますか。
まとめ:ログ管理を身につける
このレッスンでは、logrotateを使ってサーバーログを効率的に管理する方法を学びました。次の点を確認しました。
- ログローテーションによって、ディスク容量の枯渇を防げます。
logrotateは、/etc/logrotate.confと/etc/logrotate.d/の設定ファイルを使用します。- 主なディレクティブには、頻度を指定する
daily/weekly/monthly、保持数を指定するrotate、容量を節約するcompress、条件付きローテーションを指定するsizeがあります。
適切なログ管理は、安定したサーバー運用の基盤です。
よくある質問
「ログローテーションとアーカイブ」レッスンは無料ですか?
はい。「ログローテーションとアーカイブ」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Linux Server Deployment & SSH Masteryコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Linux Server Deployment & SSH Masteryコースには全4レッスンが含まれています。
「ログローテーションとアーカイブ」で何を学びますか?
`logrotate`を導入してログファイルのサイズを管理し、ディスク容量の枯渇を防ぎ、効率的なログアーカイブの運用を実現します。 ブラウザで直接実行するハンズオンコードでLinux Server Deployment & SSH Masteryを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Linux Server Deployment & SSH Masteryを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのLinux Server Deployment & SSH Masteryは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「ログローテーションとアーカイブ」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このLinux Server Deployment & SSH Masteryレッスンでコードを書いて実行できますか?
はい。すべてのLinux Server Deployment & SSH Masteryレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- システム監視ツール
- システムログを理解する
- ログローテーションとアーカイブ
- 集中監視とアラート