Enviar logs de diagnóstico do Azure Stack Hub usando o PEP (ponto de extremidade privilegiado)

Para executar Get-AzureStackLog em um sistema integrado, você precisa ter acesso ao PEP (ponto de extremidade privilegiado). Aqui está um script de exemplo que você pode executar usando o PEP para coletar logs. Se você estiver cancelando uma coleção de logs em execução para iniciar uma nova, aguarde 5 minutos antes de iniciar a nova coleção de logs e insira 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
}

Exemplos

  • Coletar todos os logs de todas as funções:

    Get-AzureStackLog -OutputSharePath "<path>" -OutputShareCredential $cred
    
  • Coletar logs das funções VirtualMachines e BareMetal:

    Get-AzureStackLog -OutputSharePath "<path>" -OutputShareCredential $cred -FilterByRole VirtualMachines,BareMetal
    
  • Coletar logs das funções VirtualMachines e BareMetal com filtragem de data dos arquivos de log das últimas oito horas:

    Get-AzureStackLog -OutputSharePath "<path>" -OutputShareCredential $cred -FilterByRole VirtualMachines,BareMetal -FromDate (Get-Date).AddHours(-8)
    
  • Coletar logs das funções VirtualMachines e BareMetal com filtragem de data dos arquivos de log com período entre as últimas duas e oito horas:

    Get-AzureStackLog -OutputSharePath "<path>" -OutputShareCredential $cred -FilterByRole VirtualMachines,BareMetal -FromDate (Get-Date).AddHours(-8) -ToDate (Get-Date).AddHours(-2)
    
  • Coletar logs de implantações de locatário que executam clusters kubernetes (AKS Engine) autogerenciados no Azure Stack. Os logs de kubernetes devem ser armazenados em uma conta de armazenamento de locatário em um formato que permitirá que o intervalo de tempo de coleta seja aplicado a eles também.

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

    Por exemplo:

    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) 
    
  • Colete logs para os RPs de valor agregado. A sintaxe geral é:

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

    Para coletar logs para o RP de SQL:

    Get-AzureStackLog -FilterByResourceProvider SQLAdapter
    

    Para coletar logs para o RP de MySQL:

    Get-AzureStackLog -FilterByResourceProvider MySQLAdapter
    

    Para coletar logs para Hubs de Eventos:

    Get-AzureStackLog -FilterByResourceProvider eventhub
    

    Para coletar logs para o Azure Stack Edge:

    Get-AzureStackLog -FilterByResourceProvide databoxedge
    
  • Colete logs e armazene-os no contêiner de blobs Armazenamento do Azure especificado. A sintaxe geral para essa operação é a seguinte:

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

    Por exemplo:

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

    Observação

    Este procedimento é útil para carregar logs. Mesmo que você não tenha um compartilhamento SMB acessível ou acesso à Internet, você pode criar uma conta de armazenamento de blobs no Azure Stack Hub para transferir os logs e, em seguida, usar seu cliente para recuperar esses logs.

    Para gerar o token SAS para a conta de armazenamento, as seguintes permissões são necessárias:

    • Acesso ao serviço blob Armazenamento.
    • Acesso ao tipo de recurso de contêiner.

    Para gerar um valor de Uri SAS a ser usado para o -OutputSasUri parâmetro, siga estas etapas:

    1. Crie uma conta de armazenamento seguindo as etapas deste artigo.
    2. Abra uma instância do Gerenciador de Armazenamento do Azure.
    3. Conexão para a conta de armazenamento criada na etapa 1.
    4. Navegue até contêineres de blob nos Serviços Armazenamento.
    5. Selecione Criar um novo contêiner.
    6. Clique com o botão direito do mouse no novo contêiner e clique em Obter Assinatura de Acesso Compartilhado.
    7. Selecione uma hora de início e hora de término válidas, dependendo de seus requisitos.
    8. Para as permissões necessárias, selecione Leitura, Gravação e Lista.
    9. Selecione Criar.
    10. Você receberá uma Assinatura de Acesso Compartilhado. Copie a parte da URL e forneça-a ao -OutputSasUri parâmetro.

Considerações de parâmetro

  • Os parâmetros OutputSharePath e OutputShareCredential são usados para armazenar logs em um local especificado pelo usuário.

  • Os parâmetros FromDate e ToDate podem ser usados para coletar logs em um determinado período de tempo. Se esses parâmetros não forem especificados, os logs serão coletados por padrão nas últimas quatro horas.

  • Use o parâmetro FilterByNode para filtrar logs pelo nome do computador. Por exemplo:

    Get-AzureStackLog -OutputSharePath "<path>" -OutputShareCredential $cred -FilterByNode azs-xrp01
    
  • Use o parâmetro FilterByLogType para filtrar logs por tipo. Você pode optar por filtrar por Arquivo, Compartilhamento ou WindowsEvent. Por exemplo:

    Get-AzureStackLog -OutputSharePath "<path>" -OutputShareCredential $cred -FilterByLogType File
    
  • Você pode usar o parâmetro TimeOutInMinutes para definir o tempo limite para a coleção de logs. Ele é definido como 150 (2,5 horas) por padrão.

  • A coleção de logs de arquivo de despejo está desabilitada por padrão. Para habilitá-lo, use o parâmetro de comutador IncludeDumpFile .

  • Atualmente, você pode usar o parâmetro FilterByRole para filtrar a coleção de logs pelas seguintes funções:

ACS

ACSBlob

ACSDownloadService

ACSFabric

ACSFrontEnd

ACSMetrics

ACSMigrationService

ACSMonitoringService

ACSSettingsService

