排查常见的 FinOps 工具包错误

本文介绍常见的 FinOps 工具包错误,并提供有关解决方案的信息。 如果在使用无法理解或无法解决的 FinOps 工具包解决方案时收到错误,请找到以下相应的错误代码,其中包含解决问题的缓解步骤。

下面是包含缓解信息的常见错误代码列表。

如果提供的信息无法解决问题,请尝试 故障排除指南


BadHubVersion

严重性:关键

FinOps hubs 0.2 无法运行。 升级到版本 0.3 或更高版本。

缓解:升级到最新版本的 FinOps 中心


InvalidExportContainer

严重性:关键

此文件可能从成本管理导出,但它不在正确的容器中。

缓解:将成本管理导出更新为指向“msexports”存储容器。 “引入”容器仅用于查询引入的成本数据。


InvalidExportVersion

严重性:关键

FinOps 中心需要 FOCUS 成本导出,但此文件看起来像旧版成本管理导出。

缓解:为 FOCUS 成本创建新的成本管理导出,并停止当前导出或更改导出以导出到其他存储容器。


InvalidHubVersion

严重性:关键

FinOps 中心 0.1.1 及更早版本不适用于 数据引入 Power BI 报表

缓解:升级到最新版本的 FinOps 中心 ,或从 版本 0.1.1 下载 Power BI 报表。


InvalidScopeId

严重级别:信息性

导出路径不是有效的范围 ID。 FinOps 中心希望导出路径是创建导出范围以简化管理的 Azure 资源 ID。 它不应导致失败,但可能会导致与范围相关的报表产生混乱的结果。

缓解:更新成本管理导出的存储路径,以使用范围的完整 Azure 资源 ID。


ExportDataNotFound

严重性:关键

未在指定的存储路径中找到导出。

缓解:确认 已创建成本管理导出 ,并使用正确的存储帐户、容器和存储路径进行配置。 创建后,选择“立即运行”以启动导出过程。 导出可能需要 15-30 分钟才能完成,具体取决于帐户的大小。 如果打算使用 FinOps 中心,请更正存储 URL 以指向“引入”容器。 有关完整 URL, storageUrlForPowerBI 请参阅 FinOps 中心部署的输出。


HubDataNotFound

严重性:关键

在指定的存储帐户中找不到 FinOps 中心数据。

缓解:此错误假定你正在连接到 FinOps 中心部署。 如果使用原始导出,请更正存储路径以不引用 ingestion 容器。 确认以下信息:

  1. 存储 URL 应与 FinOps 中心部署上的输出匹配 StorageUrlForPowerBI
  2. 应将成本管理导出配置为使用 msexports 容器指向同一存储帐户。
  3. 成本管理导出应在运行历史记录中显示成功的导出。
  4. 应启动 FinOps 中心数据工厂触发器。
  5. FinOps hub 数据工厂管道应成功。

有关详细信息和调试步骤,请参阅 验证 FinOps 中心部署


MissingContractedCost

严重级别:信息性

当为 null 或 0 且EffectiveCost大于 0 时ContractedCostx_DatasetChanges列中会显示此错误代码。 该错误指示Microsoft成本管理不包含 ContractedCost 指定行,这意味着无法计算节省成本。

缓解:作为缺失数据的一种解决方法,FinOps 工具包报告会 EffectiveCost 复制到 ContractedCost 列中,其中包含此错误代码标记的行。 储蓄不适用于这些记录。

若要计算完整的节省成本,可以使用价格联接成本和使用情况数据。 有关详细信息,请参阅 问题 #873


MissingContractedUnitPrice

严重级别:信息性

当为 null 或 0 且EffectiveUnitPrice大于 0 时ContractedUnitPricex_DatasetChanges列中会显示此错误代码。 该错误指示Microsoft成本管理不包含 ContractedUnitPrice 指定行,这意味着无法计算节省成本。

缓解:作为缺失数据的一种解决方法,FinOps 工具包报告会 EffectiveUnitPrice 复制到 ContractedUnitPrice 列中,其中包含此错误代码标记的行。 储蓄不适用于这些记录。

若要计算完整的节省成本,可以使用价格联接成本和使用情况数据。 有关详细信息,请参阅 问题 #873


MissingListCost

严重级别:信息性

当为 null 或 0 且ContractedCost大于 0 时ListCostx_DatasetChanges列中会显示此错误代码。 该错误指示Microsoft成本管理不包含 ListCost 指定行,这意味着无法计算节省成本。

