「Logrotate」の版間の差分
Blackle0pard (トーク | 投稿記録) (→インストール: logrotate.timer サービスを起動・起動していることを確認するコマンドを追記。) |
Blackle0pard (トーク | 投稿記録) (→インストール: コマンドラインの入力と出力に、テンプレート:hc を使用。sudoを使うのをやめました。) |
||
22行目: | 22行目: | ||
{{bc| |
{{bc| |
||
− | + | # systemctl enable logrotate.timer |
|
+ | }} |
||
− | % sudo systemctl start logrotate.timer |
||
+ | {{bc| |
||
− | % sudo systemctl status logrotate.timer |
||
+ | # systemctl start logrotate.timer |
||
+ | }} |
||
+ | {{hc| |
||
+ | # systemctl status logrotate.timer |
||
+ | | |
||
● logrotate.timer - Daily rotation of log files |
● logrotate.timer - Daily rotation of log files |
||
Loaded: loaded (/usr/lib/systemd/system/logrotate.timer; enabled; vendor preset: disabled) |
Loaded: loaded (/usr/lib/systemd/system/logrotate.timer; enabled; vendor preset: disabled) |
||
32行目: | 37行目: | ||
Docs: man:logrotate(8) |
Docs: man:logrotate(8) |
||
man:logrotate.conf(5) |
man:logrotate.conf(5) |
||
+ | }} |
||
− | % sudo systemctl list-timers |
||
+ | {{hc| |
||
+ | # systemctl list-timers |
||
+ | | |
||
NEXT LEFT LAST PASSED UNIT ACTIVATE |
NEXT LEFT LAST PASSED UNIT ACTIVATE |
||
Mon 2020-06-08 00:00:00 JST 12h left n/a n/a logrotate.timer logrotate.service |
Mon 2020-06-08 00:00:00 JST 12h left n/a n/a logrotate.timer logrotate.service |
2021年5月10日 (月) 13:56時点における版
関連記事
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の実行を有効にするには次のコマンドを利用します。
# systemctl enable logrotate.timer
# systemctl start logrotate.timer
# systemctl status logrotate.timer
● logrotate.timer - Daily rotation of log files Loaded: loaded (/usr/lib/systemd/system/logrotate.timer; enabled; vendor preset: disabled) Active: active (waiting) since Sun 2020-06-08 xx:xx:xx JST; 5s ago Trigger: Mon 2020-06-08 00:00:00 JST; 56min left Triggers: ● logrotate.service Docs: man:logrotate(8) man:logrotate.conf(5)
# systemctl list-timers
NEXT LEFT LAST PASSED UNIT ACTIVATE Mon 2020-06-08 00:00:00 JST 12h left n/a n/a logrotate.timer logrotate.service
設定
logrotate の一番重要な設定ファイルは /etc/logrotate.conf
です。また、/etc/logrotate.d
ディレクトリには他の設定ファイルが含まれています。
logrotate が正しく動作するか確認するには、以下のコマンドを実行してください。デバッグ出力が生成されます:
logrotate -d
logrotate スクリプトをテストするには (例えば /etc/logrotate.d
ディレクトリの nginx スクリプト)、以下のように実行してみてください:
logrotate -f -v /etc/logrotate.d/nginx
トラブルシューティング
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 によってローテートされているファイルを確認できます:
"/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