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 log em execução para iniciar uma nova, aguarde 5 minutos antes de iniciar a nova coleta de log 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 logs para todas as funções:

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

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

    Get-AzureStackLog -OutputSharePath "<path>" -OutputShareCredential $cred -FilterByRole VirtualMachines,BareMetal -FromDate (Get-Date).AddHours(-8)
    
  • Colete logs de funções VirtualMachines e BareMetal, com filtragem de data para arquivos de log para o período entre 8 horas atrás e 2 horas atrás:

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

    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 value-add. A sintaxe geral é:

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

    Para coletar logs para SQL RP:

    Get-AzureStackLog -FilterByResourceProvider SQLAdapter
    

    Para coletar logs para o RP do MySQL:

    Get-AzureStackLog -FilterByResourceProvider MySQLAdapter
    

    Para coletar logs para Hubs de Eventos:

    Get-AzureStackLog -FilterByResourceProvider eventhub
    

    Para coletar logs para Azure Stack Edge:

    Get-AzureStackLog -FilterByResourceProvide databoxedge
    
  • Colete logs e armazene-os no contêiner de blob Armazenamento 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

    Esse procedimento é útil para carregar logs. Mesmo se você não tiver um compartilhamento SMB acessível ou acesso à Internet, poderá criar uma conta de armazenamento de blob 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 Blob.
    • Acesso ao tipo de recurso de contêiner.

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

    1. Crie uma conta de armazenamento seguindo as etapas neste 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 Blobno Armazenamento Services.
    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érminoválidas, dependendo de seus requisitos.
    8. Para as permissões necessárias, selecione Ler,Gravare Listar.
    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 FromDatee ToDate podem ser usados para coletar logs para um determinado período de tempo. Se esses parâmetros não são especificados, os logs são coletados nas últimas quatro horas por padrão.

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

  • A coleta de log de arquivo de despejo está desabilitada por padrão. Para habilita-lo, use o parâmetro de opção IncludeDumpFile.

  • No momento, você pode usar o parâmetro FilterByRole para filtrar a coleta de log pelas seguintes funções:

ACS

ACSBlob

ACSDownloadService

ACSFabric

ACSFrontEnd

ACSMetrics

ACSMigrationService

ACSMonitoringService

ACSSettingsService

ACSTableMaster

ACSTableServer

ACSWac

ADFS

ApplicationController

ASAppGateway

AzureBridge

AzureMonitor

BareMetal

BRP

CA

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 de tempo especificada para a coleta de log e os números de nós no ambiente Azure Stack Hub dados.

  • Conforme a coleta de log é executado, 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 ter todos os arquivos de log descomplados em uma única pasta, use uma ferramenta que possa descompocar em massa. Select all os arquivos recortados para a função e selecione extrair aqui. Todos os arquivos de log para essa função serão desacortados em uma única pasta mesclada.

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

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

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

Observação

Os limites de tamanho e idade são aplicados nos logs coletados, pois é essencial garantir a utilização eficiente do espaço de armazenamento e evitar a inundação 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 que você descarrega os 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 mantenha-os lá por 1 a 3 meses, dependendo de seus requisitos. 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 coletar esses logs somente quando solicitado pela equipe de suporte da Microsoft.

No momento, você pode usar o -FilterByRole parâmetro para filtrar a coleta de log 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 coleta de log de diagnóstico usando o PEP

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

Azure Stack Hub diagnostic tools workflow diagram

Coletor de Rastreamentos

O Coletor de Rastreamentos é habilitado por padrão e é executado continuamente em segundo plano para coletar todos os logs de ETW (Rastreamento de Eventos para Windows) de Azure Stack Hub componentes. Os logs etw são armazenados em um compartilhamento local comum com um limite de idade de cinco dias. Quando 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 ocorre a cada 2 minutos e, se o arquivo atual for = 200 MB, ele será salvo e um > novo arquivo será gerado. Também há 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 Azure Stack Hub ambiente. Ele os salva em arquivos zip em um local definido pelo usuário. Se a Azure Stack Hub de suporte técnico precisar de seus logs para ajudar a solucionar um problema, ela poderá 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 todos os arquivos de log.

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

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

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