syslogを利用する際は、肥大化するログをどのタイミングでローテーションし、どれくらいの期間保存しておくかを検討する必要があります。
このような、ログのバックアップや世代管理には、syslog ログローテーションの設定を使用します。
ローテーションするタイミングは daily、weekly、monthly、yearly から選択することが可能です。また、保存期間については設定コマンドとして rotate と maxage が利用できます。
本記事では、Red Hat Enterprise Linux 8.7を例に、実際にどのような動作となるか検証したいと思います。*1
なお、本記事は rotate と maxageにスコープを当てており、その他のローテーションの基本的な設定については割愛しています。
ログローテーションの要件
本記事では、ログローテーションの設定要件を以下としました。
- 日次でローテーション
- ログの保存期間は5日
rotate 設定
設定ファイル
以下のように、/etc/logrotate.conf ファイルを作成します。
daily
rotate 5
create
dateext
ローテーション動作検証
バックアップファイルが作成され、ローテーションする基本的な動作を確認します。
検証
rotate 5 の設定で手動でローテーションコマンド実行すると、5世代分のログファイルが作成されます。
もう一度手動でログローテーションコマンドを実行すると、以下のように一番古い messages-20240227 が削除され、新しくmessages-20240303 が作成されます。
rotate 5 の設定では 5世代分残ることが確認できました。
では、messages-20240302 と messages-20240303 を削除して、以下の3つファイルの場合にローテートすると messages-20240228 は残るのでしょうか。
結果
以下の通り messages-20240228 が残ることが確認できました。
タイムスタンプが新しい場合の動作検証
5回ローテーションされて次回削除されるファイルは、ファイル名とタイムスタンプのどちらを見て判断しているのか検証します。
検証
ここで最後(一番新しい)ログファイル messages-20240303 を messages-20240227 にファイル名を変更します。
mv messages-20240303 messages-20240227
5世代分となるようにダミーファイル messages-20240302 を作成します。
cp messages-20240301 messages-20240302
結果
手動で実行します。ファイルとしては新しいですが、messages-20240227 は削除されてしまいました。ファイル名のみで判断しています。
maxage 設定
rotate の設定のみだと、タイムスタンプを見て判断しませんので、保存期間を設定する maxage 設定を追加し動作を確認します。
設定ファイル
以下のように、/etc/logrotate.conf ファイルを作成します。
daily
maxage 3
rotate 5
create
dateext
ローテーションの処理として rotate が実行され maxage の判定がされるため rotate の設定数は maxage の値より大きくする必要があります。
今回はmaxage 3 ( 3日保存 )に対してrotate 5なので、この条件を満たしています。
検証
以下のダミーファイルを作成します。
手動でローテートを実行します。
/usr/sbin/logrotate -f /etc/logrotate.conf
結果
messages-20240303 が新しく作成され、rotate 5の設定のため messages-20240226 、messages-20240227 の2つ削除されました。
messages-20240226 はタイムスタンプが maxage の条件にマッチしませんが先に rotate が処理され削除されます。
その後、maxage 設定に該当するタイムスタンプから4日経過した messages-20240228 が削除されます。
まとめ
rotate の設定が不要にも思えますが maxage の設定も rotate されることが前提ですので必要です。前述したようにrotate の設定値は maxage の設定値より大きくする必要があります。
rotate の設定を消してしまうと、既存のローテートされたログファイルはすべて削除されるため注意が必要です。
*1:本記事ではRed Hat Enterprise Linux 8.7で実施していますが、どのディストリビューションでも同様に設定できると思います
冨田 克樹(日本ビジネスシステムズ株式会社)
クラウドソリューション事業本部に所属。中部事業所にてネットワーク構築案件を担当。Cisco L2,L3SW、Paloalto PAシリーズなど扱っています。
担当記事一覧