Freigeben über


Problembehandlung bei Fehlern im Zusammenhang mit Azure Windows-VM-Erweiterungen

Übersicht über Azure-Ressourcen-Manager-Vorlagen

Azure Resource Manager-Vorlagen ermöglichen es Ihnen, deklarativ die Azure IaaS-Infrastruktur in der JSON-Sprache anzugeben, indem Sie die Abhängigkeiten zwischen Ressourcen definieren.

Weitere Informationen zum Erstellen von Vorlagen für die Verwendung von Erweiterungen finden Sie unter Erstellen von Erweiterungsvorlagen .

In diesem Artikel erfahren Sie mehr über die Problembehandlung für einige der allgemeinen VM-Erweiterungsfehler.

Hinweis

Neu! Testen der VM-Unterstützung für schnellere Diagnose' Es wird empfohlen, vm assist for Windows or VM assist for Linux auszuführen. Diese skriptbasierten Diagnosetools helfen Ihnen, häufige Probleme zu identifizieren, die sich auf den Azure VM-Gast-Agent und die allgemeine VM-Integrität auswirken.

Anzeigen des Erweiterungsstatus

Azure Resource Manager-Vorlagen können aus Azure PowerShell ausgeführt werden. Sobald die Vorlage ausgeführt wird, kann der Erweiterungsstatus im Azure-Ressourcen-Explorer oder in den Befehlszeilentools angezeigt werden.

Beispiel:

Azure PowerShell:

Get-AzVM -ResourceGroupName $RGName -Name $vmName -Status

Hier ist die Beispielausgabe:

Extensions:  {
  "ExtensionType": "Microsoft.Compute.CustomScriptExtension",
  "Name": "myCustomScriptExtension",
  "SubStatuses": [
    {
      "Code": "ComponentStatus/StdOut/succeeded",
      "DisplayStatus": "Provisioning succeeded",
      "Level": "Info",
      "Message": "    Directory: C:\\temp\\n\\n\\nMode                LastWriteTime     Length Name
          \\n----                -------------     ------ ----                              \\n-a---          9/1/2015   2:03 AM         11
          test.txt                          \\n\\n",
                  "Time": null
      },
    {
      "Code": "ComponentStatus/StdErr/succeeded",
      "DisplayStatus": "Provisioning succeeded",
      "Level": "Info",
      "Message": "",
      "Time": null
    }
  ]
}

Problembehandlung bei Erweiterungsfehlern

Überprüfen Sie, ob der VM-Agent ausgeführt wird und bereit ist.

Der VM-Agent ist zum Verwalten, Installieren und Ausführen von Erweiterungen erforderlich. Wenn der VM-Agent nicht ausgeführt wird oder einen Ready-Status nicht an die Azure-Plattform meldet, funktioniert die Erweiterung nicht ordnungsgemäß.

Die folgenden Seiten zur Problembehandlung des VM-Agents:

Suchen Sie nach ihrem spezifischen Leitfaden zur Problembehandlung für Erweiterungen.

Einige Erweiterungen verfügen über eine bestimmte Seite, auf der die Problembehandlung beschrieben wird. Die Liste dieser Erweiterungen und Seiten finden Sie unter Problembehandlung bei Erweiterungen.

Anzeigen des Erweiterungsstatus

Wie bereits erläutert, finden Sie den Status der Erweiterung, indem Sie das PowerShell-Cmdlet ausführen:

Get-AzVM -ResourceGroupName $RGName -Name $vmName -Status

Oder der CLI-Befehl:x

az vm extension show -g <RG Name> --vm-name <VM Name>  --name <Extension Name>

Oder im Azure-Portal, indem Sie zum VM Blade / Einstellungen / Erweiterungen navigieren. Sie können dann auf die Erweiterung klicken und deren Status und Meldung überprüfen.

Erneutes Ausführen der Erweiterung auf dem virtuellen Computer

Wenn Sie Skripts auf dem virtuellen Computer mit benutzerdefinierter Skripterweiterung ausführen, können Sie manchmal einen Fehler aufweisen, bei dem der virtuelle Computer erfolgreich erstellt wurde, aber das Skript fehlschlägt. Unter diesen Bedingungen empfiehlt es sich, die Erweiterung zu entfernen und die Vorlage erneut auszuführen, um den Fehler zu beheben.

Hinweis

In Zukunft wird diese Funktionalität verbessert, um die Deinstallation der Erweiterung zu entfernen.

Entfernen der Erweiterung aus Azure PowerShell

Remove-AzVMExtension -ResourceGroupName $RGName -VMName $vmName -Name "myCustomScriptExtension"

Sobald die Erweiterung entfernt wurde, kann die Vorlage erneut ausgeführt werden, um die Skripts auf dem virtuellen Computer auszuführen.

Auslösen eines neuen GoalState für die VM

