vRealize Business for Cloudのアップグレード後、コスト計算が失敗することがあります。
問題
vRealize Business for Cloudのアップグレード後、Azure エンドポイントに対するコスト計算が失敗することがあります。サーバ ログに「Multiple entries with same key」というエラー メッセージが含まれることがあります。
原因
この問題は、アップグレード後に FactsRepo インベントリ サービスで重複したエントリが作成されるために発生します。
ソリューション
- システム管理者の認証情報を使用して、vRealize Business for Cloudにログインします。
- 次のコマンドを入力して、Postgres クライアントを起動します。
/usr/ITFM-Cloud/va-tools/bin/db-client.sh
- 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);
- 次のコマンドを入力して、Postgres クライアントを終了します。
\q
- 次のコマンドを入力して、MongoDB にログインします。
mongo
- 次のコマンドを入力します。
use fr_system
- Azure リソース コレクションから重複を取得するには、次のクエリを入力します。
db.getCollection('azureResource').aggregate([{$group: { _id: { resourceId:"$resourceId" }, count: { $sum: 1 } }},{$match : {count: {$gte :2}}}]);
- 出力をテキスト ファイルにコピーします。
出力には、resourceId と count の 2 列の情報が含まれています。
- 次のコマンドを各エントリに 1 回ずつ入力し、重複したエントリを個別に削除します。
db.azureResource.deleteMany({'resourceId':'<resourceIdFromQuery>'});
<resourceIdFromQuery> の部分は、テキスト ファイルにコピーした出力の各エントリの resourceId で置き換える必要があります。
- MongoDB を終了するには、次の組み合わせでキーを同時に押します。
Ctrl+c