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.

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 nicht den Status Bereit an die Azure-Plattform melden kann, funktionieren die Erweiterungen nicht ordnungsgemäß.

Informationen zur Problembehandlung für den VM-Agent finden Sie auf den folgenden Seiten:

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 oben erläutert wurde, kann der Status der Erweiterung durch Ausführen des PowerShell-Cmdlets:

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

oder des CLI-Befehls:

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

oder im Azure-Portal ermittelt werden, indem Sie zum VM-Blatt /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 mithilfe der benutzerdefinierten Skripterweiterung Skripts auf dem virtuellen Computer ausführen, könnten ab und an Fehler auftreten, bei denen der virtuelle Computer erfolgreich erstellt wurde, das Skript jedoch fehlgeschlagen ist. 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, damit es nicht mehr notwendig ist, die Erweiterung zu deinstallieren.

Entfernen der Erweiterung aus Azure PowerShell

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

Nachdem 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 stellen Sie fest, dass eine Erweiterung nicht ausgeführt wurde oder aufgrund eines fehlenden „Microsoft Azure CRP Certificate Generator“ nicht ausgeführt werden kann. (Dieses Zertifikat wird verwendet, um den Transport der geschützten Einstellungen der Erweiterung abzusichern.) Dieses Zertifikat wird automatisch erneut generiert, indem der Windows-Gast-Agent im virtuellen Computer 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. Zwar löst Reapply seinerseits keinen Neustart der VM aus, und in der überwiegenden Mehrzahl der Fälle führt das Aufrufen von Reapply nicht zu einem Neustart der VM, es besteht jedoch das sehr kleine Risiko, dass ein anderes ausstehendes Update des VM-Modells angewendet wird, wenn Reapply einen neuen Zielzustand auslöst, und diese andere Änderung macht möglicherweise einen Neustart erforderlich.

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 ein „VM Reapply“ nicht funktioniert, können Sie der VM einen neuen leeren Datenträger für Daten aus dem Azure-Verwaltungsportal hinzufügen und diesen 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 in der Regel in

C:\WindowsAzure\Logs\Plugins

Die Erweiterungseinstellungen und Statusdateien befinden sich in

C:\Packages\Plugins

Auf einer Linux-VM befinden sich die Erweiterungsprotokolle in der Regel in

/var/log/azure/

Die Erweiterungseinstellungen und Statusdateien befinden sich in

/var/lib/waagent/

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

Erweiterungspakete und Binärdateien werden auf den virtuellen Computer heruntergeladen (z. B. „/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 über den VM-Agent von der Azure-Plattform an den Erweiterungsbehandler übergeben (z. B. „/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).

Erweiterungsbehandler innerhalb des virtuellen Computers schreiben in eine Statusdatei (z. B. „/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 dann an die Azure-Plattform gemeldet wird. Dieser Status wird über PowerShell, die CLI oder auf dem Blatt „Erweiterung“ des virtuellen Computers im Azure-Portal gemeldet.

Außerdem schreiben sie detaillierte Protokolle ihrer Ausführung (z. B. „/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 enthält und daher Binärdateien, Protokolle und Statusdateien übrig bleiben. Das neue VM-Modell erkennt die Erweiterungsstatus des vorherigen virtuellen Computers nicht und meldet möglicherweise einen falschen Status für diese Erweiterungen. Es wird dringend empfohlen, die Erweiterungen vom alten virtuellen Computer zu entfernen, bevor Sie die neue erstellen, und diese Erweiterungen neu zu installieren, sobald 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.