通过自动化功能管理成本

可以使用成本管理自动化生成一组自定义解决方案来检索和管理成本数据。 本文介绍成本管理自动化的常见方案以及根据你的情况提供的选项。 如果要使用 API 进行开发,则提供了常见的 API 请求示例来帮助加速开发过程。

实现成本数据检索的自动化以进行脱机分析

可能需要下载 Azure 成本数据以将其与其他数据集合并。 或者,可能需要将成本数据集成到你自己的系统中。 根据所涉及的数据量,可以使用不同的选项。 在任何情况下,都必须在适当范围内拥有成本管理权限,才能使用 API 和工具。 有关详细信息,请参阅向数据分配访问权限

处理大型数据集的建议

如果您的组织在多个资源或订阅中广泛使用 Azure,您将会拥有大量的使用详情数据结果。 Excel 通常无法加载此类大型文件。 在这种情况下,我们建议使用以下选项:

成本管理导出

可能不需要每天分析数据。 如果是这样,请考虑使用成本管理的导出功能,计划将数据导出到 Azure 存储帐户。 然后,可以根据需要将数据加载到 Power BI 中,如果文件足够小,则在 Excel 中进行分析。 Azure 门户中提供了导出功能,或者可以使用导出 API 配置导出。

成本详细信息 API

如果你拥有较小的成本数据集,请考虑使用 成本详细信息 API 。 下面是建议的最佳做法:

  • 如果需要获取最新成本数据,建议每天最多查询一次。 报告每四小时刷新一次。 如果更频繁地调用,则会收到相同的数据。
  • 下载历史发票的费用数据后,除非明确通知,否则费用预计不会更改。 建议在可查询存储中缓存成本数据,以防止重复调用相同的数据。
  • 将调用拆分为较小的日期范围,以获取可下载的更易管理的文件。 例如,如果你每月的 Azure 使用情况文件都很大,建议按天或按周来分块。
  • 如果你有包含大量成本数据的范围(例如计费帐户),请考虑将多个调用置于子范围内,以便获得可以下载的更易于管理的文件。
  • 如果数据集每月都超过 2 GB,请考虑使用导出作为更可缩放的解决方案。

使用成本详细信息 API 自动检索

成本详细信息 API 使你能够以编程方式生成和下载企业协议 (EA) 或 Microsoft 客户协议 (MCA) 计费帐户的详细未聚合成本数据。 与旧版使用情况详细信息 API 不同,成本详细信息 API 是异步的,基于报表:提交一个请求以生成报表、轮询其完成情况,然后从安全 URL 下载生成的文件。

重要

仅在企业协议(EA)或Microsoft客户协议(MCA)范围内支持成本详细信息 API。 对于其他帐户类型,建议使用导出。 如果需要下载小型数据集,并且不想使用 Azure 存储,也可以使用消耗使用情况详细信息 API。 请参阅在此处有关如何执行此操作的说明

成本详细信息 API 的工作原理

  1. 创建报表:向成本详细信息 API 提交 POST 请求,指定范围、日期范围和可选筛选器(例如计量、资源或标记)。
  2. 轮询状态:API 返回操作 ID。 轮询操作状态端点,直到报告完成。
  3. 下载报表:报表准备就绪后,API 为包含成本数据的 CSV 文件提供安全的下载 URL。 下载链接在有限的时间内有效。

有关完整详细信息,请参阅 按需获取小型使用情况数据集成本详细信息 API 参考

示例:生成和下载成本详细信息报表

若要使用成本详细信息 API 检索成本详细信息,请执行以下步骤:

步骤 1:创建报表

提交 POST 请求以开始生成报表。 将 {scope} 替换为你的计费帐户或配置文件范围。

POST https://management.chinacloudapi.cn/{scope}/providers/Microsoft.CostManagement/generateCostDetailsReport?api-version=2025-03-01
Content-Type: application/json

{
  "metric": "ActualCost",
  "timePeriod": {
    "start": "2025-03-01",
    "end": "2025-03-15"
  }
}

响应中包含一个Location标头,其中包含用于步骤 2 的轮询链接。

步骤 2:进行轮询以获得状态信息

使用轮询链接检查报表生成的状态:

GET https://management.chinacloudapi.cn/{scope}/providers/Microsoft.CostManagement/generateCostDetailsReport/{operationId}?api-version=2025-03-01

报表准备就绪后,响应将包括一个 blobLink 属性。

步骤 3:下载报表

使用该文件 blobLink 下载包含成本详细信息的 CSV 文件。

注意

成本详细信息 API 是异步的。 无法使用 GET 请求 /generateCostDetailsReport直接检索成本详细信息。 请始终使用上述报表生成工作流。 有关详细信息,请参阅 成本详细信息 API 文档

