「Logrotate」の版間の差分
(ページの作成:「Category:デーモンとシステムサービス Category:データ圧縮とアーカイブ en:Logrotate {{Related articles start}} {{Related|Cron}} {{Related...」) |
Kusanaginoturugi (トーク | 投稿記録) 細 (→参照: add TranslationStatus.) |
||
| (7人の利用者による、間の26版が非表示) | |||
| 1行目: | 1行目: | ||
| − | [[Category: |
+ | [[Category:ロギング]] |
[[Category:データ圧縮とアーカイブ]] |
[[Category:データ圧縮とアーカイブ]] |
||
[[en:Logrotate]] |
[[en:Logrotate]] |
||
| + | [[pl:Logrotate]] |
||
| + | [[uk:Logrotate]] |
||
{{Related articles start}} |
{{Related articles start}} |
||
{{Related|Cron}} |
{{Related|Cron}} |
||
| 7行目: | 9行目: | ||
{{Related articles end}} |
{{Related articles end}} |
||
| − | https:// |
+ | https://github.com/logrotate/logrotate より: |
:''ログファイルが大量に生成されるシステムで、ログファイルの管理を簡単にするために logrotate ユーティリティは作られました。Logrotate はログファイルの自動的なローテーション圧縮や削除、メール送信などを可能にします。Logrotate を設定することで、ログファイルを毎日毎周毎月ごとに管理したり、特定のサイズまで達した時の動作を決められます。'' |
:''ログファイルが大量に生成されるシステムで、ログファイルの管理を簡単にするために logrotate ユーティリティは作られました。Logrotate はログファイルの自動的なローテーション圧縮や削除、メール送信などを可能にします。Logrotate を設定することで、ログファイルを毎日毎周毎月ごとに管理したり、特定のサイズまで達した時の動作を決められます。'' |
||
| 15行目: | 17行目: | ||
==インストール== |
==インストール== |
||
| − | {{Pkg|logrotate}} |
+ | Logrotate は {{Pkg|logrotate}} パッケージでインストールできます。 |
| − | + | デフォルトでは、logrotate は [[systemd/タイマー|systemd タイマー]]によって毎日動作します: {{ic|logrotate.timer}}。 |
|
==設定== |
==設定== |
||
| − | logrotate の |
+ | デフォルトのパラメータを設定する logrotate の主な設定ファイルは {{ic|/etc/logrotate.conf}} です。追加のアプリケーション固有の設定ファイルは、{{ic|/etc/logrotate.d}} ディレクトリに含まれています。アプリケーション固有に設定された値は、プライマリ設定ファイルの同じパラメータをオーバーライドします。設定例と使用可能なディレクティブのリファレンスについては、{{man|5|logrotate.conf}} を参照してください。 |
| + | logrotate が正しく機能するかどうかを確認するには、デバッグモードで実行します。このモードでは、デバッグ出力の生成以外は何も行われません: |
||
| − | ==トラブルシューティング== |
||
| + | $ logrotate --debug /etc/logrotate.conf |
||
| − | === ログがローテーションされない === |
||
| + | === ログの圧縮 === |
||
| − | cron ジョブによってログがローテーションされない場合、{{ic|user}} や {{ic|group}} の所有者が間違っている可能性があります。どちらも {{ic|root}} である必要があります。この問題を修正するには以下を実行: |
||
| + | Logrotate は、{{ic|zstd}} のようなカスタム コマンドを使用してログを圧縮できます。 |
||
| − | {{bc| |
||
| + | |||
| − | # chown root:root /etc/logrotate.conf |
||
| − | + | {{hc|/etc/logrotate.conf| |
|
| + | compress |
||
| + | compresscmd /usr/bin/zstd |
||
| + | compressext .zst |
||
| + | compressoptions -T0 --long |
||
| + | uncompresscmd /usr/bin/unzstd |
||
}} |
}} |
||
| + | |||
| − | もしくは、{{ic|/etc/logrotate.conf}} で使いたいユーザーとグループに {{ic|su}} 変数を設定してください。 |
||
| + | 詳細については、{{man|5|logrotate.conf}} および {{man|1|zstd}} を参照してください。 |
||
| + | |||
| + | == 使用方法 == |
||
| + | |||
| + | logrotate は通常、[[systemd]] サービスを介して実行されます。: {{ic|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 |
||
| + | |||
| + | 詳細については、{{man|8|logrotate}} を参照してください。 |
||
| + | |||
| + | ==トラブルシューティング== |
||
=== exim のログがローテーションされない === |
=== exim のログがローテーションされない === |
||
| 42行目: | 70行目: | ||
この問題を修正するには、ユーザー {{ic|exim}} をグループ {{ic|log}} に追加してください。そして {{ic|olddir}} ({{ic|/var/log/old}}) のグループをデフォルトの {{ic|root}} から {{ic|log}} に変更してください。 |
この問題を修正するには、ユーザー {{ic|exim}} をグループ {{ic|log}} に追加してください。そして {{ic|olddir}} ({{ic|/var/log/old}}) のグループをデフォルトの {{ic|root}} から {{ic|log}} に変更してください。 |
||
| + | |||
| + | === logrotate の状態を確認 === |
||
| + | {{ic|cat /var/lib/logrotate.status}} を実行することで logroate によってローテートされているファイルを確認できます: |
||
| + | {{hc| # 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 |
||
| + | }} |
||
| + | === 親ディレクトリに安全でない権限があるためログをスキップする === |
||
| + | |||
| + | どのユーザーとどのグループが {{ic|/etc/logrotate.d/job}} を実行する必要があるかを構成で設定します。 |
||
| + | |||
| + | {{bc| |
||
| + | file-to-be-rotated { |
||
| + | su user group |
||
| + | rotate 4 |
||
| + | } |
||
| + | }} |
||
== 参照 == |
== 参照 == |
||
| − | * [ |
+ | * [https://wiki.gentoo.org/wiki/Logrotate Logrotate on Gentoo Linux Wiki] |
| + | * [https://man.archlinux.org/man/logrotate.8 logrotate(8) Manual page] |
||
| + | * [https://man.archlinux.org/man/logrotate.conf.5 logrotate.conf(5) Manual page] |
||
| + | |||
| + | {{TranslationStatus|Logrotate|2024-04-02|794731}} |
||
2024年9月10日 (火) 18:17時点における最新版
関連記事
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
}