Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Ü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:
- Problembehandlung beim Microsoft Azure-Gast-Agent für eine Windows-VM
- Behandeln von Problemen mit dem Azure Linux-Agent für eine Linux-VM
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.