Azure 启动诊断

适用于:✔️ Linux VM ✔️ Windows VM ✔️ 灵活规模集 ✔️ 统一规模集

启动诊断是 Azure 虚拟机 (VM) 的一项调试功能,可用于诊断 VM 启动故障。 启动诊断使用户能够通过收集串行日志信息和屏幕截图来观察其 VM 在启动时的状态。

启动诊断存储帐户

在 Azure 门户中创建 VM 时,默认情况下会启用“启动诊断”。 建议的启动诊断体验是使用托管存储帐户,因为它可以在创建 Azure VM 时显著提高性能。 将会使用 Azure 托管存储帐户,从而节省了创建用户存储帐户来存储启动诊断数据所需的时间。

重要

启动诊断数据 blob(包括日志和快照映像)存储在托管存储帐户中。 将仅对 blob 使用的 GiB 向客户收费,而不是根据磁盘的预配大小收费。 快照计量将用于托管存储帐户的计费。 由于托管帐户是在标准 LRS 或标准 ZRS 上创建的,因此,仅针对诊断数据 blob 的大小按每月 $0.05/GB 向客户收费。 有关此定价的详细信息,请参阅托管磁盘定价。 客户将看到这一费用与其 VM 资源 URI 相关联。

另一种启动诊断体验是使用自定义存储帐户。 用户可以创建新的存储帐户,也可以使用现有的存储帐户。 在自定义存储帐户上启用存储防火墙时(未选择“从所有网络启用”选项),必须:

  • 确保 Azure 平台允许通过存储防火墙访问以发布屏幕截图和串行日志。 为此,请转到 Azure 门户中的自定义启动诊断存储帐户,然后从“安全性 + 网络”部分选择“网络”。 检查是否选中了“允许受信任服务列表中的 Azure 服务访问此存储帐户”复选框。

  • 允许存储防火墙供用户查看启动屏幕截图或串行日志。 为此,请将网络或客户端/浏览器的 Internet IP 添加为防火墙排除项。 有关详细信息,请参阅配置 Azure 存储防火墙和虚拟网络

注意

与启动诊断关联的自定义存储帐户要求存储帐户和关联的虚拟机驻留在同一区域和订阅中。

启动诊断视图

转到 Azure 门户中的虚拟机边栏选项卡,“启动诊断”选项位于 Azure 门户的“支持和故障排除”部分下。 选择启动诊断会显示屏幕截图和串行日志信息。 串行日志包含内核消息,屏幕快照是 VM 当前状态的快照。 Windows 或 Linux 会根据 VM 是否正在运行来确定预期的屏幕快照会是什么样子。 Windows 用户会看到桌面背景,Linux 用户会看到登录提示。

Screenshot of Linux boot diagnosticsScreenshot of Windows boot diagnostics

启用托管启动诊断

可以通过 Azure 门户、CLI 和 ARM 模板启用托管启动诊断。

使用 Azure 门户启用托管启动诊断

在 Azure 门户中创建 VM 时,默认设置是使用托管存储帐户启用启动诊断。 在创建 VM 的过程中导航到“管理”选项卡即可查看此设置。

Screenshot enabling managed boot diagnostics during VM creation.

使用 CLI 启用托管启动诊断

Azure CLI 2.12.0 及更高版本支持启动诊断使用托管存储帐户。 如果未输入存储帐户的名称或 URI,则会使用托管帐户。 有关详细信息和代码示例,请参阅用于启动诊断的 CLI 文档

使用 PowerShell 启用托管启动诊断

Azure PowerShell 6.6.0 及更高版本中支持使用托管存储帐户进行启动诊断。 如果未输入存储帐户的名称或 URI,则会使用托管帐户。 如需了解详细信息及代码示例,请参阅 PowerShell 启动诊断文档

使用 Azure 资源管理器 (ARM) 模板启用托管启动诊断

API 版本 2020-06-01 后的所有内容都支持托管启动诊断。 有关详细信息,请参阅启动诊断实例视图

            "name": "[parameters('virtualMachineName')]",
            "type": "Microsoft.Compute/virtualMachines",
            "apiVersion": "2020-06-01",
            "location": "[parameters('location')]",
            "dependsOn": [
                "[concat('Microsoft.Network/networkInterfaces/', parameters('networkInterfaceName'))]"
            ],
            "properties": {
                "hardwareProfile": {
                    "vmSize": "[parameters('virtualMachineSize')]"
                },
                "storageProfile": {
                    "osDisk": {
                        "createOption": "fromImage",
                        "managedDisk": {
                            "storageAccountType": "[parameters('osDiskType')]"
                        }
                    },
                    "imageReference": {
                        "publisher": "publisherName",
                        "offer": "imageOffer",
                        "sku": "imageSKU",
                        "version": "imageVersion"
                    }
                },
                "networkProfile": {
                    "networkInterfaces": [
                        {
                            "id": "[resourceId('Microsoft.Network/networkInterfaces', parameters('networkInterfaceName'))]"
                        }
                    ]
                },
                "osProfile": {
                    "computerName": "[parameters('virtualMachineComputerName')]",
                    "adminUsername": "[parameters('adminUsername')]",
                    "linuxConfiguration": {
                        "disablePasswordAuthentication": true
                    }
                },
                "diagnosticsProfile": {
                    "bootDiagnostics": {
                        "enabled": true
                    }
                }
            }
        }
    ],

注意

相应地替换 publisherName、imageOffer、imageSKU 和 imageVersion。

限制

  • 托管启动诊断仅适用于 Azure 资源管理器 VM。

  • 托管启动诊断不支持使用非托管 OS 磁盘的 VM。

  • 启动诊断不支持高级存储帐户或区域冗余存储帐户。 如果上述其中的任何一个用于启动诊断,用户在启动 VM 时将收到 StorageAccountTypeNotSupported 错误。

  • 资源管理器 API 版本“2020-06-01”及更高版本支持托管存储帐户。

  • 对于单实例 VM,门户仅支持将启动诊断与托管存储帐户配合使用。

  • 用户无法为托管启动诊断配置保留期。 当总大小超过 1 GB 时,将覆盖日志。

后续步骤

详细了解如何使用启动诊断功能来排查 Azure 中虚拟机的问题