你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
适用于:✔️ Windows VM
性能诊断 是一种故障排除工具,可帮助你识别和解决 Azure 虚拟机(VM)上的性能问题。 本文介绍在 Windows VM 上启用性能诊断的 VM 扩展,以及有关如何安装它的替代方法。
注释
有关使用 Azure 门户启用该工具以及如何运行报表的详细信息,请参阅 Azure 虚拟机上的运行性能诊断 报告。
扩展架构
以下 JSON 显示了 Azure 性能诊断 VM 扩展的架构。 该扩展需要存储帐户的名称来存储诊断输出和报告。 存储帐户密钥应存储在受保护的设置配置中。 Azure VM 扩展保护的设置数据已加密,并且只能在目标虚拟机上解密。 请注意,storageAccountName 和 storageAccountKey 区分大小写。 以下部分列出了其他必需参数。
在 JSON 文件中指定身份验证类型。 如果未指定身份验证类型,则默认身份验证类型为系统分配的托管标识,并且需要传递存储帐户密钥。
{
    "name": "[concat(parameters('vmName'),'/AzurePerformanceDiagnostics')]",
    "type": "Microsoft.Compute/virtualMachines/extensions",
    "location": "[parameters('location')]",
    "apiVersion": "2015-06-15",
    "properties": {
      "publisher": "Microsoft.Azure.Performance.Diagnostics",
      "type": "AzurePerformanceDiagnostics",
      "typeHandlerVersion": "1.0",
      "autoUpgradeMinorVersion": true,
      "settings": {
        "storageAccountName": "[parameters('storageAccountName')]",
        "performanceScenario": "[parameters('performanceScenario')]",
        "enableContinuousDiagnostics": "[parameters('enableContinuousDiagnostics')]",
        "traceDurationInSeconds": "[parameter('traceDurationInSeconds')]",
        "perfCounterTrace": "[parameters('perfCounterTrace')]",
        "networkTrace": "[parameters('networkTrace')]",
        "xperfTrace": "[parameters('xperfTrace')]",
        "storPortTrace": "[parameters('storPortTrace')]",         
        "requestTimeUtc":  "[parameters('requestTimeUtc')]",
        "resourceId": "[resourceId('Microsoft.Compute/virtualMachines', parameters('vmName'))]"
      },
    "protectedSettings": {
        "authenticationType": "[parameters('authenticationType')]",                         "storageAccountKey": "[parameters('storageAccountKey')]",
        "managedIdentityClientId": "[parameters('managedIdentityClientId')]",
       }
     }
   }
