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:- Creare un account di archiviazione, seguendo la procedura descritta in questo articolo.
- Aprire un'istanza del Azure Storage Explorer.
- Connettersi all'account di archiviazione creato nel passaggio 1.
- Passare a Contenitori BLOB in Servizi di archiviazione.
- Selezionare Crea un nuovo contenitore.
- Fare clic con il pulsante destro del mouse sul nuovo contenitore, quindi scegliere Recupera firma di accesso condiviso.
- Selezionare un'ora di inizio e ora di fine valida, a seconda dei requisiti.
- Per le autorizzazioni necessarie, selezionare Lettura, Scrittura e Elenco.
- Selezionare Crea.
- 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:
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.