Freigeben über


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 $sessionein.

$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:

    1. Erstellen Sie ein Speicherkonto, und führen Sie die schritte in diesem Artikelaus.
    2. Öffnen Sie eine Instanz des Azure Storage-Explorers.
    3. Stellen Sie eine Verbindung mit dem speicherkonto her, das in Schritt 1 erstellt wurde.
    4. Navigieren Sie zu Blobcontainer in Speicherdienste.
    5. Wählen Sie Neuen Container erstellen aus.
    6. Klicken Sie mit der rechten Maustaste auf den neuen Container und dann auf Shared Access Signature abrufen.
    7. Wählen Sie je nach Ihren Anforderungen eine gültige Startzeit und Endzeitaus.
    8. Wählen Sie für die erforderlichen Berechtigungen Lese-, Schreibenund Listen-aus.
    9. Wählen Sie Erstellen aus.
    10. 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:

Workflowdiagramm mit Azure Stack Hub-Diagnosetools

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.