Senden von Azure Stack Hub-Diagnoseprotokollen mithilfe des privilegierten Endpunkts (PEP)
Um Get-AzureStackLog auf einem integrierten System auszuführen, müssen Sie Zugriff auf den privilegierten Endpunkt (PEP) haben. Hier ist ein Beispielskript, das Sie mit dem PEP ausführen können, um Protokolle zu sammeln. Wenn Sie eine laufende Protokollsammlung abbrechen, um eine neue zu starten, warten Sie bitte 5 Minuten, bevor Sie die neue Protokollsammlung starten, und geben Sie Remove-PSSession -Session $session
ein.
$ipAddress = "<IP ADDRESS OF THE PEP VM>" # You can also use the machine name instead of IP here.
$password = ConvertTo-SecureString "<CLOUD ADMIN PASSWORD>" -AsPlainText -Force
$cred = New-Object -TypeName System.Management.Automation.PSCredential ("<DOMAIN NAME>\CloudAdmin", $password)
$shareCred = Get-Credential
$session = New-PSSession -ComputerName $ipAddress -ConfigurationName PrivilegedEndpoint -Credential $cred -SessionOption (New-PSSessionOption -Culture en-US -UICulture en-US)
$fromDate = (Get-Date).AddHours(-8)
$toDate = (Get-Date).AddHours(-2) # Provide the time that includes the period for your issue
Invoke-Command -Session $session { Get-AzureStackLog -OutputSharePath "<EXTERNAL SHARE ADDRESS>" -OutputShareCredential $using:shareCred -FilterByRole Storage -FromDate $using:fromDate -ToDate $using:toDate}
if ($session) {
Remove-PSSession -Session $session
}
Beispiele
Sammeln Sie alle Protokolle für alle Rollen:
Get-AzureStackLog -OutputSharePath "<path>" -OutputShareCredential $cred
Sammeln Sie Protokolle für die Rollen VirtualMachines und BareMetal:
Get-AzureStackLog -OutputSharePath "<path>" -OutputShareCredential $cred -FilterByRole VirtualMachines,BareMetal
Sammeln Sie Protokolle für die Rollen VirtualMachines und BareMetal, und verwenden Sie die Datumsfilterung für Protokolldateien für die letzten acht Stunden:
Get-AzureStackLog -OutputSharePath "<path>" -OutputShareCredential $cred -FilterByRole VirtualMachines,BareMetal -FromDate (Get-Date).AddHours(-8)
Sammeln Sie Protokolle für die Rollen VirtualMachines und BareMetal, und verwenden Sie für die Datumsfilterung der Protokolldateien den Zeitraum zwischen acht und zwei Stunden vor dem aktuellen Zeitpunkt:
Get-AzureStackLog -OutputSharePath "<path>" -OutputShareCredential $cred -FilterByRole VirtualMachines,BareMetal -FromDate (Get-Date).AddHours(-8) -ToDate (Get-Date).AddHours(-2)
Sammeln Sie Protokolle aus Mandantenbereitstellungen, die selbstverwaltete Kubernetes-Cluster (AKS-Engine) auf Azure Stack ausführen. Kubernetes-Protokolle sollten in einem Mandantenspeicherkonto in einem Format gespeichert werden, das erlaubt, dass der Sammlungszeitraum auch auf sie angewendet wird.
Get-AzureStackLog -OutputPath <Path> -InputSasUri "<Blob Service Sas URI>" -FromDate "<Beginning of the time range>" -ToDate "<End of the time range>"
Zum Beispiel:
Get-AzureStackLog -OutputPath C:\KubernetesLogs -InputSasUri "https://<storageAccountName>.blob.core.windows.net/<ContainerName><SAS token>" -FromDate (Get-Date).AddHours(-8) -ToDate (Get-Date).AddHours(-2)
Sammeln Sie Protokolle für die Mehrwert-Ressourcenanbieter. Die allgemeine Syntax lautet:
Get-AzureStackLog -FilterByResourceProvider <<value-add RP name>>
So erfassen Sie Protokolle für SQL RP:
Get-AzureStackLog -FilterByResourceProvider SQLAdapter
So erfassen Sie Protokolle für MySQL RP:
Get-AzureStackLog -FilterByResourceProvider MySQLAdapter
So erfassen Sie Protokolle für Event Hubs:
Get-AzureStackLog -FilterByResourceProvider eventhub
So erfassen Sie Protokolle für Azure Stack Edge:
Get-AzureStackLog -FilterByResourceProvide databoxedge
Sammeln Sie Protokolle, und speichern Sie sie im angegebenen Azure Storage-BLOB-Container. Die allgemeine Syntax für diesen Vorgang lautet wie folgt:
Get-AzureStackLog -OutputSasUri "<Blob service SAS Uri>"
Zum Beispiel:
Get-AzureStackLog -OutputSasUri "https://<storageAccountName>.blob.core.windows.net/<ContainerName><SAS token>"
Anmerkung
Dieses Verfahren ist hilfreich für das Hochladen von Protokollen. Auch wenn Sie weder über eine zugängliche SMB-Freigabe noch über Internetzugang verfügen, können Sie ein Blob-Speicherkonto auf Ihrem Azure Stack Hub erstellen, um die Protokolle zu übertragen, und dann Ihren Client verwenden, um diese Protokolle abzurufen.
Um das SAS-Token für das Speicherkonto zu generieren, sind die folgenden Berechtigungen erforderlich:
- Zugriff auf den Blob Storage-Dienst.
- Zugriff auf den Containerressourcentyp.
Führen Sie die folgenden Schritte aus, um einen SAS-URI-Wert zu generieren, der für den
-OutputSasUri
-Parameter verwendet werden soll:- Erstellen Sie ein Speicherkonto, und führen Sie die schritte in diesem Artikelaus.
- Öffnen Sie eine Instanz des Azure Storage-Explorers.
- Stellen Sie eine Verbindung mit dem speicherkonto her, das in Schritt 1 erstellt wurde.
- Navigieren Sie zu Blobcontainer in Speicherdienste.
- Wählen Sie Neuen Container erstellen aus.
- Klicken Sie mit der rechten Maustaste auf den neuen Container und dann auf Shared Access Signature abrufen.
- Wählen Sie je nach Ihren Anforderungen eine gültige Startzeit und Endzeitaus.
- Wählen Sie für die erforderlichen Berechtigungen Lese-, Schreibenund Listen-aus.
- Wählen Sie Erstellen aus.
- Sie erhalten eine Signatur für den gemeinsamen Zugriff. Kopieren Sie den URL-Teil, und geben Sie ihn an den parameter
-OutputSasUri
an.
Parameterüberlegungen
Die Parameter OutputSharePath- und OutputShareCredential- werden verwendet, um Protokolle an einem vom Benutzer angegebenen Speicherort zu speichern.
Die parameter FromDate und ToDate können verwendet werden, um Protokolle für einen bestimmten Zeitraum zu sammeln. Wenn diese Parameter nicht angegeben sind, werden Protokolle standardmäßig für die letzten vier Stunden erfasst.
Verwenden Sie den parameter FilterByNode, um Protokolle nach Computernamen zu filtern. Zum Beispiel:
Get-AzureStackLog -OutputSharePath "<path>" -OutputShareCredential $cred -FilterByNode azs-xrp01
Verwenden Sie den FilterByLogType Parameter, um Protokolle nach Typ zu filtern. Sie können nach Datei, Freigabe oder Windows-Ereignis filtern. Zum Beispiel:
Get-AzureStackLog -OutputSharePath "<path>" -OutputShareCredential $cred -FilterByLogType File
Sie können den TimeOutInMinutes Parameter verwenden, um das Timeout für die Protokollauflistung festzulegen. Sie ist standardmäßig auf 150 (2,5 Stunden) festgelegt.
Die Protokollsammlung für Dumpdateien ist standardmäßig deaktiviert. Verwenden Sie den Schalterparameter IncludeDumpFile, um ihn zu aktivieren.
Derzeit können Sie den parameter FilterByRole verwenden, um die Protokollsammlung nach den folgenden Rollen zu filtern:
ACS
ACSBlob
ACSDownloadService
ACSFabric
ACSFrontEnd
ACSMetrics
ACSMigrationService
ACSMonitoringService
ACSSettingsService
ACSTableMaster
ACSTableServer
ACSWac
ADFS
ApplicationController
ASAppGateway
AzureBridge
AzureMonitor
BareMetal
BRP
CA
CacheService
Berechnen
CPI
CRP
DeploymentMachine
DiskRP
Domäne
ECE
EventAdminRP
EventRP
ExternalDNS
FabricRing
FabricRingServices
FirstTierAggregationService
FRP
Tor
Gesundheitsüberwachung
HintingServiceV2
HRP
IBC
InfraServiceController
KeyVaultAdminResourceProvider
KeyVaultControlPlane
KeyVaultDataPlane
KeyVaultInternalControlPlane
KeyVaultInternalDataPlane
KeyVaultNamingService
MDM
MetricsAdminRP
MetricsRP
MetricsServer
MetricsStoreService
MonAdminRP
MonRP
NC
NonPrivilegedAppGateway
NRP
OboService
OEM
OnboardRP
PXE
Abfragedienstkoordinator
QueryServiceWorker
SeedRing
SeedRingServices
SLB
SQL
SRP
Lagerung
Speichercontroller
URP
SupportBridgeController
SupportRing
SupportRingServices
SupportBridgeRP
UsageBridge
Virtuelle Maschinen
WAS
WASPUBLIC
Weitere Überlegungen zu Diagnoseprotokollen
Je nachdem, welche Rollen in den Protokollen gesammelt werden, kann dieser Befehl mehr Zeit beanspruchen. Zu den beitragenden Faktoren gehören auch die für die Protokollsammlung angegebene Zeitdauer und die Anzahl der Knoten in der Azure Stack Hub-Umgebung.
Überprüfen Sie während die Protokollsammlung läuft, den neuen Ordner, der im OutputSharePath- Parameter erstellt wurde, der im Befehl angegeben ist.
Jede Rolle enthält ihre Protokolle innerhalb einzelner ZIP-Dateien. Je nach Größe der gesammelten Protokolle kann eine Rolle ihre Protokolle in mehrere ZIP-Dateien aufteilen. Wenn Sie für eine solche Rolle alle Protokolldateien in einem einzelnen Ordner entzippen möchten, verwenden Sie ein Tool, das in großen Mengen entpacken kann. Wählen Sie alle ZIP-Dateien für die Rolle und dann Hier entpacken aus. Alle Protokolldateien für diese Rolle werden in einen einzigen zusammengeführten Ordner entzippt.
Eine Datei namens Get-AzureStackLog_Output.log wird auch im Ordner erstellt, der die gezippten Protokolldateien enthält. Diese Datei ist ein Protokoll der Befehlsausgabe, das für die Problembehandlung bei der Protokollsammlung verwendet werden kann. Manchmal enthält die Protokolldatei
PS>TerminatingError
Einträge, die sicher ignoriert werden können, es sei denn, die erwarteten Protokolldateien fehlen nach der Ausführung der Protokollsammlung.Um einen bestimmten Fehler zu untersuchen, können Protokolle aus mehr als einer Komponente benötigt werden.
- System- und Ereignisprotokolle für alle Infrastruktur-VMs werden in der rolle VirtualMachines erfasst.
- System- und Ereignisprotokolle für alle Hosts werden unter der Rolle BareMetal gesammelt.
- Failovercluster- und Hyper-V-Ereignisprotokolle werden unter der Rolle Storage gesammelt.
- ACS-Protokolle werden unter den Rollen Storage und ACS gesammelt.
Anmerkung
Größen- und Altersbeschränkungen werden für die gesammelten Protokolle erzwungen, da es wichtig ist, eine effiziente Nutzung Ihres Speicherplatzes sicherzustellen und zu vermeiden, dass Protokolle überflutet werden. Wenn Sie jedoch ein Problem diagnostizieren, benötigen Sie manchmal Protokolle, die aufgrund dieser Grenzwerte nicht mehr vorhanden sind. Daher wird dringend empfohlen, Ihre Protokolle alle 8 bis 12 Stunden in einen externen Speicherplatz (ein Speicherkonto in Azure, ein zusätzliches lokales Speichergerät usw.) auszulagern und je nach Ihren Anforderungen dort 1 bis 3 Monate aufzubewahren. Sie sollten auch sicherstellen, dass dieser Speicherort verschlüsselt ist.
Invoke-AzureStackOnDemandLog
Sie können das Cmdlet Invoke-AzureStackOnDemandLog verwenden, um On-Demand-Protokolle für bestimmte Rollen zu generieren (siehe Liste am Ende dieses Abschnitts). Die von diesem Cmdlet generierten Protokolle sind nicht standardmäßig im Protokollpaket vorhanden, das Sie erhalten, wenn Sie das Cmdlet Get-AzureStackLog ausführen. Außerdem wird empfohlen, diese Protokolle nur dann zu sammeln, wenn sie vom Microsoft-Supportteam angefordert werden.
Derzeit können Sie den parameter -FilterByRole
verwenden, um die Protokollsammlung nach den folgenden Rollen zu filtern:
- OEM
- NC
- SLB
- Tor
Beispiel für das Sammeln von Diagnoseprotokollen bei Bedarf
$ipAddress = "<IP ADDRESS OF THE PEP VM>" # You can also use the machine name instead of IP here.
$password = ConvertTo-SecureString "<CLOUD ADMIN PASSWORD>" -AsPlainText -Force
$cred = New-Object -TypeName System.Management.Automation.PSCredential ("<DOMAIN NAME>\CloudAdmin", $password)
$shareCred = Get-Credential
$session = New-PSSession -ComputerName $ipAddress -ConfigurationName PrivilegedEndpoint -Credential $cred -SessionOption (New-PSSessionOption -Culture en-US -UICulture en-US)
$fromDate = (Get-Date).AddHours(-8)
$toDate = (Get-Date).AddHours(-2) # Provide the time that includes the period for your issue
Invoke-Command -Session $session {
Invoke-AzureStackOnDemandLog -Generate -FilterByRole "<on-demand role name>" # Provide the supported on-demand role name e.g. OEM, NC, SLB, Gateway
Get-AzureStackLog -OutputSharePath "<external share address>" -OutputShareCredential $using:shareCred -FilterByRole Storage -FromDate $using:fromDate -ToDate $using:toDate
}
if ($session) {
Remove-PSSession -Session $session
}
Funktionsweise der Diagnoseprotokollsammlung mithilfe des PEP
Azure Stack Hub-Diagnosetools helfen ihnen, die Protokollsammlung einfach und effizient zu gestalten. Das folgende Diagramm zeigt, wie die Diagnosetools funktionieren:
Collector der Ablaufverfolgung
Der Trace Collector ist standardmäßig aktiviert und wird kontinuierlich im Hintergrund ausgeführt, um alle Event Tracing for Windows (ETW)-Protokolle von Azure Stack Hub-Komponentendiensten zu sammeln. ETW-Protokolle werden maximal fünf Tage lang auf einer gemeinsam genutzten lokalen Freigabe gespeichert. Sobald dieser Grenzwert erreicht ist, werden die ältesten Dateien gelöscht, wenn neue erstellt werden. Die für jede Datei zulässige standardgröße beträgt 200 MB. Eine Größenüberprüfung erfolgt alle 2 Minuten, und wenn die aktuelle Datei >= 200 MB ist, wird sie gespeichert und eine neue Datei generiert. Es gibt auch einen Grenzwert von 8 GB für die Gesamtdateigröße, die pro Ereignissitzung generiert wird.
Get-AzureStackLog
Das PowerShell-Cmdlet Get-AzureStackLog kann verwendet werden, um Protokolle aus allen Komponenten in einer Azure Stack Hub-Umgebung zu sammeln. Sie speichert sie in ZIP-Dateien an einem benutzerdefinierten Speicherort. Wenn das technische Supportteam von Azure Stack Hub Ihre Protokolle benötigt, um ein Problem zu beheben, werden Sie möglicherweise aufgefordert, Get-AzureStackLog auszuführen.
Vorsicht
Diese Protokolldateien können personenbezogene Informationen (PII) enthalten. Berücksichtigen Sie dies, bevor Sie öffentlich Protokolldateien veröffentlichen.
Im Folgenden sind einige Beispielprotokolltypen aufgeführt, die gesammelt werden:
- Azure Stack Hub-Bereitstellungsprotokolle
- Windows-Ereignisprotokolle
- Panther-Protokolle
- Clusterprotokolle
- Speicherdiagnoseprotokolle
- ETW-Protokolle
Diese Dateien werden vom Collector der Ablaufverfolgung gesammelt und in einer Freigabe gespeichert. Get-AzureStackLog lässt sich dann verwenden, um sie nach Bedarf zu sammeln.