缓解:作为缺失数据的一种解决方法,FinOps 工具包报告会 ContractedCost 复制到 ListCost 列中,其中包含此错误代码标记的行。 储蓄不适用于这些记录。

若要计算完整的节省成本,可以使用价格联接成本和使用情况数据。 有关详细信息,请参阅 问题 #873


MissingListUnitPrice

严重级别:信息性

当为 null 或 0 且ContractedUnitPrice大于 0 时ListUnitPricex_DatasetChanges列中会显示此错误代码。 该错误指示Microsoft成本管理不包含 ListUnitPrice 指定行,这意味着无法计算节省成本。

缓解:作为缺失数据的一种解决方法,FinOps 工具包报告会 ContractedUnitPrice 复制到 ListUnitPrice 列中,其中包含此错误代码标记的行。 储蓄不适用于这些记录。

若要计算完整的节省成本,可以使用价格联接成本和使用情况数据。 有关详细信息,请参阅 问题 #873


ManifestReadFailed

严重性:关键

FinOps 中心 msexports_ExecuteETL 管道未能读取成本管理清单文件。

缓解:

  1. 如果在未对中心或导出进行更改时工作中心实例上出错,则成本管理可能会更改现有 API 版本的清单架构。
  2. 如果在创建新或更改现有导出后出错,则导出 API 版本可能会使用新的不受支持的清单架构。
  3. 如果在中心部署(初始安装或升级)后出错,则部署可能失败,或者管道中可能存在 bug。