使用成本详细信息 API 的最佳做法

  • 请求频率:建议针对给定的范围和日期范围每天生成不超过一次的报告。 成本数据每四小时刷新一次,但更频繁的请求返回相同的数据,可能会受到限制。
  • 日期范围:对于大型数据集,限制日期范围(例如生成每日或每周报表),以保持文件大小可管理。
  • 范围:使用可用的最高级别范围(例如计费帐户或计费配置文件),尽量减少 API 调用数并确保数据完整性。
  • 数据保留:立即下载和存储报表。 下载 URL 将在短时间内过期(通常为一小时)。

有关定价和数据的说明

  • 成本详细信息 API 提供实际和摊销成本数据,包括所选时段的所有使用情况、购买和退款。
  • 数据未聚合,适合与其他系统进行详细分析、对帐和集成。
  • 有关定价行为的详细信息,请参阅 成本详细信息中的定价行为

单个资源一天内可能有多条记录

Azure 资源提供程序可能会向具有不同属性(例如数据中心位置)的计费系统发出使用情况和费用,从而在一天内为资源生成多个记录。 此行为是预期的,并不指示过度收费,所有记录共同反映该日期和该资源的完整成本。

通过预算自动发出警报和执行操作

可通过以下两个组件最大化云投资价值。 一个是自动创建预算。 另一个是配置基于成本的业务流程,以应对预算警报。 有不同的方法可以自动创建预算。 超过配置的警报阈值时,会发生各种警报响应。

以下各节介绍了可用选项,并提供了示例 API 请求,以帮助你开始使用预算自动化。

如何根据预算限额计算成本

每天根据预算限额计算一次成本。 创建新预算或在预算重置日时,与限额相比的成本为零/Null,因为可能没有进行计算。

当 Azure 检测到你的成本已超过阈值时,系统将在检测期间的一小时内触发通知。

查看当前成本

若要查看当前成本,需要使用查询 API 进行 GET 调用。

对预算 API 的 GET 调用不返回“成本分析”中显示的当前成本。 相反,此调用返回上次计算的成本。

自动创建预算

可以使用预算 API 自动创建预算。 你也可以使用预算模板创建预算。 模板是使 Azure 部署标准化同时确保适当配置和强制实施成本控制的简单方法。

预算警报电子邮件支持的区域设置

设定预算后,将在超过设定的限额时向你发出警报。 每个预算最多可设置五个电子邮件收件人。 收件人在超过预算限额后 24 小时内收到电子邮件警报。 不过,收件人可能需要接收以其他语言编写的电子邮件。 可以将以下语言区域性代码用于预算 API。 使用 locale 参数设置区域性代码,如以下示例所示。

{
  "eTag": "\"1d681a8fc67f77a\"",
  "properties": {
    "timePeriod": {
      "startDate": "2020-07-24T00:00:00Z",
      "endDate": "2022-07-23T00:00:00Z"
    },
    "timeGrain": "BillingMonth",
    "amount": 1,
    "currentSpend": {
      "amount": 0,
      "unit": "USD"
    },
    "category": "Cost",
    "notifications": {
      "actual_GreaterThan_10_Percent": {
        "enabled": true,
        "operator": "GreaterThan",
        "threshold": 20,
        "locale": "zh-cn",
        "contactEmails": [
          "user@contoso.com"
        ],
        "contactRoles": [],
        "contactGroups": [],
        "thresholdType": "Actual"
      }
    }
  }
}

区域性代码支持的语言:

区域性代码 语言
zh-cn 英语(美国)
ja-jp 日语(日本)
zh-cn 中文(简体,中国)
de-de 德语(德国)
es-es 西班牙语(西班牙,国际)
fr-fr 法语(法国)
it-it 意大利语(意大利)
ko-kr 韩语(韩国)
pt-br 葡萄牙语(巴西)
ru-ru 俄语(俄罗斯)
zh-tw 繁体中文(中国台湾)
cs-cz 捷克语(捷克共和国)
pl-pl 波兰语(波兰)
tr-tr 土耳其语 (Türkiye)
da-dk 丹麦语(丹麦)
en-gb 英语(英国)
hu-hu 匈牙利语(匈牙利)
nb-no 挪威博克马尔语(挪威)
nl-nl 荷兰语(荷兰)
pt-pt 葡萄牙语(葡萄牙)
sv-se 瑞典语(瑞典)

常见预算 API 配置

