本文档详细总结了 FinOps 中心部署模板中包含的内容。 可以使用此指南来优化部署,或通知对模板进行自定义以满足组织需求。 本文档介绍了部署模板所需的先决条件、可以自定义的输入参数、将要部署的资源以及模板输出。 模板输出可用于连接到 Power BI、数据资源管理器或其他工具中的中心实例。
FinOps 中心包含许多资源,用于提供安全且可缩放的 FinOps 平台。 要与之交互的主要资源包括:
- 数据探查器(Kusto)作为可扩展的数据存储,用于高级分析(可选)。
- 存储帐户(Data Lake Storage Gen2)作为用于数据引入的暂存区域。
- 用于管理数据引入和清理的数据工厂实例。
重要
若要使用模板,需要创建成本管理导出,将数据发布到 msexports
包含的存储帐户中的容器。 有关详细信息,请参阅 “创建新中心”。
先决条件
在部署模板之前,请确保满足以下先决条件:
必须具有以下权限才能创建 已部署的资源。
资源 最低 Azure RBAC 部署和配置数据工厂¹ 数据工厂参与者 部署 Key Vault(仅限远程中心)¹ 密钥保管库参与者 配置 Key Vault 密钥(仅用于远程中心)¹ Key Vault 管理员 创建托管标识¹ 托管的标识参与者 部署和配置存储¹ 存储帐户参与者 将托管标识分配给资源¹ 托管的标识操作员 创建部署脚本¹ 仅 Microsoft.Resources/deploymentScripts/write
包含允许的操作和Microsoft.ContainerInstance/containerGroups/write
权限的自定义角色,或者,包括这些权限和上述所有角色的参与者将权限分配给托管标识¹ 基于角色访问控制管理员,或者所有者,其中包括此角色和上述所有角色 创建订阅或资源组成本导出 成本管理参与者 创建 EA 计费成本导出示例 企业读者、部门读取者或注册帐户所有者(了解详细信息) 创建 MCA 计费成本导出示例 参与者 读取存储中的 Blob 数据 存储 Blob 数据参与者 ¹ 分配资源组范围的中心资源部署权限就足够了。
必须在要从中导出成本的范围分配成本管理权限。
若要从 Power BI 或其他客户端工具访问导出的成本数据,需要具有 ʻ Blob 数据权限。您必须拥有权限才能在部署过程中向托管身份分配以下角色:
Azure RBAC 角色 注释 数据工厂参与者 分配给部署触发器管理器标识以自动启动数据工厂触发器。 读取者 分配给数据工厂以管理存储中的数据。 存储帐户参与者 分配给数据工厂以管理存储中的数据。 存储 Blob 数据参与者 分配给数据工厂和数据资源管理器以管理存储中的数据。 存储文件数据特权参与者 分配给将文件上传到配置容器的部署文件上传标识。 用户访问管理员 分配给数据工厂以管理存储中的数据。 必须在订阅中注册 Microsoft.EventGrid 资源提供程序。 有关详细信息,请参阅 注册资源提供程序。
重要
如果忘记了此步骤,部署将成功,但管道触发器不会启动,并且数据不会准备就绪。 有关详细信息,请参阅 Power BI 报表疑难解答。
参数
下面是可用于自定义部署的参数:
参数 | 类型 | 说明 | 默认值 |
---|---|---|---|
hubName | 字符串 | 可选。 中心的名称。 用于确保唯一的资源名称。 | “finops-hub” |
位置 | 字符串 | 可选。 应在其中创建所有资源的 Azure 位置。 请参阅 https://aka.ms/azureregions。 | 与部署相同 |
storageSku | 字符串 | 可选。 要使用的存储 SKU。 LRS = 成本最低,ZRS = 高可用性。 请注意,标准 SKU 不适用于 Data Lake gen2 存储。 允许:Premium_LRS 、Premium_ZRS 。 |
“Premium_LRS” |
dataExplorerName | 字符串 | 可选。 用于高级分析的 Azure 数据资源管理器群集的名称。 如果为空,则不会部署 Azure 数据资源管理器。 如果监视的成本超过每月 2-5 百万美元,则需要与 Power BI 一起使用。 默认值:“”(不使用)。 | |
dataExplorerSkuName | 字符串 | 可选。 Azure 数据资源管理器 SKU 的名称。 默认值:“Dev(无服务级别协议)_Standard_E2a_v4”。 | |
dataExplorerSkuTier | 字符串 | 可选。 Azure 数据资源管理器群集的 SKU 层。 使用 Basic 以获得最低成本,但没有 SLA(因为只有单个节点)。 使用 Standard 实现高可用性并提高性能。 允许的值:基本值、标准值。 默认值:“Basic”。 | |
dataExplorerSkuCapacity | int (整数) | 可选。 群集中使用的节点数。 允许的值:基本 SKU 层的 1,标准层为 2-1000。 默认值:1。 | |
标记 | 物体 | 可选。 要应用于所有资源的标记。 我们还将在成本管理中添加 cm-resource-parent 用于改进成本汇总的标记。 |
|
tagsByResource | 物体 | 可选。 要根据其资源类型应用于资源的标记。 特定于资源类型的标记将与所有资源的标记合并。 | |
scopesToMonitor | 数组 | 可选。 要监视和引入成本的范围 ID 列表。 | |
exportRetentionInDays(导出保留天数) | int (整数) | 可选。 要保留在 msexports 容器中的数据天数。 | 0 |
ingestionRetentionInMonths | int (整数) | 可选。 要保留在引入容器中的数据的月份数。 | 13 |
数据浏览器日志保留天数 | int (整数) | 可选。 数据资源管理器 *_log表中要保留的数据天数。 | 0 |
数据探索器最终保留期(月) | int (整数) | 可选。 数据资源管理器 *_final_v* 表中要保留的数据月数。 | 13 |
remoteHubStorageUri | 字符串 | 可选。 要将数据推送到远程中心的存储帐户,以便将数据引入远程中心。 | |
remoteHubStorageKey | 字符串 | 可选。 将数据推送到远程中心的存储帐户密钥。 | |
enablePublicAccess | 字符串 | 可选。 禁用对 Data Lake(存储防火墙)的公共访问。 | 真 实 |
virtualNetworkAddressPrefix | 字符串 | 可选。 FinOps 中心使用的专用虚拟网络的 IP 地址范围。
/26 建议避免浪费 IP。 在内部,将创建以下子网:/28 用于专用终结点,/28 用于临时部署脚本(容器实例),如果启用,还将为 Azure 数据资源管理器创建/27 子网。 |
'10.20.30.0/26' |
资源
在部署期间,以下资源在目标资源组中创建。
资源使用以下命名约定: <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 架构定义。 -
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/reservationdetails_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
– 预留建议 MCA 模式定义版本 2023-05-01 用于 parquet 转换。 -
schemas/reservationtransactions_2023-05-01_ea.json
– 预留交易 EA 架构定义版本 2023-05-01,用于 Parquet 格式转换。 -
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>
数据工厂实例- 管道:
-
config_InitializeHub
– 在部署后初始化 FinOps 中心实例(或更新)。 -
config_ConfigureExports
– 为所有范围创建成本管理导出。 -
config_StartBackfillProcess
– 根据保留设置运行每个月的回填作业。 -
config_RunBackfillJob
– 为指定日期范围的所有已定义范围创建和触发器导出。 -
config_StartExportProcess
– 获取根据settings.json中定义的范围配置的所有成本管理导出的列表,然后使用config_RunExportJobs管道运行每个导出。 -
config_RunExportJobs
– 运行指定的成本管理导出。 -
msexports_ExecuteETL
– 将msexports_ETL_ingestion
管道排队以考虑数据工厂管道触发器限制。 -
msexports_ETL_ingestion
– 将成本管理导出转换为 parquet,并删除每天导出中重复的历史数据。 -
ingestion_ExecuteETL
– 将ingestion_ETL_dataExplorer
管道排队以考虑数据工厂管道触发器限制。 -
ingestion_ETL_dataExplorer
– 将 parquet 数据引入 Azure 数据资源管理器群集。
-
- 触发器:
-
config_SettingsUpdated
– 更新settings.json时触发config_ConfigureExports
管道。 -
config_DailySchedule
– 为当前月份的成本数据每天触发config_RunExportJobs
管道。 -
config_MonthlySchedule
– 针对上一个月的成本数据每月触发config_RunExportJobs
管道。 -
msexports_ManifestAdded
– 在成本管理导出完成时触发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 实例(仅部署为远程集线器时包含)- 机密:
- 数据工厂系统托管标识
- 机密:
-
<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 工具包 的服务映射文件 。 用于数据规范化和清理。 -
resource_type
函数 – 用于根据 ResourceTypes 映射文件将内部资源类型 ID 映射到显示名称的简单函数。- 使用此函数映射单个值并与表联接
ResourceTypes
以更新许多行或映射其他值。
- 使用此函数映射单个值并与表联接
-
- 数据集:
-
<dataset>_raw
表 – 直接从引入源获取的原始数据。 对来自多个源的数据使用联合架构。 -
<dataset>_transform_vX_Y
函数 – 规范化和清理原始数据,使其与目标 FOCUS 版本保持一致,并根据需要使用开放数据表。 -
<dataset>_final_vX_Y
表 - 与目标 FOCUS 版本对齐的相应原始表的干净版本。 通过更新策略填充,该策略在将数据引入原始表中时使用相应的转换函数。
-
- 设置:
-
除了上述信息之外,还创建了以下资源来自动执行部署过程。 应自动删除部署脚本。 但是,不要删除托管标识,因为它可能会在升级到下一个版本时导致错误。
- 托管标识:
-
<storage>_blobManager
(存储 Blob 数据参与者) - 上传settings.json文件。 -
<datafactory>_triggerManager
(数据工厂参与者) - 在部署之前停止触发器,并在部署后启动触发器。
-
- 部署脚本(成功部署后自动删除):
-
<datafactory>_deleteOldResources
– 从以前的 FinOps 中心部署中删除未使用的资源。 -
<datafactory>_stopTriggers
– 使用 triggerManager 标识停止中心中的所有触发器。 -
<datafactory>_startTriggers
– 使用 triggerManager 标识启动中心中的所有触发器。 -
<storage>_uploadSettings
– 使用 blobManager 标识上传settings.json文件。
-
输出
下面是部署生成的输出:
输出 | 类型 | 说明 | 值 |
---|---|---|---|
名字 | 字符串 | 资源组的名称。 | |
位置 | 字符串 | 已部署到 Azure 资源位置资源。 | |
dataFactoryName | 字符串 | 数据工厂的名称。 | |
storageAccountId | 字符串 | 已部署存储账户的资源 ID。 | |
storageAccountName | 字符串 | 为中心实例创建的存储帐户的名称。 将 FinOps 工具包 Power BI 报表连接到数据时,必须使用此功能。 | |
PowerBI存储URL | 字符串 | 将自定义 Power BI 报表连接到数据时要使用的 URL。 | |
clusterId | 字符串 | 数据探索群集的资源 ID。 | |
clusterUri | 字符串 | 数据资源探索器集群的 URI。 | |
ingestionDbName | 字符串 | 用于引入数据的数据资源管理器数据库的名称。 | |
hubDbName | 字符串 | 用于查询数据的数据资源管理器数据库的名称。 | |
managedIdentityId | 字符串 | 数据工厂托管标识的对象 ID。 配置托管导出时需要此项。 | |
managedIdentityTenantId | 字符串 | Azure AD 租户 ID。 配置托管导出时需要此项。 |
提供反馈
请您给我们一个简短的评价,让我们知道我们做得怎么样。 我们将使用这些评审来改进和扩展 FinOps 工具和资源。
如果您在寻找特定的东西,可以为现有想法投票或者创建新想法。 与他人分享想法,以获得更多的选票。 我们专注于拥有最多选票的想法。