Möglicherweise wird angezeigt, dass eine Erweiterung nicht ausgeführt wird, da der "Windows Azure CRP-Zertifikatgenerator" fehlt. Dieses Zertifikat schützt die Einstellungen der Erweiterung während des Transports. Dieses Zertifikat wird automatisch neu generiert, indem der Windows-Gast-Agent von innerhalb des virtuellen Computers neu gestartet wird:

  • Öffnen Sie den Task-Manager.
  • Navigieren Sie zur Registerkarte „Details“.
  • Suchen Sie den Prozess „WindowsAzureGuestAgent.exe“.
  • Klicken Sie mit der rechten Maustaste darauf, und wählen Sie „Task beenden“ aus. Der Prozess wird automatisch neu gestartet.

Ferner können Sie für die VM einen neuen GoalState auslösen, indem Sie ein „VM Reapply“ ausführen. VM Reapply ist eine API, die 2020 eingeführt wurde und dazu dient, den Zustand einer VM erneut anzuwenden. Wir empfehlen Ihnen, dies zu einem Zeitpunkt durchzuführen, an dem eine kurze Ausfallzeit der VM akzeptabel ist. In der Regel wird die VM nicht neu gestartet, aber in seltenen Fällen löst sie möglicherweise ein ausstehendes Update aus, das einen Neustart erfordert.

Azure-Portal:

Wählen Sie im Portal die VM und im linken Bereich unter Support und Problembehandlung die Option Redeploy + reapply (Erneut bereitstellen und erneut anwenden) aus. Wählen Sie dann Reapply (Erneut anwenden) aus.

Azure PowerShell (ersetzen Sie den RG-Namen und den VM-Namen durch Ihre Werte) :

Set-AzVM -ResourceGroupName <RG Name> -Name <VM Name> -Reapply

Azure CLI (ersetzen Sie den RG-Namen und den VM-Namen durch Ihre Werte) :

az vm reapply -g <RG Name> -n <VM Name>

Wenn eine "VM Reapply" nicht funktioniert hat, können Sie dem virtuellen Computer einen neuen leeren Datenträger aus dem Azure-Verwaltungsportal hinzufügen und es später entfernen, nachdem das Zertifikat wieder hinzugefügt wurde.

Ansehen der Erweiterungsprotokolle auf dem virtuellen Computer

Wenn die vorherigen Schritte nicht funktioniert haben und sich Ihre Erweiterung weiterhin in einem fehlerhaften Zustand befindet, besteht der nächste Schritt darin, die zugehörigen Protokolle auf dem virtuellen Computer anzuzeigen.

Auf einer Windows-VM befinden sich die Erweiterungsprotokolle standardmäßig in

C:\WindowsAzure\Logs\Plugins

Und die Erweiterungseinstellungen und Statusdateien sind standardmäßig in

C:\Packages\Plugins

Auf einer Linux-VM befinden sich die Erweiterungsprotokolle standardmäßig in

/var/log/azure/

Und die Erweiterungseinstellungen und Statusdateien nach Details sind in

/var/lib/waagent/

Jede Erweiterung ist anders, aber sie folgen in der Regel ähnlichen Prinzipien:

Erweiterungspakete und Binärdateien werden auf die VM heruntergeladen (Beispiel: "/var/lib/waagent/custom-script/download/1" für Linux oder "C:\Packages\Plugins\Microsoft.Compute.CustomScriptExtension\1.10.12\Downloads\0" für Windows).

Ihre Konfiguration und Einstellungen werden von Azure Platform an den Erweiterungshandler über den VM-Agent übergeben (Beispiel: "/var/lib/waagent/Microsoft.Azure.Extensions.CustomScript-2.1.3/config" für Linux oder "C:\Packages\Plugins\Microsoft.Compute.CustomScriptExtension\1.10.12\RuntimeSettings" für Windows)

Erweiterungshandler innerhalb der VM schreiben in eine Statusdatei (Beispiel: "/var/lib/waagent/Microsoft.Azure.Extensions.CustomScript-2.1.3/status/1.status" für Linux oder "C:\Packages\Plugins\Microsoft.Compute.CustomScriptExtension\1.10.12\Status" für Windows), die der Azure-Plattform gemeldet wird. Dieser Status wird über PowerShell, die CLI oder auf dem Blatt „Erweiterung“ des virtuellen Computers im Azure-Portal gemeldet.

Sie schreiben auch detaillierte Protokolle ihrer Ausführung (beispiel: "/var/log/azure/custom-script/handler.log" für Linux oder "C:\WindowsAzure\Logs\Plugins\Microsoft.Compute.CustomScriptExtension\1.10.12\CustomScriptHandler.log" für Windows).

Wenn der virtuelle Computer von einem vorhandenen virtuellen Computer neu erstellt wird

Es kann vorkommen, dass Sie eine Azure-VM erstellen, die auf einem spezialisierten Datenträger basiert, der von einem anderen virtuellen Azure-Computer stammt. In diesem Fall ist es möglich, dass die alte VM Erweiterungen und Binärdateien, Protokolle und Statusdateien enthielt. Das neue VM-Modell kennt die Erweiterungszustände der vorherigen VM nicht, und es kann einen falschen Status für diese Erweiterungen melden. Es wird dringend empfohlen, die Erweiterungen von der alten VM vor dem Erstellen der neuen VM zu entfernen und diese Erweiterungen neu zu installieren, nachdem die neue VM erstellt wurde. Dasselbe kann passieren, wenn Sie ein generalisiertes Image aus einer vorhandenen Azure-VM erstellen. Sie sollten Erweiterungen entfernen, um inkonsistente Status aus den Erweiterungen zu vermeiden.

