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