vCenter Server の vPostgres ログ ローテーションが日付形式により 30 日経過後に失敗する
search cancel

vCenter Server の vPostgres ログ ローテーションが日付形式により 30 日経過後に失敗する

book

Article ID: 431047

calendar_today

Updated On:

Products

VMware vCenter Server

Issue/Introduction

免責事項: これは英文の記事「vCenter Server vPostgres log rotation fails after 30 days due to date format」の日本語訳です。記事はベストエフォートで翻訳を進めているため、ローカライズ化コンテンツは最新情報ではない可能性があります。最新情報は英語版の記事で参照してください。


事象内容:


以下のログについて、30日経過後にログローテーションが実行されなくなります。

  • /var/log/vmware/vpostgres/postgresql.log
  • /var/log/vmware/vtsdb/postgresql.log

その結果、/storage/log パーティションの使用率が 100% に達する可能性があります。

Environment

vCenter Server 7.x 
vCenter Server 8.x

Cause

/var/log/vmware/vpostgres/postgresql.log および /var/log/vmware/vtsdb/postgresql.log において、ローテーション後のログファイル名に含まれる日付フォーマットが「日」のみとなっているため、30日経過後に同一名称のアーカイブファイルを作成しようとしてエラーが発生し、ログローテーションが停止する事象が発生します。

この結果、ログローテーションが実行されなくなり、最終的に /storage/log パーティションの容量が逼迫し、100% に達する可能性があります。

Resolution

暫定回避策:

古い postgresql.log-#.gz のログファイルを削除することで、ログローテーションは再開されます。

また、削除後もログローテーションが再開されない場合は、
/etc/logrotate.d/vmware_postgres_log の設定を以下のように更新してください。

/var/log/vmware/vpostgres/postgresql.log {
   firstaction
      dim=$(date -d "$(date +%Y-%m-01) +1 month -1 day" +%d)
      find /var/log/vmware/vpostgres/ -name "postgresql.log-*gz" -mtime +$dim -exec rm {} \;
   endscript
   daily
   rotate 30
   maxage 30

   dateext
   dateyesterday
   dateformat -%Y-%m-%d_%H:%M:%S
   compress
   copytruncate
}

 

VCSA 8.0 U3e 以前のバージョンをご利用の場合は、
/etc/logrotate.d/vmware_vtsdb_postgres_log を以下の内容に更新してください。

VCSA 8.0 U3g 以降のバージョンをご利用の場合は、
/etc/logrotate.d/vmware-additional-data.lr を以下の内容に更新してください。

/var/log/vmware/vtsdb/postgresql.log {
   firstaction
      dim=$(date -d "$(date +%Y-%m-01) +1 month -1 day" +%d)
      find /var/log/vmware/vtsdb/ -name "postgresql.log-*gz" -mtime +$dim -exec rm {} \;
   endscript
   daily
   rotate 30
   maxage 30

   dateext
   dateyesterday
   dateformat -%Y-%m-%d_%H:%M:%S
   compress
   copytruncate
}



cron ジョブが 1 時間ごとに実行されるため、追加の対応は不要です。

Additional Information