Bekannte Probleme

PowerShell wird nicht als interner oder externer Befehl erkannt

Sie stellen die folgenden Fehlereinträge in der Ausgabe der RunCommand-Erweiterung fest:

RunCommandExtension failed with "'powershell' isn't recognized as an internal or external command,"

Analyse

Erweiterungen werden unter dem lokalen Systemkonto ausgeführt, sodass es möglich ist, dass powershell.exe einwandfrei funktioniert, wenn Sie RDP in die VM integrieren, aber bei ausführung mit RunCommand fehlschlägt.

Lösung

  • Überprüfen Sie, ob PowerShell in der PATH-Umgebungsvariable ordnungsgemäß aufgeführt ist:
    • Systemsteuerung öffnen
    • System und Sicherheit
    • System
    • Registerkarte „Erweitert“ > „Umgebungsvariablen“
  • Klicken Sie unter „Systemvariablen“ auf „Bearbeiten“, und stellen Sie sicher, dass PowerShell sich in der PATH-Umgebungsvariable befindet (in der Regel „C:\Windows\Windows\System32\WindowsPowerShell\v1.0“).
  • Starten Sie die VM neu, oder starten Sie den WindowsAzureGuestAgent-Dienst neu. Führen Sie dann die Skriptausführung erneut aus.

PowerShell wird nicht als interner oder externer Befehl erkannt

In der Datei „C:\WindowsAzure\Logs\Plugins<Erweiterungsname><Version>\CommandExecution.log“ finden Sie Folgendes:

Execution Error: '<command>' isn't recognized as an internal or external command, operable program or batch file.

Analyse

Erweiterungen werden unter dem lokalen Systemkonto ausgeführt, sodass es möglich ist, dass powershell.exe einwandfrei funktioniert, wenn Sie RDP in die VM integrieren, aber bei ausführung mit RunCommand fehlschlägt.

Lösung

  • Öffnen Sie eine Eingabeaufforderung in der VM, und führen Sie einen Befehl aus, um den Fehler zu reproduzieren. Der VM-Agent verwendet „cmd.exe“ mit Administratorrechten, und möglicherweise haben Sie einen Befehl vorkonfiguriert, der bei jedem Start von cmd ausgeführt wird.
  • Es ist wahrscheinlich auch, dass Ihre PATH-Variable falsch konfiguriert ist, aber dies hängt von dem Befehl ab, der das Problem hat.

VMAccessAgent verursacht den Fehler „Remotedesktop-Verbindungseinstellungen können für Administratorkonto nicht aktualisiert werden“. Fehler: System.Runtime.InteropServices.COMException (0x800706D9): Von der Endpunktzuordnung sind keine weiteren Endpunkte verfügbar.

Im Status der Erweiterung wird Folgendes angezeigt:

Type Microsoft.Compute.VMAccessAgent
Version 2.4.8
Status Provisioning failed
Status level Error
Status message Cannot update Remote Desktop Connection settings for Administrator account. Error: System.Runtime.InteropServices.COMException (0x800706D9): There are no more endpoints available from the endpoint mapper. (Exception from HRESULT: 0x800706D9) at NetFwTypeLib.INetFwRules.GetEnumerator() at 
Microsoft.WindowsAzure.GuestAgent.Plugins.JsonExtensions.VMAccess.RemoteDesktopManager.EnableRemoteDesktopFirewallRules() 
at Microsoft.WindowsAzure.GuestAgent.Plugins.JsonExtensions.VMAccess.RemoteDesktopManager.EnableRemoteDesktop() at

Analyse

Dieser Fehler kann auftreten, wenn der Windows-Firewalldienst nicht ausgeführt wird.

Lösung

Überprüfen Sie, ob der Windows-Firewalldienst aktiviert ist und ausgeführt wird. Falls nicht, aktivieren und starten Sie sie . Versuchen Sie es dann erneut, den VMAccessAgent auszuführen.

Das Remotezertifikat ist laut Validierungsverfahren ungültig.

In „WaAppAgent.log“ wird Folgendes angezeigt.

System.Net.WebException: The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel. ---> System.Security.
Authentication.AuthenticationException: The remote certificate is invalid according to the validation procedure.

Analyse

Ihrer VM fehlt wahrscheinlich das Baltimore CyberTrust Root-Zertifikat unter „Vertrauenswürdige Stammzertifizierungsstellen“.

Lösung

Öffnen Sie die Zertifikatkonsole über „certmgr.msc“, und überprüfen Sie, ob das Zertifikat vorhanden ist.

Ein SSL-Inspektionstool von Drittanbietern wie ZScaler kann die Zertifikatkette unterbrechen. Sie sollten solche Tools so konfigurieren, dass die SSL-Inspektion umgangen wird.