30日経過すると、ログファイル名の日付形式が原因で vCenter Server vPostgres のログローテーションが失敗する
search cancel

30日経過すると、ログファイル名の日付形式が原因で vCenter Server vPostgres のログローテーションが失敗する

book

Article ID: 381557

calendar_today

Updated On:

Products

VMware vCenter Server VMware vCenter Server 8.0 VMware vCenter Server 7.0

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 パーティションの空き容量がなくなる。

Cause

30日経過すると、ローテートされたログファイル名に日にちのみしか含まれないことが原因で、 /var/log/vmware/vpostgres/postgresql.log と /var/log/vmware/vtsdb/postgresql.log のログローテーションが失敗します。
ローテーションにより新たに作成しようとするファイルと同名のファイルが既に存在するためエラーが発生します。
ログがローテートされないことで、最終的には /storage/log パーティションの空き容量がなくなります。

Resolution

対処:

古い postgresql.log-0#.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
}



また、 /etc/logrotate.d/vmware_vtsdb_postgres_log を以下の通りに編集してください。 (このファイルは VCSA 8.x にしかありません。)

/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時間毎に自動で実行されるため、他の作業は必要ありません。