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

适用于:✔️ Linux VM ✔️ Windows VM

虚拟机进入非可启动状态的原因可能有很多。 若要解决使用 资源管理器 部署模型创建的虚拟机的问题,可以使用以下调试功能:控制台输出和 Azure 虚拟机的屏幕截图支持。

对于 Linux 虚拟机,可以在门户中查看控制台日志的输出。 对于 Windows 和 Linux 虚拟机,Azure 允许你通过虚拟机监控程序查看 VM 的屏幕截图。 所有区域中的 Azure 虚拟机都支持这两项功能。 请注意,屏幕截图和输出最多可能需要 10 分钟才能显示在存储帐户中。

可以选择“启动诊断”选项以查看日志和屏幕截图。

Azure 门户的“启动诊断”页中“屏幕截图”选项卡的屏幕截图。

常见的启动错误

在使用 Azure 门户创建的虚拟机上启用诊断

以下过程适用于使用资源管理器部署模型创建的虚拟机。

在“管理”选项卡上的“监视”部分中,确保“启动诊断”处于打开状态。 默认设置是使用托管存储帐户启用启动诊断。

VM 创建启动诊断页中选项的屏幕截图

注意

启动诊断功能不支持高级存储帐户或区域冗余存储帐户类型。 如果使用高级存储帐户进行启动诊断,则可能会在启动 VM 时收到 StorageAccountTypeNotSupported 错误。

通过 Azure 资源管理器模板部署

若要从 Azure 资源管理器模板进行部署,请导航到虚拟机资源,并追加诊断配置文件部分。 将 API 版本标头设置为“2015-06-15”或更新版本。 最新版本是“2018-10-01”。

{
  "apiVersion": "2018-10-01",
  "type": "Microsoft.Compute/virtualMachines",
  … 

可以通过诊断配置文件选择要在其中放置这些日志的存储帐户。

    "diagnosticsProfile": {
 "bootDiagnostics": {
 "enabled": true,
 "storageUri": "[concat('https://', parameters('newStorageAccountName'), '.blob.core.windows.net')]"
 }
    }
    }
}

有关使用模板部署资源的详细信息,请参阅快速入门:使用Azure 门户创建和部署 Azure 资源管理器 模板。

在现有的虚拟机上启用启动诊断

若要在现有的虚拟机上启用启动诊断,请执行以下步骤:

  1. 登录到 Azure 门户,然后选择虚拟机。

  2. “帮助 ”部分中,选择“ 启动诊断”,然后选择“ 设置” 选项卡。

  3. 启动诊断 设置中,选择包含托管存储帐户或自定义存储帐户的启动诊断。 现有 VM 启动诊断页中选项的屏幕截图

  4. 保存更改。

使用 Azure CLI 启用启动诊断

可以在现有的 Azure 虚拟机上使用 Azure CLI 启用启动诊断。 有关详细信息,请参阅 az vm boot-diagnostics

修复未刷新的启动诊断屏幕截图

如果注意到 Azure VM 的启动诊断屏幕截图在Azure 门户中已过时,请先确保在来宾操作系统中禁用虚拟显示超时。 例如,你可能会看到登录屏幕上显示的时间对于 Windows VM 来说已过时。

对于 Windows,请从提升的 CMD 运行以下命令

powercfg /setacvalueindex SCHEME_CURRENT SUB_VIDEO VIDEOIDLE 0

对于 Linux,运行以下命令

xset s off

对于 Windows VM,Azure 预配代理不同于 VM 代理。 它在预配从通用化映像创建的 VM 期间运行上述命令。 如果在 C:\Windows\Panther\WaSetup.xml(预配代理日志)中搜索 powercfg,则可以看到此事件。 但是,由于预配代理不需要为从专用 VHD 创建的 VM 运行,因此需要手动运行 powercfg 命令来禁用虚拟显示超时。 此外,还可以从通用化映像创建一个特别旧的 Azure VM,该映像可能尚未设置,因为在更新预配代理之前已创建该 VM 以禁用虚拟显示超时。

联系我们寻求帮助

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