FinOps ハブ テンプレート
このドキュメントでは、FinOps Hubs デプロイ テンプレートに含まれる内容の詳細な概要を示します。 これは、デプロイを調整したり、組織のニーズを満たすためにテンプレートに対して行うことができるカスタマイズを通知したりするためのガイドとして使用できます。 このドキュメントでは、テンプレートをデプロイするために必要な前提条件、カスタマイズできる入力パラメーター、デプロイされるリソース、テンプレートの出力について説明します。 テンプレート出力を使用して、Power BI、データ エクスプローラー、またはその他のツールでハブ インスタンスに接続できます。
FinOps ハブには、セキュリティで保護されたスケーラブルな FinOps プラットフォームを提供するための多くのリソースが含まれています。 やり取りする主なリソースは次のとおりです。
- 高度な分析用のスケーラブルなデータストアとしてのデータ エクスプローラー (Kusto) (省略可能)。
- データ インジェストのステージング領域としてのストレージ アカウント (Data Lake Storage Gen2)。
- データ インジェストとクリーンアップを管理する Data Factory インスタンス。
重要
テンプレートを使用するには、Cost Management エクスポートを作成して、含まれているストレージ アカウントの msexports
コンテナーにデータを発行する必要があります。 詳細については、「 新しいハブの作成」を参照してください。
前提条件
テンプレートをデプロイする前に、次の前提条件が満たされていることを確認します。
デプロイされたリソースを作成するには、次のアクセス許可が必要です。
リソース 最小 Azure RBAC Data Factory のデプロイと構成¹ Data Factory Contributor Key Vault のデプロイ¹ Key Vault Contributor Key Vault シークレットの構成¹ Key Vault Administrator マネージド ID の作成¹ Managed Identity Contributor ストレージのデプロイと構成¹ Storage Account Contributor リソースにマネージド ID を割り当てる¹ Managed Identity Operator デプロイ スクリプトの作成¹ 許可されたアクションとして Microsoft.Resources/deploymentScripts/write
とMicrosoft.ContainerInstance/containerGroups/write
のアクセス許可のみを含むカスタム ロール、またはこれらのアクセス許可と上記のすべてのロールを含む Contributorマネージド ID にアクセス許可を割り当てる¹ ロール ベースのアクセス制御管理者または、このロールと上記のすべてのロールを含む Owner サブスクリプションまたはリソース グループコストのエクスポート² を作成する Cost Management 共同作成者 EA 課金コストのエクスポート² を作成する エンタープライズ閲覧者、部門閲覧者、または登録アカウント所有者 (詳細情報) MCA 課金コストのエクスポート² を作成する Contributor ストレージの BLOB データの読み取り ² ストレージ BLOB データ共同作成者 ¹ リソース グループ スコープに対するハブ リソースのデプロイアクセス許可を割り当てるので十分です。
² コスト管理のアクセス許可は、コストをエクスポートするスコープに割り当てる必要があります。
Power BI またはその他のクライアント ツールからエクスポートされたコスト データにアクセスするには、² BLOB データのアクセス許可が必要です。Microsoft.EventGrid リソース プロバイダーは、サブスクリプションに登録する必要があります。 詳細については、「 リソース プロバイダーを登録するを参照してください。
重要
この手順を忘れた場合、デプロイは成功しますが、パイプライン トリガーは開始されず、データの準備はできなくなります。 詳細については、「 Power BI レポートのトラブルシューティングを参照してください。
パラメーター
デプロイのカスタマイズに使用できるパラメーターを次に示します。
パラメーター | 型 | 説明 | 規定値 |
---|---|---|---|
hubName | String | 省略可能。 ハブの名前。 一意のリソース名を確保するために使用されます。 | "finops-hub" |
location | String | 省略可能。 すべてのリソースを作成する必要がある Azure の場所。 以下を参照してください。https://aka.ms/azureregions | デプロイと同じ |
storageSku | String | 省略可能。 使用するストレージ SKU。 LRS = 最低コスト、ZRS = 高可用性。 注: Data Lake gen2 ストレージでは Standard SKU を使用できません。 許可: Premium_LRS 、 Premium_ZRS 。 |
"Premium_LRS" |
dataExplorerName | String | 省略可能。 高度な分析に使用する Azure Data Explorer クラスターの名前。 空の場合、Azure Data Explorer はデプロイされません。 監視対象のコストが $2 から 5M/mo を超える場合は、Power BI で使用する必要があります。 既定値: "" (使用しないでください)。 | |
dataExplorerSkuName | String | 省略可能。 Azure Data Explorer SKU の名前。 既定値: "Dev(No SLA)_Standard_E2a_v4"。 | |
dataExplorerSkuTier | String | 省略可能。 Azure Data Explorer クラスターの SKU レベル。 (1 つのノードが原因で) SLA なしでコストを最小限に抑えるために Basic を使用します。 高可用性とパフォーマンスの向上には Standard を使用します。 使用できる値: Basic、Standard。 既定値: "Basic"。 | |
dataExplorerSkuCapacity | Int | 省略可能。 クラスターで使用するノードの数。 使用できる値: Basic SKU レベルの場合は 1、Standard の場合は 2 から 1000。 既定値: 1。 | |
tags | オブジェクト | 省略可能。 すべてのリソースに適用するタグ。 また、Cost Management のコスト ロールアップを改善するために、cm-resource-parent タグを追加します。 |
|
tagsByResource | オブジェクト | 省略可能。 リソースの種類に基づいてリソースに適用するタグ。 リソースの種類固有のタグは、すべてのリソースのタグとマージされます。 | |
scopesToMonitor | Array | 省略可能。 コストを監視および取り込むスコープ ID の一覧。 | |
exportRetentionInDays | Int | 省略可能。 msexports コンテナーに保持するデータの日数。 | 0 |
ingestionRetentionInMonths | Int | 省略可能。 インジェスト コンテナーに保持するデータの月数。 | 13 |
dataExplorerLogRetentionInDays | Int | 省略可能。 データ エクスプローラー *_log テーブルに保持するデータの日数。 | 0 |
dataExplorerFinalRetentionInMonths | Int | 省略可能。 データ エクスプローラー *_final_v* テーブルに保持するデータの月数。 | 13 |
remoteHubStorageUri | String | 省略可能。 データをプッシュしてリモート ハブに取り込むストレージ アカウント。 | |
remoteHubStorageKey | String | 省略可能。 リモート ハブにデータをプッシュするときに使用するストレージ アカウント キー。 | |
で のパブリックアクセスを有効にする | string | 省略可能。 データレイク (ストレージ ファイアウォール) へのパブリック アクセスを無効にします。 | 間違い |
virtualNetworkAddressPrefix | String | 省略可能。 FinOps ハブで使用されるプライベート仮想ネットワークの IP アドレス範囲。 /26 は、IP を無駄にしないようにすることをお勧めします。 内部的には、プライベート エンドポイント用の /28 、一時デプロイ スクリプト (コンテナー インスタンス) 用の別の /28 サブネット、Azure Data Explorer の /27 (有効な場合) が作成されます。 |
'10.20.30.0/26' |
リソース
デプロイ時に、ターゲット リソース グループに次のリソースが作成されます。
リソースでは、 <hubName>-<purpose>-<unique-suffix>
という名前付け規則が使用されます。 名前は、長さと文字の制限を考慮して調整されます。 <unique-suffix>
は、リソース名が必要に応じてグローバルに一意であることを確認するために使用されます。
<hubName>store<unique-suffix>
ストレージ アカウント (Data Lake Storage Gen2)- BLOB コンテナー:
msexports
– Cost Management のエクスポートを一時的に格納します。ingestion
– 取り込まれたデータを格納します。Note
将来的には、このコンテナーを使用して、Cost Management の外部で外部データをステージングします。-
config
– ハブのメタデータと構成設定を格納します。 ファイル:settings.json
– ハブの設定。schemas/focuscost_1.0.json
– Parquet 変換用の FOCUS 1.0 スキーマ定義。schemas/focuscost_1.0-preview(v1).json
– Parquet 変換用の FOCUS 1.0-preview スキーマ定義。schemas/pricesheet_2023-05-01_ea.json
– Parquet 変換用の価格シート EA スキーマ定義バージョン 2023-05-01。schemas/pricesheet_2023-05-01_mca.json
– Parquet 変換用の価格シート MCA スキーマ定義バージョン 2023-05-01。schemas/reservationdeatils_2023-03-01.json
– Parquet 変換用の予約詳細スキーマ定義バージョン 2023-03-01。schemas/reservationrecommendations_2023-05-01_ea.json
– Parquet 変換用の予約の推奨事項 EA スキーマ定義バージョン 2023-05-01。schemas/reservationrecommendations_2023-05-01_mca.json
– Parquet 変換用の予約の推奨事項 MCA スキーマ定義バージョン 2023-05-01。schemas/reservationtransactions_2023-05-01_ea.json
– Parquet 変換用の予約トランザクション EA スキーマ定義バージョン 2023-05-01。schemas/reservationtransactions_2023-05-01_mca.json
– Parquet 変換用の予約トランザクション MCA スキーマ定義バージョン 2023-05-01。
- BLOB コンテナー:
- デプロイ スクリプト用の
<hubName>script<unique-suffix>
ストレージ アカウント(Data Lake Storage Gen2)。 <hubName>-engine-<unique-suffix>
Data Factory インスタンス- パイプライン:
config_InitializeHub
– デプロイ後に FinOps ハブ インスタンスを初期化 (または更新) します。config_ConfigureExports
– すべてのスコープの Cost Management エクスポートを作成します。config_StartBackfillProcess
– 保持設定に基づいて、毎月のバックフィル ジョブを実行します。config_RunBackfillJob
– 指定した日付範囲に対して定義されているすべてのスコープのエクスポートを作成してトリガーします。config_StartExportProcess
– settings.jsonで定義されているスコープに基づいて、このハブ用に構成されているすべての Cost Management エクスポートの一覧を取得し、config_RunExportJobs パイプラインを使用して各エクスポートを実行します。config_RunExportJobs
– 指定した Cost Management エクスポートを実行します。msexports_ExecuteETL
– Data Factory パイプライン トリガーの制限を考慮するために、msexports_ETL_ingestion
パイプラインをキューに入れます。msexports_ETL_ingestion
– Cost Management のエクスポートを Parquet に変換し、各日のエクスポートで複製された履歴データを削除します。ingestion_ExecuteETL
– Data Factory パイプライン トリガーの制限を考慮するために、ingestion_ETL_dataExplorer
パイプラインをキューに入れます。ingestion_ETL_dataExplorer
– Parquet データを Azure Data Explorer クラスターに取り込みます。
- トリガー:
config_SettingsUpdated
– settings.jsonが更新されたときに、config_ConfigureExports
パイプラインをトリガーします。config_DailySchedule
– 現在の月のコスト データに対して毎日、config_RunExportJobs
パイプラインをトリガーします。config_MonthlySchedule
– 前月のコスト データに対して毎月config_RunExportJobs
パイプラインをトリガーします。msexports_ManifestAdded
– Cost Management のエクスポートが完了したときに、msexports_ExecuteETL
パイプラインをトリガーします。ingestion_ManifestAdded
– manifest.json ファイルが追加されたときにingestion_ExecuteETL
パイプラインをトリガーします (msexports_ETL_ingestion
パイプラインによって処理されます)。
- マネージド プライベート エンドポイント
<hubName>store<unique-suffix>
- ストレージ アカウントのマネージド プライベート エンドポイント。<hubName>-vault-<unique-suffix>
- Azure Key Vault のマネージド プライベート エンドポイント。
- パイプライン:
<hubName>-vault-<unique-suffix>
Key Vault インスタンス- シークレット:
- Data Factory システムマネージド ID
- シークレット:
<dataExplorerName>
データエクスプローラー クラスターHub
データベース – 内部を抽象化するための公開関数。- 2 セットの関数が含まれています。
- サポートされている最新の FOCUS バージョン (
Costs
、Prices
など) のデータセット固有の関数。 - サポートされている各 FOCUS バージョンのデータセット固有の関数 (例: FOCUS 1.0 の
Costs_v1_0
)。 これらの関数は、下位互換性のために用意されています。 すべての関数は、対象の FOCUS バージョンにアラインされたすべてのデータを返します。
- サポートされている最新の FOCUS バージョン (
- データセットには、
Costs
、Prices
が含まれます。 - サポートされている FOCUS バージョンには、
v1_0
が含まれます。
- 2 セットの関数が含まれています。
Ingestion
データベース – 取り込まれたデータを格納します。- 設定:
HubSettingsLog
テーブル – 高レベルの構成変更の履歴 (バージョン、スコープなど) を格納します。HubSettings
関数 – ハブ インスタンス設定の最新バージョンを取得します。HubScopes
関数 – このハブ インスタンスに対して現在構成されているスコープを取得します。
- データを開く:
PricingUnits
テーブル – FinOps ツールキットからの PricingUnits マッピング ファイル。 データの正規化とクリーンアップに使用されます。Regions
テーブル – FinOps ツールキットの リージョン マッピング ファイル。 データの正規化とクリーンアップに使用されます。ResourceTypes
テーブル – FinOps ツールキットからの ResourceTypes マッピング ファイル。 データの正規化とクリーンアップに使用されます。Services
テーブル – FinOps ツールキットからの サービス マッピングファイル。 データの正規化とクリーンアップに使用されます。
- データセット:
<dataset>_raw
テーブル – 取り込み元からの直接の生データ。 複数のソースからのデータに対して共用体スキーマを使用します。<dataset>_transform_vX_Y
関数 – 必要に応じて開いているデータ テーブルを使用して、未加工データを正規化し、対象の FOCUS バージョンに合わせてクリーンアップします。<dataset>_final_vX_Y
テーブル – ターゲットの FOCUS バージョンにアラインされた対応する生テーブルのクリーン バージョン。 データが生テーブルに取り込まれる際に、対応する変換関数を使用する更新ポリシーを介して入力されます。
- 設定:
上記の情報に加えて、デプロイ プロセスを自動化するために次のリソースが作成されます。 デプロイ スクリプトは自動的に削除する必要があります。 ただし、次のリリースにアップグレードするときにエラーが発生する可能性があるため、マネージド ID を削除しないでください。
- マネージド ID:
<storage>_blobManager
(Storage BLOB データ共同作成者) – settings.json ファイルをアップロードします。<datafactory>_triggerManager
(Data Factory 共同作成者) – デプロイ前にトリガーを停止し、デプロイ後に開始します。
- デプロイ スクリプト (デプロイが成功した後に自動的に削除):
<datafactory>_deleteOldResources
– 以前の FinOps ハブデプロイから未使用のリソースを削除します。<datafactory>_stopTriggers
– triggerManager ID を使用して、ハブ内のすべてのトリガーを停止します。<datafactory>_startTriggers
– triggerManager ID を使用してハブ内のすべてのトリガーを開始します。<storage>_uploadSettings
– blobManager ID を使用してsettings.json ファイルをアップロードします。
出力
デプロイによって生成される出力を次に示します。
出力 | 型 | 説明 | 値 |
---|---|---|---|
name | String | リソース グループの名前。 | |
location | String | Azure リソースの場所のリソースがデプロイされました。 | |
dataFactorytName | String | Data Factory の名前。 | |
storageAccountId | String | デプロイされたストレージ アカウントのリソース ID。 | |
storageAccountName | String | ハブ インスタンス用に作成されたストレージ アカウントの名前。 これは、FinOps ツールキットの Power BI レポートをデータに接続するときに使用する必要があります。 | |
storageUrlForPowerBI | String | カスタム Power BI レポートをデータに接続するときに使用する URL。 | |
clusterId | String | Data Explorer クラスターのリソース ID。 | |
clusterUri | String | データ エクスプローラー クラスターの URI。 | |
ingestionDbName | String | データの取り込みに使用されるデータ エクスプローラー データベースの名前。 | |
hubDbName | String | データのクエリに使用されるデータ エクスプローラー データベースの名前。 | |
managedIdentityId | String | Data Factory マネージド ID のオブジェクト ID。 これは、マネージド エクスポートを構成するときに必要になります。 | |
managedIdentityTenantId | String | Azure AD テナント ID。 これは、マネージド エクスポートを構成するときに必要になります。 |