Inviare log di diagnostica dell'hub di Azure Stack usando l'endpoint con privilegi (PEP)

Per eseguire Get-AzureStackLog in un sistema integrato, è necessario avere accesso all'endpoint con privilegi (PEP). Ecco uno script di esempio che è possibile eseguire usando pep per raccogliere i log. Se si annulla una raccolta di log in esecuzione per avviarne una nuova, attendere 5 minuti prima di avviare la nuova raccolta di log e immettere Remove-PSSession -Session $session.

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

Esempio

  • Raccogliere tutti i log per tutti i ruoli:

    Get-AzureStackLog -OutputSharePath "<path>" -OutputShareCredential $cred
    
  • Raccogliere i log dai ruoli VirtualMachines e BareMetal:

    Get-AzureStackLog -OutputSharePath "<path>" -OutputShareCredential $cred -FilterByRole VirtualMachines,BareMetal
    
  • Raccogliere i log dai ruoli VirtualMachines e BareMetal, con il filtro delle date per i file di log per le ultime 8 ore:

    Get-AzureStackLog -OutputSharePath "<path>" -OutputShareCredential $cred -FilterByRole VirtualMachines,BareMetal -FromDate (Get-Date).AddHours(-8)
    
  • Raccogliere i log dai ruoli VirtualMachines e BareMetal, con filtri di data per i file di log per il periodo di tempo compreso tra 8 ore fa e 2 ore fa:

    Get-AzureStackLog -OutputSharePath "<path>" -OutputShareCredential $cred -FilterByRole VirtualMachines,BareMetal -FromDate (Get-Date).AddHours(-8) -ToDate (Get-Date).AddHours(-2)
    
  • Raccogliere i log dalle distribuzioni di tenant che eseguono cluster Kubernetes autogestiti (motore del servizio Azure Kubernetes) in Azure Stack. I log kubernetes devono essere archiviati in un account di archiviazione tenant in un formato che consentirà anche l'intervallo di tempo di raccolta da applicare.

    Get-AzureStackLog -OutputPath <Path> -InputSasUri "<Blob Service Sas URI>" -FromDate "<Beginning of the time range>" -ToDate "<End of the time range>"
    

    Ad esempio:

    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) 
    
  • Raccogliere i log per i provider di servizi di aggiunta di valore. La sintassi generale è:

    Get-AzureStackLog -FilterByResourceProvider <<value-add RP name>>
    

    Per raccogliere i log per SQL RP:

    Get-AzureStackLog -FilterByResourceProvider SQLAdapter
    

    Per raccogliere i log per MySQL RP:

    Get-AzureStackLog -FilterByResourceProvider MySQLAdapter
    

    Per raccogliere i log per Hub eventi:

    Get-AzureStackLog -FilterByResourceProvider eventhub
    

    Per raccogliere i log per Azure Stack Edge:

    Get-AzureStackLog -FilterByResourceProvide databoxedge
    
  • Raccogliere i log e archiviarli nel contenitore BLOB specificato Archiviazione di Azure. La sintassi generale per questa operazione è la seguente:

    Get-AzureStackLog -OutputSasUri "<Blob service SAS Uri>"
    

    Ad esempio:

    Get-AzureStackLog -OutputSasUri "https://<storageAccountName>.blob.core.windows.net/<ContainerName><SAS token>"
    

    Nota

    Questa procedura è utile per caricare i log. Anche se non si ha una condivisione SMB accessibile o accesso a Internet, è possibile creare un account di archiviazione BLOB nell'hub di Azure Stack per trasferire i log e quindi usare il client per recuperare tali log.

    Per generare il token di firma di accesso condiviso per l'account di archiviazione, sono necessarie le autorizzazioni seguenti:

    • Accesso al servizio Archiviazione BLOB.
    • Accesso al tipo di risorsa contenitore.

    Per generare un valore URI di firma di accesso condiviso da usare per il -OutputSasUri parametro, seguire questa procedura:

    1. Creare un account di archiviazione, seguendo la procedura descritta in questo articolo.
    2. Aprire un'istanza del Azure Storage Explorer.
    3. Connessione all'account di archiviazione creato nel passaggio 1.
    4. Passare a Contenitori BLOB in servizi Archiviazione.
    5. Selezionare Crea un nuovo contenitore.
    6. Fare clic con il pulsante destro del mouse sul nuovo contenitore, quindi scegliere Ottieni firma di accesso condiviso.
    7. Selezionare un'ora di inizio e un'ora di fine valide, a seconda dei requisiti.
    8. Per le autorizzazioni necessarie, selezionare Lettura, Scrittura ed Elenco.
    9. Selezionare Crea.
    10. Si otterrà una firma di accesso condiviso. Copiare la parte URL e specificarla nel -OutputSasUri parametro .

