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). Di seguito è riportato uno script di esempio che è possibile eseguire usando PEP per raccogliere i log. Se si annulla una raccolta log in esecuzione per avviare una nuova, attendere 5 minuti Prima di avviare la nuova raccolta 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 filtro di data per ottenere 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 filtro di data per ottenere i file di log relativi al periodo compreso tra le ultime 8 ore e le ultime 2 ore:

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

    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 risorse a valore aggiunto. La sintassi generale è:

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

    Per raccogliere i log per il provider di risorse SQL:

    Get-AzureStackLog -FilterByResourceProvider SQLAdapter
    

    Per raccogliere i log per il provider di risorse MySQL:

    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 di Archiviazione di Azure specificato. 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 dispone di una condivisione SMB accessibile o 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 di archiviazione BLOB.
    • Accesso al tipo di risorsa contenitore.

    Per generare un valore Uri sas 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. Connettersi all'account di archiviazione creato nel passaggio 1.
    4. Passare a Contenitori BLOB in Servizi di archiviazione.
    5. Selezionare Crea un nuovo contenitore.
    6. Fare clic con il pulsante destro del mouse sul nuovo contenitore, quindi scegliere Recupera firma di accesso condiviso.
    7. Selezionare un'ora di inizio e ora di fine valida, a seconda dei requisiti.
    8. Per le autorizzazioni necessarie, selezionare Lettura, Scrittura e 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 sono specificati, per impostazione predefinita i log verranno raccolti per le ultime quattro ore.

  • 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
    
  • Usare il parametro FilterByLogType per filtrare i log in base al tipo. È possibile scegliere di applicare un filtro in base al file, alla condivisione o a un evento Windows. Ad esempio:

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

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

  • Attualmente è possibile usare il parametro FilterByRole per filtrare la raccolta 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

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

  • Durante l'esecuzione della raccolta 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, un ruolo può avere i log suddivisi in più file zip. Per tale ruolo, se si vuole avere tutti i file di log non compressi 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 scollegati 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 di log. A volte 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 log.

  • Per analizzare un errore specifico, i log potrebbero essere necessari da più di un componente.

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

Nota

I limiti di dimensione e età vengono applicati nei log raccolti in quanto è essenziale per garantire un utilizzo efficiente dello spazio di archiviazione e per evitare l'inondazione con i log. Tuttavia, quando si diagnostica un problema, a volte sono necessari log che non esistono più a causa di questi limiti. Pertanto, è consigliabile scaricare i 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 tenerli lì per 1 - 3 mesi, a seconda dei requisiti. È anche necessario assicurarsi che questa posizione di archiviazione sia crittografata.

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 visualizzato quando si esegue il cmdlet Get-AzureStackLog . È inoltre consigliabile raccogliere questi log solo quando richiesto dal team di supporto Microsoft.

Attualmente è possibile usare il parametro per filtrare la -FilterByRole raccolta log dai 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 di log di diagnostica con 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:

Diagramma del flusso di lavoro degli strumenti di diagnostica dell'hub di Azure Stack

Agente di raccolta tracce

L'agente di raccolta traccia è abilitato per impostazione predefinita ed esegue continuamente in background per raccogliere tutti i log di Traccia eventi per 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 200 MB. Un controllo delle dimensioni viene eseguito ogni 2 minuti 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 generato 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 nei 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, può chiedere di eseguire Get-AzureStackLog.

Attenzione

Questi file di log possono contenere informazioni personali (PII). Tenere presente questo problema 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
  • Log eventi di Windows
  • Log panther
  • Log del cluster
  • Log di diagnostica dell'archiviazione
  • Log ETW

Questi file vengono raccolti e salvati in una condivisione dall'agente di raccolta tracce. Get-AzureStackLog può quindi essere usato per raccoglierli quando necessario.