Compartilhar via


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

  • Colete todos os registros para 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 do 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 em seu 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 de Armazenamento de Blobs.
    • 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. Conecte-se à conta de armazenamento criada na etapa 1.
    4. Navegue até Contêineres de Blob nos Serviços de 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álida, dependendo de seus requisitos.
    8. Para as permissões necessárias, selecione Leitura, Gravação e Lista.
    9. Selecione Criar.
    10. Você obterá uma Assinatura de Acesso Compartilhado. Copie a parte da URL e forneça-a ao -OutputSasUri parâmetro.

Considerações sobre parâmetros

  • 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 coleta de logs. Ele é definido como 150 (2,5 horas) por padrão.

  • A coleta de logs de arquivos de despejo está desabilitada por padrão. Para habilitá-lo, use o parâmetro de opção 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

Serviço de Configurações ACS

ACSTableMaster

ACSTableServer

ACSWac

ADFS

ApplicationController

ASAppGateway

AzureBridge

AzureMonitor

BareMetal

BRP

CA

CacheService

Computação

IDC

CRP

DeploymentMachine

DiskRP

Domínio

ECE

EventAdminRP

EventRP

ExternalDNS

FabricRing

FabricRingServices

FirstTierAggregationService

FRP

Porta de entrada

Monitoramento de Saúde

HintingServiceV2

HRP

IBC

InfraServiceController

KeyVaultAdminResourceProvider

KeyVaultControlPlane

KeyVaultDataPlane

KeyVaultInternalControlPlane

KeyVaultInternalDataPlane

KeyVaultNamingService

MDM

MetricsAdminRP

MetricsRP

MetricsServer

MetricsStoreService

MonAdminRP

MonRP

NC

NonPrivilegedAppGateway

NRP

OboService

OEM

OnboardRP

PXE

CoordenadorDeServiçoDeConsulta

QueryServiceWorker

SeedRing

SeedRingServices

SLB

SQL

SRP

Armazenamento

Controlador de Armazenamento

URP

SupportBridgeController

SupportRing

SupportRingServices

SupportBridgeRP

UsageBridge

VirtualMachines

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 que contribuem também incluem a duração do tempo especificada para a coleta 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 tarefa, se você quiser ter todos os arquivos de log descompactados em uma única pasta, use uma ferramenta que consiga descompactar em massa. Selecione todos os arquivos compactados referentes ao cargo e selecione extrair aqui. Todos os arquivos de log dessa 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 do 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 do sistema e de eventos para todos os hosts são coletados na função BareMetal .
    • Os logs de eventos de cluster de failover e de Hyper-V são coletados na função Armazenamento.
    • Os logs do ACS são coletados nas funções de 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 uma enxurrada de 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 que você recebe ao executar o cmdlet Get-AzureStackLog . Além disso, é recomendável que você colete 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
  • Porta de entrada

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 coleta 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 as ferramentas de diagnóstico funcionam:

Diagrama de fluxo de trabalho das ferramentas de diagnóstico do Azure Stack Hub

Coletor de Rastreamentos

O Coletor de Rastreamento é habilitado por padrão e é executado continuamente em segundo plano para coletar todos os logs de ETW (Rastreamento de Eventos para Windows) dos serviços de componente do Azure Stack Hub. Os logs do ETW são armazenados em um compartilhamento local comum, com um limite de retenção 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 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
  • Panther Logs
  • Logs de cluster
  • Logs de diagnóstico de armazenamento
  • Logs do ETW

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