Logrotate copytruncateオプションに時間がかかりすぎる

Logrotate copytruncateオプションに時間がかかりすぎる

私はcrontabを使用して4時間ごとにlogrotateを実行します。 50Gごとにファイルを回転させ、4時間以内に完了すると予想したいと思います。私のものログ循環の構成次のように:

/log/*/*/*/*.log
{
        size 50G
        copytruncate
        missingok
        notifempty
        nocompress
        postrotate
                dir=${1%/*}
                mv "$1" "$dir"\/"$(basename $1 .1)-$(date +'%Y%m%d_%H%M').1";
        endscript
        lastaction
                find /log -type f -name "*.1" -exec bash -c 'gzip -nc "$1" > "${1:0:-2}.gz"; rm "$1"' _ {} \;
        endscript
}

しかし、私のファイルはGB単位です。それでは、copytruncateオプションを使用しても大丈夫でしょうか?それとも別の選択肢がありますか?私が考えることができる1つの解決策は、コピーするのではなく、事前回転スクリプトを使用してファイル名を変更することです。

ベストアンサー1

1) ログファイルが大きすぎます。 crontabにlogrotateエントリを追加して(5分ごと)、より小さく処理しやすくします。
2) copytruncate はファイルをコピーし (50GB が多い) ファイルを 0 バイトに切り捨てます (ftruncate)。この操作には時間がかかり、操作中に記録が失われます。
3)ファイルを解析し、不要な情報(フィールドの説明 - ヘッダーの生成など)を削除し、カンマ(または他のマーカー)で区切られた値のみを保持します。

最高のオプション:
- より高い周波数。
- コピー切り捨てがありません。
-kill -HUP は conf ファイルのプロセスを再読み込みします。
- スピン1.
- 圧縮。
- gzipで圧縮されたログファイルを安全な場所に移動します。

おすすめ記事