客户使用情况归因将客户订阅中创建的 Azure 资源的使用情况与你部署为合作伙伴时相关联。 在内部Microsoft系统中形成这些关联,为运行软件的 Azure 占用空间带来了更大的内部可见性。 对于 Microsoft 市场中提供的 Azure 应用程序产品/服务,此跟踪功能可帮助你与Microsoft销售团队保持一致,并获得Microsoft合作伙伴计划的信用额度。 客户使用情况归因不适用于 Microsoft市场中 Azure 虚拟机产品/服务。 没有Microsoft市场发布者需要对虚拟机产品/服务执行任何作,以确保在最终用户订阅中跟踪其 Azure 消耗量。
客户使用情况归因支持三种部署选项:
- Azure 资源管理器模板(Azure 应用的常见基础,也称为Microsoft市场称为“解决方案模板”或“托管应用”):合作伙伴创建资源管理器模板来定义其 Azure 解决方案的基础结构和配置。 资源管理器模板允许客户以一致且可重复的状态部署解决方案的资源。
- Azure 资源管理器 API:合作伙伴可以调用资源管理器 API 来部署资源管理器模板或直接预配 Azure 服务。
- Terraform:合作伙伴可以使用 Terraform 部署资源管理器模板或直接部署 Azure 服务。
有关Microsoft市场外部的客户使用情况归因,请参阅本文后面的 辅助用例 。
重要
客户使用情况归因并非旨在跟踪系统集成商、托管服务提供商或主要用于部署和管理 Azure 资源的工具的工作。
客户使用情况归因适用于新部署,不支持跟踪已部署的资源。
- 并非所有 Azure 服务都与客户使用情况归因兼容。 Azure Kubernetes 服务(AKS)、VM 规模集和 Azure Batch 存在导致使用情况报告不足的已知问题。
- 客户使用情况归因 Azure 消耗数据不会与合作伙伴外部共享。
Microsoft市场 Azure 应用
从发布到 Microsoft 市场的 Azure 应用跟踪 Azure 使用情况基本上是自动的。 将资源管理器模板作为 Microsoft市场 Azure 应用计划技术配置的一部分上传时,合作伙伴中心将添加 Azure 资源管理器可读的跟踪 ID。
注释
为了确保应用程序的使用情况在我们的系统中准确归咎于:
- 如果在资源类型中定义跟踪 ID Microsoft.Resources/deployment 与变量,请将变量替换为计划 技术配置 页上合作伙伴中心中显示的跟踪 ID(请参阅下面的 资源管理器模板添加 GUID )。
- 如果资源管理器模板出于客户使用情况归因以外的目的使用类型为 Microsoft.Resources/deployment 的资源,Microsoft将无法代表你添加客户使用情况归因跟踪 ID。 在计划的 “技术配置 ”页上添加Microsoft.Resources/deployment 类型的新资源,并在合作伙伴中心中添加可见的跟踪 ID(请参阅稍后 将 GUID 添加到资源管理器模板 )。
如果使用 Azure 资源管理器 API,则需要根据 以下说明 添加跟踪 ID,以在代码部署资源时将其传递给 Azure 资源管理器。 此 ID 显示在 Azure 应用程序计划的“技术配置”页上的合作伙伴中心。
注释
对于现有 Azure 应用,一次性迁移始于 2021 年 3 月,以更新每个计划的技术配置中的跟踪 ID。 这些产品/服务的过去部署的使用情况将保留在Microsoft系统中。
更新产品/服务时,不再需要在主模板文件中添加 Microsoft.Resources/deployments 资源类型。
其他用例
可以使用客户使用情况归因来跟踪Microsoft市场中不可用的解决方案的 Azure 使用情况。 这些解决方案通常驻留在快速入门存储库、专用 GitHub 存储库中,或者来自创建持久 IP(例如可部署且可缩放的应用)的 1:1 客户参与。
需要几个手动步骤:
- 创建一个或多个用作跟踪 ID 的 GUID。
- 在合作伙伴中心注册这些 GUID。
- 将已注册的 GUID 添加到 Azure 应用和/或用户代理字符串。
创建 GUID
与合作伙伴中心代表你在 Microsoft 市场中为 Azure 应用创建的跟踪 ID 不同,其他客户使用情况归因的使用要求创建 GUID 以用作跟踪 ID。 GUID 是具有 32 个十六进制数字的唯一引用标识符。 若要创建用于跟踪的 GUID,应使用 GUID 生成器,例如,通过 PowerShell:
[guid]::NewGuid()
应为每个产品和分销渠道创建唯一的 GUID。 如果不想拆分报表,可以将单个 GUID 用于产品的多个分发渠道。 由 PartnerID 和 GUID 报告。
注册 GUID
接下来必须在合作伙伴中心注册 GUID,以便他们可以作为合作伙伴与你相关联:
登录到合作伙伴中心。
注册为 Microsoft市场发布者。
选择右上角的 “设置” (齿轮图标),然后选择 “帐户设置”。
选择 “组织配置文件>标识符>添加跟踪 GUID”。
在 GUID 框中,输入跟踪 GUID。 仅输入不带前缀的
pid-GUID。 在 “说明 ”框中,输入解决方案名称或说明。若要注册多个 GUID,请再次选择 “添加跟踪 GUID ”。 页面上会显示其他框。
选择“保存”。
将 GUID 添加到资源管理器模板
若要将已注册的 GUID 添加到资源管理器模板,请对主模板文件进行单个修改:
打开资源管理器模板。
在主模板文件中添加 类型为 Microsoft.Resources/deployments 的新资源。 资源需要仅位于 mainTemplate.json 或 azuredeploy.json 文件中,而不需要位于任何嵌套模板或链接模板中。
输入前缀后的
pid-GUID 值作为资源的名称。 例如,如果 GUID 为 eb7927c8-dd66-43e1-b0cf-c346a422063,资源名称将为 pid-eb7927c8-dd66-43e1-b0cf-c346a4222063。 示例:
{ // add this resource to the resources section in the mainTemplate.json
"apiVersion": "2020-06-01",
"name": "pid-XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", // use your generated GUID here
"type": "Microsoft.Resources/deployments",
"properties": {
"mode": "Incremental",
"template": {
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": []
}
}
} // remove all comments from the file when complete
检查模板是否存在错误。
在相应的存储库中重新发布模板。
小窍门
有关创建和发布资源管理器模板的详细信息,请参阅: 创建和部署第一个资源管理器模板。
验证使用 GUID 跟踪的部署
修改模板并运行测试部署后,使用以下 PowerShell 脚本检索已部署和标记的资源。
可以使用脚本来验证 GUID 是否已成功添加到资源管理器模板。 该脚本不适用于 Resource Manager API 或 Terraform 部署。
登录到 Azure。 在运行脚本之前,选择包含要验证的部署的订阅。 在部署的订阅上下文中运行脚本。
部署的 GUID(下面称为“deploymentName”)和 resourceGroupName 名称是必需参数。
可以在 GitHub 上获取原始 Verify-DeploymentGuid 脚本 。
Param(
[string][Parameter(Mandatory=$true)]$deploymentName, # the full name of the deployment, e.g. pid-XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
[string][Parameter(Mandatory=$true)]$resourceGroupName
)
# Get the correlationId of the named deployment
$correlationId = (Get-AzResourceGroupDeployment -ResourceGroupName $resourceGroupName -Name "$deploymentName").correlationId
# Find all deployments with that correlationId
$deployments = Get-AzResourceGroupDeployment -ResourceGroupName $resourceGroupName | Where-Object{$_.correlationId -eq $correlationId}
# Find all deploymentOperations in all deployments with that correlationId as PowerShell doesn't surface outputResources on the deployment or correlationId on the deploymentOperation
foreach ($deployment in $deployments){
# Get deploymentOperations by deploymentName
# then the resourceIds for each resource
($deployment | Get-AzResourceGroupDeploymentOperation | Where-Object{$_.targetResource -notlike "*Microsoft.Resources/deployments*"}).TargetResource
}
通知客户
合作伙伴应告知其客户使用客户使用情况归因的部署。 以下示例包括可用于通知客户有关这些部署的内容。 在示例中,将 PARTNER< 替换为>公司名称。 合作伙伴应确保通知与其数据隐私和收集策略保持一致,包括客户要从跟踪中排除的选项。
资源管理器模板部署通知
部署此模板时,Microsoft可以使用已部署的 Azure 资源标识 PARTNER< 软件的>安装。 Microsoft可以关联用于支持软件的这些资源。 Microsoft收集此信息,以提供其产品的最佳体验并运营其业务。 这些数据由位于Microsoft的隐私策略 https://www.microsoft.com/trustcenter收集和管理。
SDK 或 API 部署通知
部署 <PARTNER> 软件时,Microsoft可以使用已部署的 Azure 资源识别 PARTNER< 软件的>安装。 Microsoft可以关联用于支持软件的这些资源。 Microsoft收集此信息,以提供其产品的最佳体验并运营其业务。 这些数据由位于Microsoft的隐私策略 https://www.microsoft.com/trustcenter收集和管理。
使用资源管理器 API
在某些情况下,可以直接对资源管理器 REST API 进行调用以部署 Azure 服务。 Azure 支持多个 SDK 来启用这些调用。 可以使用其中一个 SDK 或直接调用 REST API 来部署资源。
若要启用客户使用情况归因,在设计 API 调用时,请在请求中的用户代理标头中包含跟踪 ID。 使用前缀设置字符串 pid- 的格式。 示例:
//Microsoft Marketplace Azure app
pid-contoso-myoffer-partnercenter //copy the tracking ID exactly as it appears in Partner Center
//Other use cases
pid-b6addd8f-5ff4-4fc0-a2b5-0ec7861106c4 //enter your GUID after "pid-"
重要
如果在 Microsoft 市场中将资源管理器 API 与 Azure 应用配合使用,请使用合作伙伴中心中提供的跟踪 ID。 请勿使用 GUID。
各种 SDK 以不同的方式与资源管理器 API 交互,并且需要在代码中存在一些差异。 以下示例使用 GUID 提供非Microsoft市场方法,并涵盖各种更受欢迎的 Azure SDK。
示例:Python SDK
对于 Python,请使用 配置 属性。 只能将属性添加到 UserAgent。 示例:
client = azure.mgmt.servicebus.ServiceBusManagementClient(**parameters)
client.config.add_user_agent("pid-b6addd8f-5ff4-4fc0-a2b5-0ec7861106c4")
重要
为每个客户端添加属性。 没有全局静态配置。 可以标记客户端工厂,以确保每个客户端都跟踪。 有关详细信息,请参阅 GitHub 上的此客户端工厂示例。
示例:.NET SDK
对于 .NET,请确保设置用户代理。 使用 Microsoft.Azure.Management.Fluent 库使用以下代码设置用户代理(C# 中的示例):
var azure = Microsoft.Azure.Management.Fluent.Azure
.Configure()
// Add your pid in the user agent header
.WithUserAgent("pid-XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", String.Empty)
.Authenticate(/* Credentials created via Microsoft.Azure.Management.ResourceManager.Fluent.SdkContext.AzureCredentialsFactory */)
.WithSubscription("<subscription ID>");
重要
截至 2023 年 6 月,最新的合作伙伴中心 .NET SDK 版本 3.4.0 现已存档。 可以从 GitHub 下载 SDK 版本,以及包含有用信息的 自述文件 。
鼓励合作伙伴继续使用 合作伙伴中心 REST API。
示例:Azure PowerShell
如果通过 Azure PowerShell 部署资源,请使用此方法追加 GUID:
[Microsoft.Azure.Common.Authentication.AzureSession]::ClientFactory.AddUserAgent("pid-eb7927c8-dd66-43e1-b0cf-c346a422063")
注释
建议使用 Azure Az PowerShell 模块与 Azure 交互。 请参阅安装 Azure PowerShell 以开始使用。 若要了解如何迁移到 Az PowerShell 模块,请参阅 将 Azure PowerShell 从 AzureRM 迁移到 Az。
示例:Azure CLI
使用 Azure CLI 追加 GUID 时,请在脚本范围内设置 AZURE_HTTP_USER_AGENT 环境变量。 还可以全局为 shell 范围设置变量:
export AZURE_HTTP_USER_AGENT='pid-eb7927c8-dd66-43e1-b0cf-c346a422063'
有关详细信息,请参阅 Azure SDK for Go。
请使用 Terraform
通过 Azure 提供程序的 1.21.0 版本提供对 Terraform 的支持: https://github.com/terraform-providers/terraform-provider-azurerm/blob/master/CHANGELOG.md#1210-january-11-2019 这适用于通过 Terraform 部署解决方案的所有合作伙伴以及由 Azure 提供程序部署和计量的所有资源(版本 1.21.0 或更高版本)。
用于 Terraform 的 Azure 提供程序添加了一个名为 partner_id 的新可选字段,用于指定用于解决方案的跟踪 GUID。 此字段的值也可以从 ARM_PARTNER_ID 环境变量中获取。
provider "azurerm" {
subscription_id = "xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
client_id = "xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
……
# new stuff for ISV attribution
partner_id = "xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"}
重要
如果在 Microsoft 市场中将 Terraform 与 Azure 应用配合使用,请使用合作伙伴中心中提供的整个跟踪 ID。 请勿使用 GUID。
获取支持
了解 合作伙伴中心支持Microsoft市场计划Microsoft市场中的支持选项。
如何提交技术咨询请求
- 访问 合作伙伴技术服务。
- 选择 云基础结构和管理 以查看技术旅程。
- 选择 “部署服务>提交请求”。
- 使用 MSA(Microsoft AI 云合作伙伴计划帐户)或Microsoft条目 ID(合作伙伴仪表板帐户)登录。
- 完成/查看打开的表单上的联系信息。 咨询详细信息可能已预先填充,或者你可能有下拉选项。
- 输入标题和问题的详细说明。
- 选择提交。
使用技术预售和部署服务查看屏幕截图的分步说明。
你将联系Microsoft合作伙伴技术顾问,以设置一个呼叫来限定你的需求。
FAQ
添加跟踪 ID 后,是否可以更改它?
Microsoft市场中 Azure 应用的跟踪 ID 由合作伙伴中心自动管理。 但是,客户可以下载模板并更改或删除跟踪 ID。 合作伙伴应主动向客户描述跟踪 ID 的角色,以防止删除或编辑。 更改跟踪 ID 仅影响新的部署和资源,而不会影响现有部署和资源。
是否可以跟踪从非Microsoft存储库(如 GitHub)部署的模板?
是的,只要部署模板时存在跟踪 ID,则会跟踪使用情况。 若要保持发布者与从非Microsoft存储库部署的模板之间的关联,请首先从产品/服务的Microsoft市场列表下载已发布模板的副本(其中包含跟踪 ID)。 将该版本发布到 GitHub 或其他非Microsoft存储库。
如果模板未在Microsoft市场中列出,并且包含已注册的 GUID,请确保 GUID 存在于发布到 GitHub 的版本或其他非Microsoft存储库中。
Microsoft是否与合作伙伴共享客户使用情况归因数据?
否。 Microsoft不会与合作伙伴共享通过客户使用情况归因在外部跟踪的 Azure 消耗数据。
客户是否会收到客户使用情况归因报告?
否。 客户可以在 Azure 门户中跟踪其所有资源或资源组的使用情况。 客户看不到按客户使用情况归因跟踪 ID 划分的使用情况。
客户使用情况归属是否类似于记录(DPOR)或合作伙伴管理员链接(PAL)的数字合作伙伴?
客户使用情况归因是一种机制,用于将 Azure 使用情况与合作伙伴的可重复、可部署的 IP 相关联-在部署时形成关联。 DPOR 和 PAL 旨在将咨询(系统集成商)或管理(托管服务提供商)合作伙伴与客户相关的 Azure 足迹相关联,同时合作伙伴与客户合作。