FinOps 中心模板
幕后查看构成 FinOps 中心模板的内容,包括输入和输出。
此模板创建新的 FinOps 中心 实例。
FinOps 中心包括:
- 用于托管成本数据的 Data Lake 存储。
- 用于数据处理和业务流程的数据工厂。
- 用于存储机密的密钥库。
重要
若要使用模板,需要创建一个成本管理导出,用于将成本数据发布到 msexports
包含的存储帐户中的容器。 有关详细信息,请参阅 “创建新中心”。
先决条件
在部署模板之前,请确保满足以下先决条件:
必须具有以下权限才能创建 已部署的资源。
资源 最低 Azure RBAC 部署和配置数据工厂¹ 数据工厂参与者 部署 密钥库ー 密钥保管库参与者 配置密钥库机密 Key Vault 管理员 创建托管标识¹ 托管的标识参与者 部署和配置存储¹ 存储帐户参与者 将托管标识分配给资源¹ 托管的标识操作员 创建部署脚本¹ 仅 Microsoft.Resources/deploymentScripts/write
包含允许的操作和Microsoft.ContainerInstance/containerGroups/write
权限的自定义角色,或者,包括这些权限和上述所有角色的参与者将权限分配给托管标识¹ 基于角色访问控制管理员,或者所有者,其中包括此角色和上述所有角色 创建订阅或资源组成本导出 成本管理参与者 创建 EA 计费成本导出示例 企业读者、部门读取者或注册帐户所有者(了解详细信息) 创建 MCA 计费成本导出示例 参与者 读取存储中的 Blob 数据 存储 Blob 数据参与者 ¹ 分配资源组范围的中心资源部署权限就足够了。
必须在要从中导出成本的范围分配成本管理权限。
若要从 Power BI 或其他客户端工具访问导出的成本数据,需要具有 ʻ Blob 数据权限。必须在订阅中注册 Microsoft.EventGrid 资源提供程序。 有关详细信息,请参阅 注册资源提供程序。
重要
如果忘记了此步骤,部署将成功,但管道触发器不会启动,并且数据不会准备就绪。 有关详细信息,请参阅 Power BI 报表疑难解答。
参数
下面是可用于自定义部署的参数:
参数 | 类型 | 说明 | 默认值 |
---|---|---|---|
hubName | string | 可选。 中心的名称。 用于确保唯一的资源名称。 | “finops-hub” |
location | string | 可选。 应在其中创建所有资源的 Azure 位置。 请参阅 https://aka.ms/azureregions。 | 与部署相同 |
skipEventGridRegistration | 布尔 | 指示事件网格资源提供程序是否已注册(例如,在以前的中心部署中)。 需要事件网格 RP 注册。 如果未设置,则会创建临时事件网格命名空间以自动注册资源提供程序。 | false (注册 RP) |
EventGridLocation | string | 可选。 用于临时事件网格命名空间的 Azure 位置,以便在主位置不受支持的情况下注册 Microsoft.EventGrid 资源提供程序。 命名空间被删除,不用于中心操作。 | 与 location 相同 |
storageSku | 字符串 | 可选。 要使用的存储 SKU。 LRS = 成本最低,ZRS = 高可用性。 标准 SKU 不适用于 Data Lake gen2 存储。 允许:Premium_LRS 、Premium_ZRS 。 |
“Premium_LRS” |
标记 | object | 可选。 要应用于所有资源的标记。 cm-resource-parent 此外,还添加了标记,用于改进成本管理中的成本汇总。 |
|
tagsByResource | object | 可选。 要根据其资源类型应用于资源的标记。 资源类型特定的标记与所有资源的标记合并。 | |
scopesToMonitor | array | 可选。 要监视和引入成本的范围 ID 列表。 | |
exportRetentionInDays | int | 可选。 在 ms-cm-exports 容器中保留的成本数据天数。 | 0 |
ingestionRetentionInMonths | int | 可选。 要保留在引入容器中的成本数据月数。 | 13 |
remoteHubStorageUri | string | 可选。 要将数据推送到远程中心的存储帐户,以便将数据引入远程中心。 | |
remoteHubStorageKey | string | 可选。 将数据推送到远程中心的存储帐户密钥。 |
资源
在部署期间,以下资源在目标资源组中创建。
资源使用以下命名约定: <hubName>-<purpose>-<unique-suffix>
名称调整为考虑长度和字符限制。 用于 <unique-suffix>
确保资源名称在需要的情况下全局唯一。
<hubName>store<unique-suffix>
存储帐户 (Data Lake Storage Gen2)- Blob 容器:
msexports
– 暂时存储成本管理导出。ingestion
– 存储引入的数据。注意
将来,我们将使用此容器在成本管理之外暂存外部数据。 -
config
– 存储中心元数据和配置设置。 文件:settings.json
– 中心设置。schemas/focuscost_1.0.json
– PARQUET 转换的 FOCUS 1.0 架构定义。schemas/focuscost_1.0-preview(v1).json
– PARQUET 转换的 FOCUS 1.0-preview 架构定义。
- Blob 容器:
<hubName>-engine-<unique-suffix>
数据工厂实例- 管道:
msexports_ExecuteETL
– 将msexports_ETL_ingestion
管道排队以考虑数据工厂管道触发器限制。msexports_ETL_transform
– 将成本管理导出转换为 parquet,并删除每天导出中重复的历史数据。config_ConfigureExports
– 为所有范围创建成本管理导出。config_StartBackfillProcess
– 根据保留设置运行每个月的回填作业。config_RunBackfillJob
– 为指定日期范围的所有已定义范围创建和触发器导出。config_StartExportProcess
– 获取根据settings.json中定义的范围配置的所有成本管理导出的列表,然后使用config_RunExportJobs管道运行每个导出。config_RunExportJobs
– 运行指定的成本管理导出。msexports_ExecuteETL
– 触发成本管理导出的引入过程,以考虑数据工厂管道触发器限制。msexports_ETL_transform
– 将成本管理导出转换为 parquet,并删除每天导出中重复的历史数据。
- 触发器:
config_SettingsUpdated
– 更新settings.json时触发config_ConfigureExports
管道。config_DailySchedule
– 为当前月份的成本数据每天触发config_RunExportJobs
管道。config_MonthlySchedule
– 针对上一个月的成本数据每月触发config_RunExportJobs
管道。msexports_FileAdded
– 在成本管理导出完成时触发msexports_ExecuteETL
管道。
- 管道:
<hubName>-vault-<unique-suffix>
密钥库实例- 机密:
- 数据工厂系统托管标识
- 机密:
除了上述信息之外,还创建了以下资源来自动执行部署过程。 应自动删除部署脚本。 但是,不要删除托管标识,因为它可能会在升级到下一个版本时导致错误。
- 托管标识:
<storage>_blobManager
(存储 Blob 数据参与者) - 上传settings.json文件。<datafactory>_triggerManager
(数据工厂参与者) - 在部署之前停止触发器,并在部署后启动触发器。
- 部署脚本(成功部署后自动删除):
<datafactory>_deleteOldResources
– 从以前的 FinOps 中心部署中删除未使用的资源。<datafactory>_stopTriggers
– 使用 triggerManager 标识停止中心中的所有触发器。<datafactory>_startTriggers
– 使用 triggerManager 标识启动中心中的所有触发器。<storage>_uploadSettings
– 使用 blobManager 标识上传settings.json文件。
Outputs
下面是部署生成的输出:
输出 | 类型 | 说明 | 值 |
---|---|---|---|
name | 字符串 | 已部署的中心实例的名称。 | |
location | 字符串 | 已部署到 Azure 资源位置资源。 | location |
dataFactorytName | 字符串 | 数据工厂的名称。 | dataFactory.name |
storageAccountId | 字符串 | 为中心实例创建的存储帐户的资源 ID。 创建成本管理导出时必须使用它。 | storage.outputs.resourceId |
storageAccountName | 字符串 | 为中心实例创建的存储帐户的名称。 将 FinOps 工具包 Power BI 报表连接到数据时必须使用它。 | storage.outputs.name |
storageUrlForPowerBI | 字符串 | 将自定义 Power BI 报表连接到数据时要使用的 URL。 | 'https://${storage.outputs.name}.dfs.${environment().suffixes.storage}/${storage.outputs.ingestionContainer}' |
managedIdentityId | 字符串 | 数据工厂托管标识的对象 ID。 配置托管导出时需要此输出。 | dataFactory.identity.principalId |
managedIdentityTenantId | 字符串 | Microsoft Entra 租户 ID。 配置托管导出时需要此输出。 | tenant().tenantId |