Considerazioni sul parametro

  • I parametri OutputSharePath e OutputShareCredential vengono usati per archiviare i log in un percorso specificato dall'utente.

  • I parametri FromDate e ToDate possono essere usati per raccogliere i log per un determinato periodo di tempo. Se questi parametri non vengono specificati, i log vengono raccolti per le ultime quattro ore per impostazione predefinita.

  • Usare il parametro FilterByNode per filtrare i log in base al nome del computer. Ad esempio:

    Get-AzureStackLog -OutputSharePath "<path>" -OutputShareCredential $cred -FilterByNode azs-xrp01
    
  • Utilizzare il parametro FilterByLogType per filtrare i log in base al tipo. È possibile scegliere di filtrare in base a File, Condivisione o WindowsEvent. Ad esempio:

    Get-AzureStackLog -OutputSharePath "<path>" -OutputShareCredential $cred -FilterByLogType File
    
  • È possibile usare il parametro TimeOutInMinutes per impostare il timeout per la raccolta di log. Per impostazione predefinita, è impostato su 150 (2,5 ore).

  • La raccolta di log dei file di dump è disabilitata per impostazione predefinita. Per abilitarla, usare il parametro switch IncludeDumpFile .

  • Attualmente, è possibile usare il parametro FilterByRole per filtrare la raccolta di log in base ai ruoli seguenti:

ACS

ACSBlob

ACSDownloadService

ACSFabric

ACSFrontEnd

ACSMetrics

ACSMigrationService

ACSMonitoringService

ACSSettingsService

ACSTableMaster

ACSTableServer

ACSWac

AD FS

ApplicationController

ASAppGateway

AzureBridge

AzureMonitor

BareMetal

BRP

CA

CacheService

Calcolo

CPI

CRP

DeploymentMachine

DiskRP

Dominio

ECE

EventAdminRP

EventRP

ExternalDNS

FabricRing

FabricRingServices

FirstTierAggregationService

FRP

Gateway

Healthmonitoring

HintingServiceV2

HRP

IBC

InfraServiceController

KeyVaultAdminResourceProvider

KeyVaultControlPlane

KeyVaultDataPlane

KeyVaultInternalControlPlane

KeyVaultInternalDataPlane

KeyVaultNamingService

MDM

MetricsAdminRP

MetricsRP

MetricsServer

MetricsStoreService

MonAdminRP

MonRP

NC

NonPrivilegedAppGateway

NRP

OboService

OEM

OnboardRP

PXE

QueryServiceCoordinator

QueryServiceWorker

SeedRing

SeedRingServices

SLB

SQL

Criteri di restrizione software

Archiviazione

StorageController

URP

SupportBridgeController

SupportRing

SupportRingServices

SupportBridgeRP

UsageBridge

VirtualMachines

WAS

WASPUBLIC

Considerazioni aggiuntive sui log di diagnostica

  • L'esecuzione del comando richiede tempo in base ai ruoli raccolti dai log. I fattori che contribuiscono includono anche la durata specificata per la raccolta di log e il numero di nodi nell'ambiente dell'hub di Azure Stack.

  • Durante l'esecuzione della raccolta di log, controllare la nuova cartella creata nel parametro OutputSharePath specificato nel comando.

  • Ogni ruolo ha i log all'interno di singoli file ZIP. A seconda delle dimensioni dei log raccolti, i log di un ruolo possono essere suddivisi in più file ZIP. Per un ruolo di questo tipo, se si desidera che tutti i file di log siano decompressi in una singola cartella, usare uno strumento che può decomprimere in blocco. Selezionare tutti i file compressi per il ruolo e selezionare estrai qui. Tutti i file di log per tale ruolo verranno decompressi in una singola cartella unita.

  • Viene creato anche un file denominato Get-AzureStackLog_Output.log nella cartella contenente i file di log compressi. Questo file è un log dell'output del comando, che può essere usato per la risoluzione dei problemi durante la raccolta dei log. In alcuni casi il file di log include PS>TerminatingError voci che possono essere ignorate in modo sicuro, a meno che i file di log previsti non siano mancanti dopo l'esecuzione della raccolta di log.

  • Per analizzare un errore specifico, i log possono essere necessari da più componenti.

    • I registri eventi e di sistema per tutte le macchine virtuali dell'infrastruttura vengono raccolti nel ruolo VirtualMachines .
    • I registri eventi e di sistema per tutti gli host vengono raccolti nel ruolo BareMetal .
    • I log eventi del cluster di failover e di Hyper-V vengono raccolti nel ruolo Archiviazione.
    • I log ACS vengono raccolti nei ruoli Archiviazione e ACS.

