「Logrotate」の版間の差分
Kusanaginoturugi (トーク | 投稿記録) (→インストール: 取消線と説明を削除) |
(→設定: 同期) |
||
21行目: | 21行目: | ||
==設定== |
==設定== |
||
− | logrotate の |
+ | デフォルトのパラメータを設定する logrotate の主な設定ファイルは {{ic|/etc/logrotate.conf}} です。追加のアプリケーション固有の設定ファイルは、{{ic|/etc/logrotate.d}} ディレクトリに含まれています。アプリケーション固有に設定された値は、プライマリ設定ファイルの同じパラメータをオーバーライドします。設定例と使用可能なディレクティブのリファレンスについては、{{man|5|logrotate.conf}} を参照してください。 |
− | logrotate が正しく |
+ | logrotate が正しく機能するかどうかを確認するには、デバッグモードで実行します。このモードでは、デバッグ出力の生成以外は何も行われません: |
+ | |||
− | {{bc|# logrotate --debug /etc/logrotate.conf}} |
||
+ | $ logrotate --debug /etc/logrotate.conf |
||
− | logrotate スクリプトをテストするには (例えば {{ic|/etc/logrotate.d}} ディレクトリの nginx スクリプト)、以下のように実行してみてください: |
||
− | {{bc|# logrotate -f -v /etc/logrotate.d/nginx}} |
||
=== ログの圧縮 === |
=== ログの圧縮 === |
||
− | {{ic|zstd}}のようなコマンドを使 |
+ | Logrotate は、{{ic|zstd}} のようなカスタム コマンドを使用してログを圧縮できます。 |
{{hc|/etc/logrotate.conf| |
{{hc|/etc/logrotate.conf| |
||
40行目: | 39行目: | ||
}} |
}} |
||
− | 詳細は |
+ | 詳細については、{{man|5|logrotate.conf}} および {{man|1|zstd}} を参照してください。 |
== 使用方法 == |
== 使用方法 == |
2024年4月2日 (火) 11:46時点における版
関連記事
https://github.com/logrotate/logrotate より:
- ログファイルが大量に生成されるシステムで、ログファイルの管理を簡単にするために logrotate ユーティリティは作られました。Logrotate はログファイルの自動的なローテーション圧縮や削除、メール送信などを可能にします。Logrotate を設定することで、ログファイルを毎日毎周毎月ごとに管理したり、特定のサイズまで達した時の動作を決められます。
logrotate のローテーションでは、既存のログファイルに数字を割り振って名前を変更し、元の空のログファイルを再作成します。例えば、/var/log/syslog.log
は /var/log/syslog.log.1
に名前が変更されます。/var/log/syslog.log.1
が既に存在する場合、名前は /var/log/syslog.log.2
に変更されます (バックログの数は設定で変えられます)。
目次
インストール
Logrotate は logrotate パッケージでインストールできます。
デフォルトでは、logrotate は systemd タイマーによって毎日動作します: logrotate.timer
。
設定
デフォルトのパラメータを設定する logrotate の主な設定ファイルは /etc/logrotate.conf
です。追加のアプリケーション固有の設定ファイルは、/etc/logrotate.d
ディレクトリに含まれています。アプリケーション固有に設定された値は、プライマリ設定ファイルの同じパラメータをオーバーライドします。設定例と使用可能なディレクティブのリファレンスについては、logrotate.conf(5) を参照してください。
logrotate が正しく機能するかどうかを確認するには、デバッグモードで実行します。このモードでは、デバッグ出力の生成以外は何も行われません:
$ logrotate --debug /etc/logrotate.conf
ログの圧縮
Logrotate は、zstd
のようなカスタム コマンドを使用してログを圧縮できます。
/etc/logrotate.conf
compress compresscmd /usr/bin/zstd compressext .zst compressoptions -T0 --long uncompresscmd /usr/bin/unzstd
詳細については、logrotate.conf(5) および zstd(1) を参照してください。
使用方法
logrotate は通常、systemd サービスを介して実行されます。: logrotate.service
logrotate を手動で実行するには:
logrotate /etc/logrotate.conf
単一のログファイルをローテートするには:
logrotate /etc/logrotate.d/mylog
設定ファイルの実行をシミュレーションするには(dry run):
logrotate --debug /etc/logrotate.d/mylog
条件が満されていない場合でも強制的にローテートするには、次のコマンドを実行します:
logrotate -vf /etc/logrotate.d/mylog
詳細については、logrotate(8) を参照してください。
トラブルシューティング
exim のログがローテーションされない
/etc/logrotate.conf
に olddir
変数を設定した場合、以下のようなメッセージが表示されます:
error: failed to rename /var/log/exim/mainlog to /var/log/old/mainlog.1: Permission denied
この問題を修正するには、ユーザー exim
をグループ log
に追加してください。そして olddir
(/var/log/old
) のグループをデフォルトの root
から log
に変更してください。
logrotate の状態を確認
cat /var/lib/logrotate.status
を実行することで logroate によってローテートされているファイルを確認できます:
# cat /var/lib/logrotate.status
"/var/log/mysql/query.log" 2016-3-20-5:0:0 "/var/log/samba/samba-smbd.log" 2016-3-21-5:0:0 "/var/log/httpd/access_log" 2016-3-20-5:0:0
親ディレクトリに安全でない権限があるためログをスキップする
どのユーザーとどのグループが /etc/logrotate.d/job
を実行する必要があるかを構成で設定します。
file-to-be-rotated { su user group rotate 4 }