可以通过多种方法在 Azure 环境中配置预算。 首先考虑方案,然后确定启用该方案的配置选项。 查看以下选项:

  • 时间粒度 - 表示预算用于累积和计算成本的重复周期。 最常用的选项是“每月”、“每季度”和“每年”。
  • 时间段 - 表示预算有效期。 仅当预算仍然有效时,系统才会主动监控预算并向你发出通知。
  • 通知
    • 联系电子邮件 - 当预算累积成本且超过定义的阈值时,电子邮件地址会收到警报。
    • 联系角色 - 在给定范围内具有匹配的 Azure 角色的所有用户都会收到带有此选项的电子邮件警报。 例如,订阅所有者可能会收到在订阅范围内创建的预算警报。
    • 联系人组 - 超出警报阈值时,预算将调用已配置的操作组。
  • 成本维度筛选器 - 可以通过成本分析或查询 API 进行的筛选,也可以对预算进行。 使用此筛选器,可以缩小对于预算要监视的成本范围。

确定满足你需求的预算创建选项后,请使用 API 创建预算。 以下示例可帮助你开始使用常见预算配置。

创建筛选到多种资源和标记的预算

请求 URL:PUT https://management.chinacloudapi.cn/subscriptions/{SubscriptionId} /providers/Microsoft.Consumption/budgets/{BudgetName}/?api-version=2019-10-01

{
  "eTag": "\"1d34d016a593709\"",
  "properties": {
    "category": "Cost",
    "amount": 100.65,
    "timeGrain": "Monthly",
    "timePeriod": {
      "startDate": "2017-10-01T00:00:00Z",
      "endDate": "2018-10-31T00:00:00Z"
    },
    "filter": {
      "and": [
        {
          "dimensions": {
            "name": "ResourceId",
            "operator": "In",
            "values": [
              "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{meterName}",
              "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{meterName}"
            ]
          }
        },
        {
          "tags": {
            "name": "category",
            "operator": "In",
            "values": [
              "Dev",
              "Prod"
            ]
          }
        },
        {
          "tags": {
            "name": "department",
            "operator": "In",
            "values": [
              "engineering",
              "sales"
            ]
          }
        }
      ]
    },
    "notifications": {
      "Actual_GreaterThan_80_Percent": {
        "enabled": true,
        "operator": "GreaterThan",
        "threshold": 80,
        "contactEmails": [
          "user1@contoso.com",
          "user2@contoso.com"
        ],
        "contactRoles": [
          "Contributor",
          "Reader"
        ],
        "contactGroups": [
          "/subscriptions/{subscriptionID}/resourceGroups/{resourceGroupName}/providers/microsoft.insights/actionGroups/{actionGroupName}
        ],
        "thresholdType": "Actual"
      }
    }
  }
}

为预算警报配置基于成本的业务流程

可以配置预算以使用 Azure 操作组启动自动执行操作。 要了解有关使用预算自动化操作的更多信息,请参阅使用预算自动化

数据延迟和速率限制

我们建议每天调用 API 的次数不超过一次。 从 Azure 资源提供程序接收新的使用情况数据时,每隔 4 小时刷新一次成本管理数据。 更频繁地调用并不会提供更多数据。 相反,它会导致负载增加。

查询 API 查询处理单位

除了现有的速率限制流程外,查询 API 还会根据 API 调用的成本限制处理。 API 调用的成本表示为查询处理单位 (QPU)。 QPU 是一种性能货币,例如 Cosmos DB RU。 它们将系统资源抽象化,如 CPU 和内存。

QPU 计算

目前,从分配的配额中查询 1 个月的数据,将扣除 1 个 QPU。 此逻辑可能会更改,恕不另行通知。

QPU 因素

以下因素会影响 API 请求消耗的 QPU 数量。

  • 日期范围,随着请求中日期范围的增加,消耗的 QPU 数量也随之增加。

可能会添加其他 QPU 因素,恕不另行通知。

QPU 配额

为每个租户配置了以下配额。 当以下任何配额用尽时,请求将受到限制。

  • 每 10 秒 12 个 QPU
  • 每 1 分钟 60 个 QPU
  • 每 1 小时 600 个 QPU

配额可以根据需要进行更改,可以提高。

响应头

可以检查响应头,以跟踪 API 请求所消耗的 QPU 数量和剩余的 QPU 数量。

x-ms-ratelimit-microsoft.costmanagement-qpu-retry-after

指示回退时间(以秒为单位)。 当请求被限制为 429 时,请先回退到此标头中指定的时间,然后再重试请求。

x-ms-ratelimit-microsoft.costmanagement-qpu-consumed

API 调用所消耗的 QPU。

x-ms-ratelimit-microsoft.costmanagement-qpu-remaining

剩余配额列表。