ACSTableMaster

ACSTableServer

ACSWac

ADFS

ApplicationController

ASAppGateway

AzureBridge

AzureMonitor

BareMetal

BRP

AC

CacheService

Computação

CPI

CRP

DeploymentMachine

DiskRP

Domínio

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

SRP

Armazenamento

StorageController

URP

SupportBridgeController

SupportRing

SupportRingServices

SupportBridgeRP

UsageBridge

Máquinas Virtuais

WAS

WASPUBLIC

Considerações adicionais sobre logs de diagnóstico

  • O comando leva algum tempo para ser executado com base em quais funções os logs estão coletando. Os fatores de contribuição também incluem a duração do tempo especificada para a coleção de logs e o número de nós no ambiente do Azure Stack Hub.

  • Conforme a coleção de logs é executada, verifique a nova pasta criada no parâmetro OutputSharePath especificado no comando.

  • Cada função tem seus logs dentro de arquivos zip individuais. Dependendo do tamanho dos logs coletados, uma função pode ter seus logs divididos em vários arquivos zip. Para essa função, se você quiser que todos os arquivos de log descompactados em uma única pasta, use uma ferramenta que possa descompactar em massa. Selecione todos os arquivos compactados para a função e selecione extrair aqui. Todos os arquivos de log para essa função serão descompactados em uma única pasta mesclada.

  • Um arquivo chamado Get-AzureStackLog_Output.log também é criado na pasta que contém os arquivos de log compactados. Esse arquivo é um log da saída de comando, que pode ser usado para solucionar problemas durante a coleta de logs. Às vezes, o arquivo de log inclui PS>TerminatingError entradas que podem ser ignoradas com segurança, a menos que os arquivos de log esperados estejam ausentes após a execução da coleção de logs.

  • Para investigar uma falha específica, os logs podem ser necessários de mais de um componente.

    • Os logs de sistema e de eventos para todas as VMs de infraestrutura são coletados na função VirtualMachines .
    • Os logs de sistema e de eventos para todos os hosts são coletados na função BareMetal .
    • Os logs de eventos do cluster de failover e do Hyper-V são coletados na função Armazenamento.
    • Os logs do ACS são coletados nas funções Armazenamento e ACS.

Observação

Os limites de tamanho e idade são impostos nos logs coletados, pois é essencial garantir a utilização eficiente do espaço de armazenamento e evitar ser inundado com logs. No entanto, ao diagnosticar um problema, às vezes você precisa de logs que não existem mais devido a esses limites. Portanto, é altamente recomendável descarregar seus logs para um espaço de armazenamento externo (uma conta de armazenamento no Azure, um dispositivo de armazenamento local adicional, etc.) a cada 8 a 12 horas e mantê-los lá por 1 a 3 meses, dependendo de suas necessidades. Você também deve garantir que esse local de armazenamento seja criptografado.

Invoke-AzureStackOnDemandLog

Você pode usar o cmdlet Invoke-AzureStackOnDemandLog para gerar logs sob demanda para determinadas funções (consulte a lista no final desta seção). Os logs gerados por esse cmdlet não estão presentes por padrão no pacote de log recebido quando você executa o cmdlet Get-AzureStackLog . Além disso, é recomendável coletar esses logs somente quando solicitado pela equipe de suporte da Microsoft.

Atualmente, você pode usar o -FilterByRole parâmetro para filtrar a coleção de logs pelas seguintes funções:

  • OEM
  • NC
  • SLB
  • Gateway

Exemplo de coleta de logs de diagnóstico sob demanda

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

Como funciona a coleção de logs de diagnóstico usando o PEP

As ferramentas de diagnóstico do Azure Stack Hub ajudam a tornar a coleta de logs fácil e eficiente. O diagrama a seguir mostra como funcionam as ferramentas de diagnóstico:

Azure Stack Hub diagnostic tools workflow diagram

Coletor de Rastreamento

O Coletor de Rastreamento é habilitado por padrão e é executado continuamente em segundo plano para coletar todos os logs do ETW (Rastreamento de Eventos para Windows) dos serviços de componente do Azure Stack Hub. Os logs etw são armazenados em um compartilhamento local comum com um limite de idade de cinco dias. Depois que esse limite é atingido, os arquivos mais antigos são excluídos à medida que novos são criados. O tamanho máximo padrão permitido para cada arquivo é de 200 MB. Uma verificação de tamanho acontece a cada 2 minutos e, se o arquivo atual for >= 200 MB, ele será salvo e um novo arquivo será gerado. Há também um limite de 8 GB no tamanho total do arquivo gerado por sessão de evento.

Get-AzureStackLog

O cmdlet do PowerShell Get-AzureStackLog pode ser usado para coletar logs de todos os componentes em um ambiente do Azure Stack Hub. Ele os salva em arquivos zip em um local definido pelo usuário. Se a equipe de suporte técnico do Azure Stack Hub precisar de seus logs para ajudar a solucionar um problema, eles poderão solicitar que você execute o Get-AzureStackLog.

Cuidado

Esses arquivos de log podem conter informações de identificação pessoal (PII). Leve isso em conta antes de postar publicamente os arquivos de log.

Veja a seguir alguns tipos de log de exemplo que são coletados:

  • Logs de implantação do Azure Stack Hub
  • Logs de eventos do Windows
  • Logs do Panthers
  • Logs de cluster
  • logs de diagnóstico Armazenamento
  • Logs do ETW

Esses arquivos são coletados e salvos em um compartilhamento pelo Coletor de Rastreamento. Get-AzureStackLog podem ser usados para recolhê-los quando necessário.