Nota

Le dimensioni e i limiti di età vengono applicati ai log raccolti perché è essenziale garantire un utilizzo efficiente dello spazio di archiviazione e per evitare l'inondazione dei log. Tuttavia, quando si diagnostica un problema, a volte sono necessari log che non esistono più a causa di questi limiti. È quindi consigliabile eseguire l'offload dei log in uno spazio di archiviazione esterno (un account di archiviazione in Azure, un dispositivo di archiviazione locale aggiuntivo e così via) ogni 8-12 ore e mantenerli lì per 1 - 3 mesi, a seconda dei requisiti. È anche necessario assicurarsi che questo percorso di archiviazione sia crittografato.

Invoke-AzureStackOnDemandLog

È possibile usare il cmdlet Invoke-AzureStackOnDemandLog per generare log su richiesta per determinati ruoli (vedere l'elenco alla fine di questa sezione). I log generati da questo cmdlet non sono presenti per impostazione predefinita nel bundle di log ricevuto quando si esegue il cmdlet Get-AzureStackLog . È anche consigliabile raccogliere questi log solo quando richiesto dal team di supporto Microsoft.

Attualmente, è possibile usare il parametro per filtrare la -FilterByRole raccolta di log in base ai ruoli seguenti:

  • OEM
  • NC
  • SLB
  • Gateway

Esempio di raccolta di log di diagnostica su richiesta

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

Funzionamento della raccolta dei log di diagnostica tramite PEP

Gli strumenti di diagnostica dell'hub di Azure Stack consentono di semplificare ed efficienza la raccolta dei log. Il diagramma seguente illustra il funzionamento degli strumenti di diagnostica:

Azure Stack Hub diagnostic tools workflow diagram

Agente di raccolta tracce

L'agente di raccolta tracce è abilitato per impostazione predefinita e viene eseguito continuamente in background per raccogliere tutti i log di Event Tracing for Windows (ETW) dai servizi componenti dell'hub di Azure Stack. I log ETW vengono archiviati in una condivisione locale comune con un limite di età di cinque giorni. Una volta raggiunto questo limite, i file meno recenti vengono eliminati man mano che vengono creati nuovi file. Le dimensioni massime predefinite consentite per ogni file sono pari a 200 MB. Ogni 2 minuti viene eseguito un controllo delle dimensioni e, se il file corrente è >= 200 MB, viene salvato e viene generato un nuovo file. Esiste anche un limite di 8 GB per le dimensioni totali del file generate per ogni sessione evento.

Get-AzureStackLog

Il cmdlet di PowerShell Get-AzureStackLog può essere usato per raccogliere i log da tutti i componenti in un ambiente hub di Azure Stack. Li salva in file ZIP in un percorso definito dall'utente. Se il team di supporto tecnico dell'hub di Azure Stack necessita dei log per risolvere un problema, potrebbe chiedere di eseguire Get-AzureStackLog.

Attenzione

Questi file di log possono contenere informazioni personali. Tenere presente questo valore prima di pubblicare pubblicamente tutti i file di log.

Di seguito sono riportati alcuni tipi di log di esempio raccolti:

  • Log di distribuzione dell'hub di Azure Stack
  • registri eventi di Windows
  • Log di panther
  • Log del cluster
  • Archiviazione log di diagnostica
  • Log ETW

Questi file vengono raccolti e salvati in una condivisione da Trace Collector. Get-AzureStackLog possono quindi essere usati per raccoglierli quando necessario.