vCenter Server バージョン 8.0U3g および 9.0.x における vPostgres ログローテーション失敗によるディスク容量不足について
search cancel

vCenter Server バージョン 8.0U3g および 9.0.x における vPostgres ログローテーション失敗によるディスク容量不足について

book

Article ID: 431487

calendar_today

Updated On:

Products

VMware vCenter Server 8.0 VMware vSphere ESXi

Issue/Introduction

免責事項: これは英文の記事「 vPostgres log rotation failure causing disk exhaustion in vCenter Server version 8.0U3g and 9.0.x」の日本語訳です。記事はベストエフォートで翻訳を進めているため、ローカライズ化コンテンツは最新情報ではない可能性があります。最新情報は英語版の記事で参照してください。

vCenter Server 8.0U3g および 9.0.x 環境において、/storage/log および /storage/archive パーティションに関するディスク容量不足のアラートが発生する場合があります。
この問題は、vPostgres ログのローテーションが正常に行われず、postgresql.log が肥大化すること、ならびに削除されない WAL セグメントが蓄積することによって発生します。
主な症状として、vCenter 監視アプリケーションでのクリティカルアラートの発生や、空き容量不足に伴うシステム操作の失敗が挙げられます。

Symptoms:
  • /storage/log パーティションの使用率が 85% を超過します。
  • /storage/archive パーティションの使用率がクリティカル閾値(95% 以上)に達します。
  • postgresql.log のファイルサイズが 1GB を超えます。

Environment

VMware vCenter Server 8.0U3g
VMware vCenter Server 9.0.x

Cause

vPostgres ログローテーション機能の不具合により、ログおよびアーカイブセグメントの自動クリーンアップが実行されないためです。

Resolution

本不具合は、vCenter Server 8.0U3h 以降、および 9.0.x 系においては 9.1 にて修正されています。

即座に容量を確保しアラートを解除する手順について,以下の手順を実行してください。

  1. 肥大化した vPostgres ログファイルをクリアします: echo " " > /storage/log/vmware/vpostgres/postgresql.log
  2. アーカイブパーティション内の 60日以上経過した WAL セグメントを削除します : find /storage/archive/vpostgres/ -type f -mtime +60 -exec rm {} \;
  3. ディスク容量が引き続き逼迫している場合は、stdstream.log ファイルを切り詰めます: echo " " > /storage/log/vmware/wcp/stdstream.log-0.stderr
  4. WCP サービスを再起動してファイルハンドルを解放します: service-control --restart wcp

アップグレードがすぐに実施できない場合におけるワークアラウンドについて、以下の手順を実行してください。

Note : 作業を開始する前に、SSO ドメイン内のすべての vCenter / PSC ノードにおいて、有効な VAMI バックアップまたはオフラインスナップショットを取得してください。VMware vCenter in Enhanced Linked Mode pre-changes snapshot (online or offline) best practice をご参照ください。

Workaround:

  1. vi などのテキストエディタを使用し、設定ファイルを作成・編集します。

  2. /etc/logrotate.d/vmware-additional-data.lr ファイルまたは /etc/logrotate.d/vmware_postgres_log.lr ファイル(どちらが存在するかによって選択してください)に、以下のエントリ /var/log/vmware/vpostgres/postgresql.log を追加します。

    /var/log/vmware/vpostgres/postgresql.log
    /var/log/vmware/vpostgres/postgresql-%d.log
    {
        rotate 30
        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
        maxage 30
        dateext
        dateyesterday
        dateformat -%Y-%m-%d_%H:%M:%S
        compress
        copytruncate
    }
  3. /var/log/vmware/vtsdb/postgresql.log を /etc/logrotate.d/vmware-additional-data.lr ファイルに追加します。


    /var/log/vmware/vtsdb/postgresql.log
    {
       rotate 30
       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
       maxage 30
       dateext
       dateyesterday
       dateformat -%Y-%m-%d_%H:%M:%S
       compress
       copytruncate
    }

Note : cron ジョブが 1 時間ごとに実行されるため、これ以上の追加作業は不要です。

Note :すでに postgresql.log が 20GB 以上に達している場合は、ログローテーションを正しく動作させるために、事前にファイルをゼロクリア(空化)しておく必要があります。 

>/var/log/vmware/vpostgres/postgresql.log

もしくは

sudo truncate -s 0 /storage/log/vmware/vpostgres/postgresql.log

Additional Information