若要确认清单架构(#1)或 API 版本(#2):

  1. 在Azure 门户或存储资源管理器中打开中心存储帐户。
  2. 如果在Azure 门户中,请转到菜单中的“存储”浏览器
  3. 选择 msexports 容器。
  4. 在问题导出的文件层次结构中导航(请参阅错误消息中的清单位置)。
  5. 找到manifest.json文件,然后选择菜单(),然后选择“查看/编辑”。
  6. 标识以下属性:
    {
      "exportConfig": {
        "resourceId": "<scope-id>/providers/Microsoft.CostManagement/exports/<export-name>",
        "dataVersion": "<dataset-version>",
        "apiVersion": "2023-07-01-preview",
        "type": "<dataset-type>",
        ...
      },
      ...
    }
    
  7. 确认它们已设置为以下受支持的值:
    • resourceId 可以是任何范围 ID 和任何导出名称,但它必须存在“Microsoft.CostManagement/export”资源类型。 且区分大小写。
    • 类型 必须存在,但对于任何非 null 值,不应失败并出现此错误。
    • dataVersion 必须存在,但对于任何非 null 值,都不应失败并出现此错误。
    • apiVersion 未显式使用,但可以表示对清单架构的更改。 有关详细信息,请参阅 支持的 API 版本
  8. 如果使用的是较新的 API 版本:
    1. 若要跟踪添加对新 API 版本的支持, 请在 GitHub 中创建更改请求问题。
    2. 删除成本管理中的导出。
    3. 使用支持的 API 版本使用 New-FinOpsCostExport PowerShell 命令 创建导出。

      提示

      如果你认为自己是一个强大的用户,你可能想要尝试自行更新管道,以最快的解决方法。 为此,请打开数据工厂,导航到“创作>管道>”msexports_ExecuteETL,然后选择适用的“设置”活动,并根据需要更新“设置值>属性。 如果执行此操作,则无需使用旧版本重新创建导出。 请仍报告问题,并考虑从 {} 管道右上角的图标共享新 JSON designer._

  9. 如果注意到受支持的 API 版本的属性已更改:
    1. 若要跟踪中断性变更, 请在 GitHub 中创建更改请求问题。 包括manifest.json文件中的类型dataVersionapiVersion
    2. 使用成本管理提交支持请求以请求更改,因为它会中断使用 FinOps 中心或其他自定义解决方案的每个人。 包括以下详细信息,以帮助成本管理支持团队确定其系统中的问题。 成本管理没有有关 FinOps 中心的上下文,因此应将细节集中在成本管理功能上。 下面是一个示例:

      我正在使用成本管理导出将成本数据拉取到 ADLS 中。 我有一个 ADF 管道,用于在写入清单文件时处理数据。 我的管道是基于 API 版本<your-supported-api-version>构建的exportConfig.resourceIdexportConfig.typeexportConfig.dataVersion需要一致交付属性。 我注意到,此 API 版本的清单文件中未包含这些文件,此 API 版本的导出已 <your-export-date>运行。 我期望清单文件永远不会更改现有 API 版本。 是否可以还原这些更改?

      为了帮助你进行故障排除,我的清单文件如下:{your-manifest-json}

如果清单属性看起来不错,并且它是新的或升级的 FinOps 中心实例,请确认部署:

  1. 在Azure 门户中打开中心资源组。
  2. 左侧菜单中选择“设置>部署”。
  3. 确认所有部署都成功。 具体而言,请查找以下部署名称:
    • 中心
    • dataFactoryResources
    • 存储
    • keyVault
  4. 如果任何部署失败,请查看错误消息以确定它是否是可以自行解决的(例如名称冲突、可修复的策略冲突)。
  5. 如果错误似乎是暂时性的,请尝试再次部署。
  6. 如果错误仍然存在,请创建讨论,以查看是否有其他人遇到问题或知道可能的解决方法(尤其是针对策略问题)。
  7. 如果错误显然是 bug 或功能差距,请在 GitHub 中创建 bug 或功能请求问题。

我们试图在两个工作日内响应问题和讨论。


ResourceAccessForbiddenException

Power BI:引发“Microsoft.Mashup.Engine.Interface.ResourceAccessForbiddenException”类型的异常

指示 Power BI 中加载数据的帐户没有 存储 Blob 数据读取者角色。 将此角色授予在 Power BI 中加载数据的帐户。


RoleAssignmentUpdateNotPermitted

如果删除了 FinOps Hub,并且尝试使用相同的值重新部署它,包括托管标识名称,则可能会遇到以下已知问题:

"code": "RoleAssignmentUpdateNotPermitted",
"message": "Tenant ID, application ID, principal ID, and scope are not allowed to be updated."

若要解决此问题,必须删除过时的标识:

  • 导航到存储帐户,然后在菜单中选择“访问控制”(IAM)。
  • 选择“角色分配”选项卡。
  • 查找具有“未知”标识的任何角色分配并删除它们。

SchemaLoadFailed

严重性:关键

FinOps 中心 msexports_ETL_ingestion 管道无法加载架构文件。

缓解措施:查看错误消息,以记下数据集类型和版本,这些数据集类型和版本采用下划线(例如, <type>_<version>FocusCost_1.0)。 确认部署的 FinOps 中心版本都支持数据集和类型。 有关详细信息,请参阅支持的数据集。


SchemaNotFound

严重性:关键

FinOps 中心 msexports_ExecuteETL 管道找不到导出数据集的架构映射文件。

缓解:确认支持数据集类型和版本。 有关详细信息,请参阅支持的数据集。 如果支持数据集,请使用数据引入报表确认中心版本

若要添加对另一个数据集的支持,请创建自定义映射文件并将其 config/schemas/<dataset-type>_<dataset-version>.json保存到 。 这些<dataset-type><dataset-version>值与成本管理使用的值非常匹配。 若要标识每个列的数据类型,请使用现有架构文件作为模板。 某些数据集具有不同的 EA 和Microsoft 客户协议架构(MCA)。 无法通过这些属性识别它们,如果两种帐户类型都存在问题,则可能会导致问题。 我们正在努力通过与 FOCUS 保持一致来添加 EA 和 MCA 差异的数据集和帐户。


UnknownExportFile

严重级别:信息性

中心存储中的文件看起来不像是从成本管理导出的。 文件将被忽略。

缓解msexports 容器仅用于成本管理导出。 在另一个存储容器中移动其他文件。


UnknownHubVersion

严重性:关键

无法从设置文件识别 FinOps 中心的版本。 验证设置是否正确。 FinOps 中心 0.1.1 及更早版本不适用于此 Power BI 报表。

缓解:升级到最新版本的 FinOps 中心 ,或从 FinOps 工具包 v0.1.1 版本下载 Power BI 报表。


UnsupportedExportFileType

严重性:关键

由于不支持文件类型,无法引入指定的导出文件。

缓解:将文件转换为受支持的文件格式,然后再添加到 msexports 容器,或添加对将新文件类型转换为 msexports_ETL_ingestion 管道的支持。


UnsupportedExportType

严重性: 警告

中心存储中的导出清单指示导出适用于不受支持的数据集。 导出的数据报告为引入错误。

缓解:为 FOCUS 成本创建新的成本管理导出,并停止当前导出或更改导出以导出到其他存储容器。


名称<>资源提供程序未在订阅 <guid 中注册>

在Azure 门户中打开订阅,然后选择“设置资源提供程序>行(例如,Microsoft.EventGrid),然后选择页面顶部的“注册”命令。 注册可能需要几分钟时间。


x_PricingSubcategory显示承诺折扣 ID

2024 年 2 月 28 日之前的成本管理导出有一个 bug,错误 x_PricingSubcategory 地因已提交的使用情况而设置错误。 应该会看到类似于 Committed SpendCommitted Usage. 的值。 相反,你可能会看到如下值:

  • Committed /providers/Microsoft.BillingBenefits/savingsPlanOrders/###/savingsPlans/###
  • Committed /providers/Microsoft.Capacity/reservationOrders/###/reservations/###

如果看到这些值,请重新导出该月的成本数据。 如果需要导出不可用的较旧月份的数据,请联系支持部门请求导出数据,以便解决上一次导出运行的数据质量问题。


Power BI:报表缺少特定日期的数据

如果报表缺少一个或多个月的所有数据,请检查 “月数”、“ RangeStart”和 “RangeEnd ”参数,以确保不会筛选出数据。

若要检查参数,请在功能区中选择“转换数据>编辑参数”,或者从查询编辑器窗口中选择 ️ 安装程序文件夹中的各个参数。🛠

  • 如果希望始终显示特定的最近几个月数,请将“月数”设置为“已关闭”(已完成)月数。 本月是一个额外的月,除了关闭的月数。
  • 如果希望固定日期范围不会随时间变化(例如会计年度报告),请设置 RangeStartRangeEnd
  • 如果要报告所有可用数据,请确认所有三个日期参数均为空。

有关详细信息,请参阅 设置第一个报表


Power BI:报表为空(无数据)

如果在 Power BI 或其他报表或工具中看不到任何数据,请尝试以下基于数据源:

  1. 如果在 Power BI 中使用成本管理连接器,请检查 Billing Account ID 参数 Number of Months 以确保正确设置它们。 请记住,旧计费帐户最近几个月可能没有数据。
  2. 如果使用 FinOps 中心,请检查存储帐户以确保在引入容器中填充数据。 应会看到 提供程序订阅 文件夹。 使用以下部分进一步进行故障排除。

FinOps 中心:引入容器为空

如果引入容器为空,请在数据工厂工作室中打开数据工厂实例,然后选择“管理>作者>触发器”,并验证是否已启动msexports_FileAdded触发器。 如果没有,请启动它。

如果触发器无法以“资源提供程序未注册”错误启动,请在Azure 门户中打开订阅,然后选择“设置>资源提供程序”,选择Microsoft.EventGrid 行,然后选择页面顶部的“注册”命令。 注册可能需要几分钟时间。

注册完成后,再次启动 msexports_FileAdded 触发器。

启动触发器后,重新运行所有连接的成本管理导出。 数据应在 10-20 分钟内完全引入,具体取决于帐户的大小。

如果问题仍然存在,请检查是否配置了启用了文件分区的成本管理导出。 如果发现它已禁用,请将其打开并重新运行导出。

确认已填充引入容器并刷新报表或其他已连接工具。

FinOps 中心:引入容器中可用的文件

如果引入容器不为空,请通过钻取文件夹来确认你是否具有 parquet 文件或csv.gz文件。

知道后,验证 FileType 参数是否已设置为 .parquet Power BI 报表或 .gz Power BI 报表中。 有关详细信息,请参阅 “连接到数据 ”。

如果使用其他工具,请确保它支持所使用的文件类型。


Power BI:无法解析远程名称:“<storage-account.dfs.core.windows.net>”

指示存储帐户名称不正确。 如果使用 FinOps 中心,请验证部署中的 StorageUrl 参数。 有关详细信息,请参阅 “连接到数据 ”。


Power BI:无法将值 null 转换为逻辑类型

指示 计费帐户 ID 参数为空。 如果使用 FinOps 中心,请将该值设置为所需的计费帐户 ID。 如果你无权访问计费帐户或不想包括承诺购买和退款,请将该值 0 设置为高级编辑器中并打开 CostDetails 查询并更改为 2 a 1。 它会通知报表不要从成本管理连接器加载实际/计费的成本数据。 有关详细信息,请参阅 “连接到数据 ”。

适用版本: 0.1 - 0.1.1 (固定在 0.2 中)


FinOps 中心:无法将值 null 转换为类型表

此错误通常表示数据未引入 到引入 容器中。

如果刚刚升级到 FinOps hubs 0.2,则问题可能是 Power BI 报表旧(从 0.1.x 开始),或者因为你未使用 FOCUS 导出。 有关详细信息, 请参阅升级指南

有关更多故障排除步骤,请参阅 报告为空(无数据 )。


如果未看到遇到的错误,请演练 故障排除指南。 如果有任何问题, 请在 GitHub 中开始讨论创建问题