适用于 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 扩展保护的设置数据已加密,并且只能在目标虚拟机上解密。 请注意,storageAccountName 和 storageAccountKey 区分大小写。 以下部分列出了其他必需参数。
{
"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 | 启用连续诊断。 有效值为 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 格式的当前日期时间。 如果使用门户来安装此扩展,则不需要提供此值。 |
ResourceId | /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName} | VM 的唯一标识符。 |
storageAccountName | mystorageaccount | 用于存储诊断日志和结果的存储帐户名称。 |
storageAccountKey | lDuVvxuZB28NNP…hAiRF3voADxLBTcc== | 存储帐户的密钥。 |
安装扩展
注意
建议通过性能诊断边栏选项卡安装扩展,如在 VM 上安装和运行性能诊断中所述。
请按照这些说明在 Windows 虚拟机上安装扩展:
登录到 Azure 门户。
选择你想要安装此扩展的虚拟机。
选择“ 扩展 + 应用程序 ”边栏选项卡,然后选择“ 添加”。
搜索 Azure 性能诊断,单击扩展,查看条款和条件,然后选择“ 下一步”。
提供安装的参数值,然后安装扩展。 有关支持的方案的详细信息,请参阅如何使用 PerfInsights。
安装成功后,扩展的状态会显示 “预配成功”。
注意
扩展在预配成功后运行。 对于基本方案,至多需要两分钟即可完成。 对于其他方案,将在安装过程中指定的持续时间内运行。
删除扩展
注意
建议通过性能诊断边栏选项卡卸载扩展,如卸载性能诊断中所述。
若要从虚拟机中删除该扩展,请按照下列步骤操作:
登录到Azure 门户,选择要从中删除此扩展的虚拟机,然后选择“扩展 + 应用程序”边栏选项卡。
选择性能诊断扩展,然后选择“ 卸载”。
模板部署
可使用 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.log或PerfInsights.log),这通常意味着 HTTPS 证书链已中断:
-
预配失败 - 消息:无法将 PerfInsights 结果上传到 Azure 存储帐户。
-
PerfInsights 进程退出了代码 1700。
-
无法为 SSL/TLS 安全通道建立信任关系。 根据验证过程,远程证书无效。
若要解决这些错误,请确保没有阻止访问此列表中所述的证书颁发机构 URL 的网络安全组(NSG)。 或者确保网络虚拟设备或防火墙中没有任何 SSL 检查工具。
-
联系我们寻求帮助
如果你有任何疑问或需要帮助,请创建支持请求或联系 Azure 社区支持。 你还可以将产品反馈提交到 Azure 反馈社区。