vRealize Business for Cloudのアップグレード後、コスト計算が失敗することがあります。

問題

vRealize Business for Cloudのアップグレード後、Azure エンドポイントに対するコスト計算が失敗することがあります。サーバ ログに「Multiple entries with same key」というエラー メッセージが含まれることがあります。

原因

この問題は、アップグレード後に FactsRepo インベントリ サービスで重複したエントリが作成されるために発生します。

ソリューション

  1. システム管理者の認証情報を使用して、vRealize Business for Cloudにログインします。
  2. 次のコマンドを入力して、Postgres クライアントを起動します。

    /usr/ITFM-Cloud/va-tools/bin/db-client.sh

  3. Postgres クライアントで、次のコマンドを入力します。

    delete from itfm_azure_resource_details where id in (select itfm_azure_resource_details.id from (select resource_id, month, count(*) from itfm_azure_resource_details group by resource_id, month having count(*)>1 ) as new_details inner join itfm_azure_resource_details on itfm_azure_resource_details.resource_id=new_details.resource_id and itfm_azure_resource_details.month=new_details.month);

  4. 次のコマンドを入力して、Postgres クライアントを終了します。

    \q

  5. 次のコマンドを入力して、MongoDB にログインします。

    mongo

  6. 次のコマンドを入力します。

    use fr_system

  7. Azure リソース コレクションから重複を取得するには、次のクエリを入力します。

    db.getCollection('azureResource').aggregate([{$group: { _id: { resourceId:"$resourceId" }, count: { $sum: 1 } }},{$match : {count: {$gte :2}}}]);

  8. 出力をテキスト ファイルにコピーします。

    出力には、resourceIdcount の 2 列の情報が含まれています。

  9. 次のコマンドを各エントリに 1 回ずつ入力し、重複したエントリを個別に削除します。

    db.azureResource.deleteMany({'resourceId':'<resourceIdFromQuery>'});

    <resourceIdFromQuery> の部分は、テキスト ファイルにコピーした出力の各エントリの resourceId で置き換える必要があります。

  10. MongoDB を終了するには、次の組み合わせでキーを同時に押します。

    Ctrl+c