属性值
| 名称 | 值/示例 | DESCRIPTION | 
|---|---|---|
| apiVersion | 2015-06-15 | API 的版本。 | 
| 发布服务器 | Microsoft.Azure.Performance.Diagnostics | 扩展的发布服务器命名空间。 | 
| 类型 | AzurePerformanceDiagnostics | VM 扩展的类型。 | 
| typeHandlerVersion | 1.0 | 扩展处理程序的版本。 | 
| 性能场景 | 基本 | 需为其捕获数据的性能方案。 有效值为:“基本”、“vmslow”、“azurefiles”和“自定义”。 | 
| 启用连续诊断 | 真 实 | 启用连续诊断。 有效值为 true 或 false。 若要启用持续性能诊断,需要提供此属性。 | 
| traceDurationInSeconds | 300 | 在选择任意跟踪选项的情况下的跟踪持续时间。 | 
| perfCounterTrace | p | 启用性能计数器跟踪的选项。 有效值为“p”或空值。 如果不希望捕获此跟踪,请将该值留空。 | 
| networkTrace | n | 启用网络跟踪的选项。 有效值为 n 或空值。 如果不希望捕获此跟踪,请将该值留空。 | 
| xperfTrace | x | 启用 XPerf 跟踪的选项。 有效值为“x”或空值。 如果不希望捕获此跟踪,请将该值留空。 | 
| storPortTrace | s | 启用 StorPort 跟踪的选项。 有效值为 s 或空值。 如果不希望捕获此跟踪,请将该值留空。 | 
| srNumber | 123452016365929 | 支持票证编号(如果有)。 如果没有该值,请将该值保留为空。 | 
| requestTimeUtc | 2017-09-28T22:08:53.736Z | UTC 格式的当前日期时间。 如果使用门户来安装此扩展,则不需要提供此值。 | 
| 资源ID | /subscriptions/{subscriptionId} /resourceGroups/{resourceGroupName} /providers/{resourceProviderNamespace} /{resourceType}/{resourceName} | VM 的唯一标识符。 | 
| 存储账户名称 | mystorageaccount | 用于存储诊断日志和结果的存储帐户名称。 | 
| storageAccountKey | aB1cD2eF-3gH4iJ5kL6-mN7oP8qR= | 存储帐户的密钥。 | 
| 验证类型 | 系统托管身份 | 用于连接到存储帐户的身份验证类型。 有效值为: systemmanagedidentity、usermanagedidentity和storagekeys。 | 
| managedIdentityClientId | 00001111-aaaa-2222-bbbb-3333cccc4444 | 要用于对存储帐户进行身份验证的用户托管标识的客户端 ID。 | 
删除扩展
注释
建议通过性能诊断边栏选项卡卸载扩展,如 卸载性能诊断中所述。
若要从虚拟机中删除该扩展,请按照下列步骤操作:
- 登录到Azure 门户,选择要从中删除此扩展的虚拟机,然后选择“扩展 + 应用程序”边栏选项卡。 
- 选择性能诊断扩展,然后选择“ 卸载”。   
模板部署
可以使用 Azure 资源管理器模板部署 Azure 虚拟机扩展,例如以下示例。
{
 "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
 "contentVersion": "1.0.0.0",
 "parameters": {
   "vmName": {
     "type": "string",
     "defaultValue": "yourVMName"
   },
   "location": {
     "type": "string",
     "defaultValue": "southcentralus"
   },
   "storageAccountName": {
     "type": "securestring",
     "defaultValue": "yourStorageAccount"
   },
   "storageAccountKey": {
     "type": "securestring",
     "defaultValue": "yourStorageAccountKey"
   },
   "performanceScenario": {
     "type": "string",
     "defaultValue": "basic"
   },
 
"enableContinuousDiagnostics": {
     "type": "boolean",
     "defaultValue": "false"
  },
  "traceDurationInSeconds": {
   "type": "int",
   "defaultValue": 300
 },
   "perfCounterTrace": {
     "type": "string",
     "defaultValue": "p"
   },
   "networkTrace": {
     "type": "string",
     "defaultValue": ""
   },
   "xperfTrace": {
     "type": "string",
     "defaultValue": ""
   },
   "storPortTrace": {
     "type": "string",
     "defaultValue": ""
   },
   "requestTimeUtc": {
     "type": "string",
     "defaultValue": "10/2/2017 11:06:00 PM"
   },
   "authenticationType": {
	 "type": "string",
	 "defaultValue": "SystemManagedIdentity"
   },
   "managedIdentityClientId": {
	 "type": "string",
		 "defaultValue": ""
   }      
 },
 "resources": [
   {
     "name": "[concat(parameters('vmName'),'/AzurePerformanceDiagnostics')]",
     "type": "Microsoft.Compute/virtualMachines/extensions",
     "location": "[parameters('location')]",
     "apiVersion": "2015-06-15",
     "properties": {
       "publisher": "Microsoft.Azure.Performance.Diagnostics",
       "type": "AzurePerformanceDiagnostics",
       "typeHandlerVersion": "1.0",
       "autoUpgradeMinorVersion": true,
       "settings": {
         "storageAccountName": "[parameters('storageAccountName')]",
         "performanceScenario": "[parameters('performanceScenario')]",
"enableContinuousDiagnostics" : "[parameters('enableContinuousDiagnostics')]",
         "traceDurationInSeconds": "[parameters('traceDurationInSeconds')]",
         "perfCounterTrace": "[parameters('perfCounterTrace')]",
         "networkTrace": "[parameters('networkTrace')]",
         "xperfTrace": "[parameters('xperfTrace')]",
         "storPortTrace": "[parameters('storPortTrace')]",         
         "requestTimeUtc":  "[parameters('requestTimeUtc')]",
         "resourceId": "[resourceId('Microsoft.Compute/virtualMachines', parameters('vmName'))]"
       },
       "protectedSettings": {
           "storageAccountKey": "[parameters('storageAccountKey')]"
       }
     }
   }
 ]
}
PowerShell 部署
使用命令将 Set-AzVMExtension Azure 性能诊断 VM 扩展部署到现有虚拟机:
- 系统分配的托管标识 - $PublicSettings = @{ "storageAccountName"="mystorageaccount";"performanceScenario"="basic"; "enableContinuousDiagnostics" : $False;"traceDurationInSeconds"=300;"perfCounterTrace"="p";"networkTrace"="";"xperfTrace"="";"storPortTrace"="";"srNumber"="";"requestTimeUtc"="2024-10-20T22:08:53.736Z";"resourceId"="VMResourceId" } $ProtectedSettings = @{"storageAccountName"="mystorageaccount";"authenticationType"="SystemManagedIdentity" } Set-AzVMExtension -ExtensionName "AzurePerformanceDiagnostics" -ResourceGroupName "myResourceGroup" -VMName "myVM" -Publisher "Microsoft.Azure.Performance.Diagnostics" -ExtensionType "AzurePerformanceDiagnostics" -TypeHandlerVersion 1.0 -Settings $PublicSettings -ProtectedSettings $ProtectedSettings -Location WestUS
- 用户分配的管理标识 - $PublicSettings = @{ "storageAccountName"="mystorageaccount";"performanceScenario"="basic"; "enableContinuousDiagnostics" : $False;"traceDurationInSeconds"=300;"perfCounterTrace"="p";"networkTrace"="";"xperfTrace"="";"storPortTrace"="";"srNumber"="";"requestTimeUtc"="2024-10-20T22:08:53.736Z";"resourceId"="VMResourceId" } $ProtectedSettings = @{"storageAccountName"="mystorageaccount";"authenticationType"="UserManagedIdentity";"managedIdentityClientId"="myUserManagedIdentityClientId"} Set-AzVMExtension -ExtensionName "AzurePerformanceDiagnostics" -ResourceGroupName "myResourceGroup" -VMName "myVM" -Publisher "Microsoft.Azure.Performance.Diagnostics" -ExtensionType "AzurePerformanceDiagnostics" -TypeHandlerVersion 1.0 -Settings $PublicSettings -ProtectedSettings $ProtectedSettings -Location WestUS
- 存储帐户访问密钥 - $PublicSettings = @{ "storageAccountName"="mystorageaccount";"performanceScenario"="basic"; "enableContinuousDiagnostics" : $False;"traceDurationInSeconds"=300;"perfCounterTrace"="p";"networkTrace"="";"xperfTrace"="";"storPortTrace"="";"srNumber"="";"requestTimeUtc"="2024-10-20T22:08:53.736Z";"resourceId"="VMResourceId" } $ProtectedSettings = @{"storageAccountKey"="mystoragekey" } Set-AzVMExtension -ExtensionName "AzurePerformanceDiagnostics" -ResourceGroupName "myResourceGroup" -VMName "myVM" -Publisher "Microsoft.Azure.Performance.Diagnostics" -ExtensionType "AzurePerformanceDiagnostics" -TypeHandlerVersion 1.0 -Settings $PublicSettings -ProtectedSettings $ProtectedSettings -Location WestUS
故障排除和支持
- 扩展部署状态(在通知区域中)可能会显示“正在进行部署”,即使扩展已成功预配。 只要扩展状态指示已成功预配扩展,就可以放心忽略此问题。 
- 安装过程中的某些问题可使用扩展日志来解决。 扩展执行输出将记录到在其中 - C:\WindowsAzure\Logs\Plugins\Microsoft.Azure.Performance.Diagnostics.AzurePerformanceDiagnostics\<version>找到的文件。
- 如果在 Azure 门户或性能诊断扩展日志(AzPerfDiagExtension.log 或 PerfInsights.log)中看到以下错误,这通常意味着 HTTPS 证书链已中断。 若要解决这些错误,请确保没有阻止访问 Azure 证书颁发机构详细信息中所述的证书颁发机构 URL 的网络安全组(NSG)。 或者确保网络虚拟设备或防火墙中没有任何 SSL 检查工具。 - 预配失败 - 消息:无法将 PerfInsights 结果上传到 Azure 存储帐户。
- PerfInsights 进程退出了代码 1700。
- 无法为 SSL/TLS 安全通道建立信任关系。 根据验证过程,远程证书无效。