logrotateは回転パラメータを考慮しません。

logrotateは回転パラメータを考慮しません。

logrotateの使用に問題があります。私が指示したように動作しないようです。

環境:

  • セントース6.4
  • ログの回転 3.7.8

私の/etc/logrotate.confファイルの内容は次のとおりです。

# rotate log files weekly
daily

# keep 4 weeks worth of backlogs
rotate 30

# create new (empty) log files after rotating old ones
create

# use date as a suffix of the rotated file
# dateext

# uncomment this if you want your log files compressed
compress
compresscmd /usr/bin/bzip2
uncompresscmd /usr/bin/bunzip2
compressext .bz2

# RPM packages drop log rotation information into this directory
include /etc/logrotate.d

問題のあるlogrotateファイルは次のとおりです(elasticsearchの場合は/etc/logrotate.d/elasticsearchにあります)。

/var/log/elasticsearch/*.log {
    missingok
    notifempty
    copytruncate
    postrotate
        rm -rf /var/log/elasticsearch/*.log.$(date +%Y)*
    size 1k
    rotate 7
    daily
}

まず、私のrotate 7設定に従わない。実行すると、次のlogrotate -d /etc/logrotate.confような行が表示されます。

ローテーションログ/var/log/elasticsearch/gravity-es-prod02.log、log->rotateCountは30です。

...そして、30の異なる* .bz2ファイルを回転すると言ういくつかの文もあります。

gravity-es-prod02.log.2015-12-01次に、dateextを有効にしていないにもかかわらず、まだ指定されたログファイル(および最後の手動クリーンアップ以降の以前の日付)が残っていました。これらもクリーンアップされていないので、手動でクリーンアップするためにpostrotateラインを追加しましたが、それも正しく機能していないようです.

編集する logrotateスクリプトを実行するためのcronファイルは非常に標準的です。

#> cat /etc/cron.daily/logrotate 
#!/bin/sh

/usr/sbin/logrotate /etc/logrotate.conf >/dev/null 2>&1
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
    /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0

ベストアンサー1

あなたが提供したスクリプトでバグが見つかりました(終了スクリプトがありません)。

postrotate
    rm -rf /var/log/elasticsearch/*.log.$(date +%Y)*
endscript

私はこの部分が失敗し、どういうわけかこのログモードのグローバル設定を適用すると思います。

おすすめ記事