适用于 Windows 的 Azure 性能诊断 (PerfInsights) VM 扩展

适用于:✔️ Windows VM

Azure 性能诊断 VM 扩展可用于从 Windows VM 收集性能诊断数据。 此扩展可以执行分析,并提供一个报告,其中的发现和建议可用于确定和解决虚拟机上的性能问题。 此扩展将安装被称为 PerfInsights 的疑难解答工具。

注意

如果要从 Azure 门户为非经典 VM 运行 VM 上的诊断,建议使用新体验。 有关详细信息,请参阅 Azure 虚拟机的性能诊断。

先决条件

可以在以下位置安装此扩展:

  • Windows Server 2019
  • Windows Server 2016
  • Windows Server 2012 R2
  • Windows Server 2012
  • Windows Server 2008 R2
  • Windows 10
  • Windows 8.1
  • Windows 8

扩展架构

以下 JSON 显示了 Azure 性能诊断 VM 扩展的架构。 此扩展需要存储帐户的名称和密钥来存储诊断输出和报告。 这些值很敏感。 存储帐户密钥应存储在受保护的设置配置中。 Azure VM 扩展保护的设置数据已加密,并且只能在目标虚拟机上解密。 请注意,storageAccountNamestorageAccountKey 区分大小写。 以下部分列出了其他必需参数。

{
     "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": {
           "storageAccountKey": "[parameters('storageAccountKey')]"       
       }
     }
   }

属性值

名称 值/示例 说明
apiVersion 2015-06-15 API 的版本。
publisher Microsoft.Azure.Performance.Diagnostics 扩展的发布服务器命名空间。
type AzurePerformanceDiagnostics VM 扩展的类型。
typeHandlerVersion 1.0 扩展处理程序的版本。
performanceScenario 基本 需为其捕获数据的性能方案。 有效值为:“基本”、“vmslow”、“azurefiles”和“自定义”
enableContinuousDiagnostics True 启用连续诊断。 有效值为 truefalse。 若要启用持续性能诊断,需要提供此属性。
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 格式的当前日期时间。 如果使用门户来安装此扩展,则不需要提供此值。
ResourceId /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName} VM 的唯一标识符。
storageAccountName mystorageaccount 用于存储诊断日志和结果的存储帐户名称。
storageAccountKey lDuVvxuZB28NNP…hAiRF3voADxLBTcc== 存储帐户的密钥。

安装扩展

注意

建议通过性能诊断边栏选项卡安装扩展,如在 VM 上安装和运行性能诊断中所述

请按照这些说明在 Windows 虚拟机上安装扩展:

  1. 登录到 Azure 门户

  2. 选择你想要安装此扩展的虚拟机。

    Azure 门户的屏幕截图,其中突出显示了虚拟机。

  3. 选择“ 扩展 + 应用程序 ”边栏选项卡,然后选择“ 添加”。

    “扩展”边栏选项卡的屏幕截图,其中突出显示了“添加”。

  4. 搜索 Azure 性能诊断,单击扩展,查看条款和条件,然后选择“ 下一步”。

    “新建资源”屏幕的屏幕截图,其中突出显示了 Azure 性能诊断。

  5. 提供安装的参数值,然后安装扩展。 有关支持的方案的详细信息,请参阅如何使用 PerfInsights

    “安装扩展”对话框的屏幕截图。

  6. 安装成功后,扩展的状态会显示 “预配成功”。

    “预配成功”消息的屏幕截图。

    注意

    扩展在预配成功后运行。 对于基本方案,至多需要两分钟即可完成。 对于其他方案,将在安装过程中指定的持续时间内运行。

删除扩展

注意

建议通过性能诊断边栏选项卡卸载扩展,如卸载性能诊断中所述

若要从虚拟机中删除该扩展,请按照下列步骤操作:

  1. 登录到Azure 门户,选择要从中删除此扩展的虚拟机,然后选择“扩展 + 应用程序”边栏选项卡。

  2. 选择性能诊断扩展,然后选择“ 卸载”。

    “扩展”边栏选项卡的屏幕截图,其中突出显示了“卸载”。

模板部署

可使用 Azure 资源管理器模板部署 Azure 虚拟机扩展。 在前一部分详述的 JSON 架构可以用在 Azure 资源管理器模板中。 这样就可以在 Azure 资源管理器模板部署期间运行 Azure 性能诊断 VM 扩展。 下面是示例模板:

{
 "$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"
   }       
 },
 "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"="2017-09-28T22: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

有关捕获的数据信息

PerfInsights 工具将收集各种日志、配置和诊断数据,具体视所选方案而定。 有关详细信息,请参阅 PerfInsights 文档

查看和共享结果

扩展的输出可以在上传到安装期间指定的存储帐户的 zip 文件中找到,并使用共享访问签名 (SAS) 共享 30 天。 此 zip 文件包含诊断日志和一个包含发现和建议的报告。 可以在名为 zipfilename 的文本文件中找到指向输出 zip 文件的 SAS 链接_saslink.txt文件夹 C:\Packages\Plugins\Microsoft.Azure.Performance.Diagnostics.AzurePerformanceDiagnostics\<version> 拥有此链接的任何人都可以下载 zip 文件。

Microsoft 可能会使用此 SAS 链接下载诊断数据,为从事票证支持工作的支持工程师提供帮助。

若要查看报告,请解压缩 zip 文件,然后打开 PerfInsights Report.html 文件。

应该也可以通过选择该扩展直接从门户下载 zip 文件。

性能诊断详细状态和扩展下载链接的屏幕截图。

注意

有时,门户中显示的 SAS 链接可能无法使用。 这可能是由编码和解码操作中出现的 URL 格式破坏造成的。 可以改为直接从 VM 的 *_saslink.tx 文件获取链接。

故障排除和支持

  • 扩展部署状态(在通知区域中)可能会显示“正在进行部署”,即使扩展已成功预配。

    只要扩展状态指示已成功预配扩展,就可以放心忽略此问题。

  • 安装过程中的某些问题可使用扩展日志来解决。 扩展执行输出记录到在以下目录中发现的文件:

    C:\WindowsAzure\Logs\Plugins\Microsoft.Azure.Performance.Diagnostics.AzurePerformanceDiagnostics\<version>

  • 如果在Azure 门户或性能诊断扩展日志中看到以下错误(AzPerfDiagExtension.logPerfInsights.log),这通常意味着 HTTPS 证书链已中断:

    • 预配失败 - 消息:无法将 PerfInsights 结果上传到 Azure 存储帐户。

    • PerfInsights 进程退出了代码 1700。

    • 无法为 SSL/TLS 安全通道建立信任关系。 根据验证过程,远程证书无效。

    若要解决这些错误,请确保没有阻止访问此列表中所述的证书颁发机构 URL 的网络安全组(NSG)。 或者确保网络虚拟设备或防火墙中没有任何 SSL 检查工具。

联系我们寻求帮助

如果你有任何疑问或需要帮助,请创建支持请求联系 Azure 社区支持。 你还可以将产品反馈提交到 Azure 反馈社区