Logs de diagnóstico - Rede de Distribuição de Conteúdo do Microsoft Azure

Com os logs de diagnóstico do Azure, é possível exibir análises de núcleo e salvá-las em um ou mais destinos, incluindo:

  • Conta de Armazenamento do Azure
  • Espaço de trabalho do Log Analytics
  • Hubs de eventos do Azure

Este recurso está disponível em pontos de extremidade da rede de distribuição de conteúdo para todos os tipos de preço.

Os logs de diagnóstico permitem que você exporte métricas de uso básicas do ponto de extremidade da rede de distribuição de conteúdo para uma variedade de origens para que possa consumi-las de forma personalizada. Por exemplo, você pode realizar os seguintes tipos de exportação de dados:

  • Exportar os dados para o armazenamento de blobs, exportar para CSV e gerar grafos no Excel.
  • Exportar dados para Hubs de Eventos e correlacionar com os dados de outros serviços do Azure.
  • Exportar dados para logs do Azure Monitor e exibir dados em seu próprio workspace do Log Analytics

Um perfil da Rede de Distribuição de Conteúdo do Azure é necessário para as etapas a seguir. Consulte Criar um perfil e um ponto de extremidade da Rede de Distribuição de Conteúdo do Azure antes de continuar.

Ativar o registro em log com o portal do Azure

Siga estas etapas para habilitar o registro em log para o ponto de extremidade da Rede de Distribuição de Conteúdo do Azure:

  1. Entre no portal do Azure.

  2. No portal do Azure, navegue até Todos os recursos>your-cdn-profile.

  3. Selecione o ponto de extremidade da rede de distribuição de conteúdo para o qual você deseja habilitar os logs de diagnóstico:

    Captura de tela da seleção do ponto de extremidade da rede de distribuição de conteúdo.

  4. Selecione Logs de diagnóstico na seção Monitoramento:

    Captura de tela do botão de logs de diagnóstico no menu de monitoramento.

Habilitar registro em log com o Armazenamento do Azure

Para usar uma conta de armazenamento para armazenar os logs, siga estas etapas:

Observação

Uma conta do Azure é necessária para concluir estas etapas. Consulte: Criar uma conta de Armazenamento do Microsoft Azure para obter mais informações.

  1. Para Nome da configuração de diagnóstico, digite um nome para as configurações do log de diagnóstico.

  2. Selecione arquivo para uma conta de armazenamento, em seguida, selecione CoreAnalytics.

  3. Para retenção (dias), escolha o número de dias de retenção. Uma retenção de zero dias armazena os logs indefinidamente.

  4. Selecione a assinatura e a conta de armazenamento para os logs.

    Logs de diagnóstico - Armazenamento.

  5. Selecione Salvar.

Enviar para o Log Analytics

Para usar o Log Analytics para armazenar os logs, siga estas etapas:

Observação

Um workspace do Log Analytics é necessário para concluir estas etapas. Consulte: Criar um espaço de trabalho do Log Analytics no portal do Azure para obter mais informações.

  1. Para Nome da configuração de diagnóstico, digite um nome para as configurações do log de diagnóstico.

  2. Selecione Enviar para Log Analytics e, em seguida, selecione CoreAnalytics.

  3. Selecione a assinatura e o workspace do Log Analytics.

    Logs de diagnóstico - Log Analytics.

  4. Selecione Salvar.

Transmitir para um hub de eventos

Para usar um hub de eventos para os logs, siga estas etapas:

Observação

Um hub de eventos é necessário para concluir estas etapas. Consulte: Início Rápido: Criar um hub de eventos usando portal do Azure para obter mais informações.

  1. Para Nome da configuração de diagnóstico, digite um nome para as configurações do log de diagnóstico.

  2. Selecione Transmitir para um hub de eventos e, em seguida, selecione CoreAnalytics.

  3. Selecione a assinatura e o namespace do hub de eventos para os logs.

    Logs de diagnóstico - Hub de eventos.

  4. Selecione Salvar.

Habilitar o registro em log com o PowerShell

O exemplo a seguir mostra como habilitar os Logs de Diagnóstico por meio dos Cmdlets do Azure PowerShell.

Observação

Recomendamos que você use o módulo Az PowerShell do Azure para interagir com o Azure. Confira Instalar o Azure PowerShell para começar. Para saber como migrar para o módulo Az PowerShell, confira Migrar o Azure PowerShell do AzureRM para o Az.

Habilitar os logs de diagnóstico em uma conta de armazenamento

  1. Entre no Azure PowerShell:

    Connect-AzAccount 
    
  2. Para ativar os Logs de Diagnóstico em uma conta de Armazenamento, insira os comandos. Substitua as variáveis com seus próprios valores:

    $rsg = <your-resource-group-name>
    $cdnprofile = <your-cdn-profile-name>
    $cdnendpoint = <your-cdn-endpoint-name>
    $storageacct = <your-storage-account-name>
    $diagname = <your-diagnostic-setting-name>
    
    $cdn = Get-AzCdnEndpoint -ResourceGroupName $rsg -ProfileName $cdnprofile -EndpointName $cdnendpoint
    
    $storage = Get-AzStorageAccount -ResourceGroupName $rsg -Name $storageacct
    
    Set-AzDiagnosticSetting -Name $diagname -ResourceId $cdn.id -StorageAccountId $storage.id -Enabled $true -Categories CoreAnalytics
    

Habilitar logs de diagnóstico para o workspace do Log Analytics

  1. Entre no Azure PowerShell:

    Connect-AzAccount 
    
  2. Para habilitar os Logs de Diagnóstico para um workspace do Log Analytics, insira estes comandos. Substitua as variáveis com seus próprios valores:

    $rsg = <your-resource-group-name>
    $cdnprofile = <your-cdn-profile-name>
    $cdnendpoint = <your-cdn-endpoint-name>
    $workspacename = <your-log-analytics-workspace-name>
    $diagname = <your-diagnostic-setting-name>
    
    $cdn = Get-AzCdnEndpoint -ResourceGroupName $rsg -ProfileName $cdnprofile -EndpointName $cdnendpoint
    
    $workspace = Get-AzOperationalInsightsWorkspace -ResourceGroupName $rsg -Name $workspacename
    
    Set-AzDiagnosticSetting -Name $diagname -ResourceId $cdn.id -WorkspaceId $workspace.ResourceId -Enabled $true -Categories CoreAnalytics
    

Habilitar logs de diagnóstico para o namespace do hub de eventos

  1. Entre no Azure PowerShell:

    Connect-AzAccount 
    
  2. Para habilitar os Logs de Diagnóstico para um workspace do Log Analytics, insira estes comandos. Substitua as variáveis por seus próprios valores:

    $rsg = <your-resource-group-name>
    $cdnprofile = <your-cdn-profile-name>
    $cdnendpoint = <your-cdn-endpoint-name>
    $eventhubname = <your-event-hub-namespace-name>
    $diagname = <your-diagnostic-setting-name>
    
    $cdn = Get-AzCdnEndpoint -ResourceGroupName $rsg -ProfileName $cdnprofile -EndpointName $cdnendpoint
    
    Set-AzDiagnosticSetting -Name $diagname -ResourceId $cdn.id -EventHubName $eventhubname -Enabled $true -Categories CoreAnalytics
    

Consumir logs de diagnóstico do Armazenamento do Azure

Esta seção descreve o esquema da análise de núcleo da rede de distribuição de conteúdo, a organização em uma conta de Armazenamento do Microsoft Azure e oferece um exemplo de código para baixar os logs em um arquivo CSV.

Usar o Gerenciador de Armazenamento do Microsoft Azure

Para baixar a ferramenta, consulte Gerenciador de Armazenamento do Azure. Depois de baixar e instalar o software, configure-o para usar a mesma conta de Armazenamento do Microsoft Azure que foi configurada como um destino para os logs de diagnóstico da rede de distribuição de conteúdo.

  1. Abra o Gerenciador de Armazenamento do Microsoft Azure
  2. Localize a conta de armazenamento
  3. Expanda o nó Blob Containers sob esta conta de armazenamento.
  4. Selecione o contêiner denominado insights-logs-coreanalytics .
  5. Os resultados aparecem no painel direito, começando com o primeiro nível, como resourceId = . Continue selecionando cada nível até encontrar o arquivo PT1H.json. Para obter uma explicação do caminho, confira Formato de caminho de blob.
  6. Cada arquivo de blob PT1H.json representa os logs de análise por uma hora para um ponto de extremidade da rede de distribuição de conteúdo ou seu domínio personalizado.
  7. O esquema do conteúdo desse arquivo JSON é descrito na seção Esquema dos logs de análise de núcleo.

Formato de caminho de blob

Os logs de análise de núcleo são gerados a cada hora e os dados são coletados e armazenados dentro de um único blob do Azure como um payload JSON. A ferramenta Gerenciador de armazenamento interpreta '/' como um separador de diretório e mostra a hierarquia. O caminho para o blob do Azure é exibido como se houvesse uma estrutura hierárquica e representa o nome do blob. O nome do blob segue a convenção de nomenclatura abaixo:

resourceId=/SUBSCRIPTIONS/{Subscription Id}/RESOURCEGROUPS/{Resource Group Name}/PROVIDERS/MICROSOFT.CDN/PROFILES/{Profile Name}/ENDPOINTS/{Endpoint Name}/ y=/m=/d=/h=/m=/PT1H.json

Descrição dos campos:

Valor Descrição
ID da assinatura ID da assinatura do Azure no formato GUID (identificador global exclusivo).
Nome do Grupo de Recursos Nome do grupo de recursos ao qual os recursos da rede de distribuição de conteúdo pertencem.
Nome do Perfil Nome do perfil da rede de distribuição de conteúdo
Nome do Ponto de Extremidade Nome do ponto de extremidade da rede de distribuição de conteúdo
Year Representação de quatro dígitos do ano, por exemplo, 2017
Mês Representação de dois dígitos do número do mês. 01=janeiro... 12=dezembro
Dia Representação de dois dígitos do dia do mês
PT1H.json Arquivo JSON real em que os dados da análise são armazenados

Exportando os dados de análise de núcleo para um arquivo CSV

Para acessar a análise de núcleo, o exemplo de código de uma ferramenta é fornecido. Esta ferramenta permite fazer o download do arquivos JSON em um formato de arquivo simples separado por vírgula, que pode ser usado para criar gráficos ou outras agregações.

Aqui está como você pode usar a ferramenta:

  1. Visite o GitHub: https://github.com/Azure-Samples/azure-cdn-samples/tree/master/CoreAnalytics-ExportToCsv
  2. Baixe o código.
  3. Siga as instruções a serem compiladas e configuradas.
  4. Execute a ferramenta.
  5. O arquivo CSV resultante mostra os dados de análise em uma hierarquia simples.

Atrasos em dados de log

A tabela a seguir mostra atrasos em dados de log para CDN Standard do Azure da Microsoft e CDN Standard/Premium do Azure do Edgio.

Atrasos em dados de log da Microsoft Atrasos em dados de log da Edgio
Atrasado em 1 hora. Atrasado em 1 hora e pode demorar até 2 horas para começar a aparecer após a conclusão da propagação do ponto de extremidade.

Tipos de log de diagnóstico para análise de núcleo da rede de distribuição de conteúdo

Atualmente, a Microsoft oferece somente logs de análise de núcleo, que contém métricas que mostram estatísticas de respostas HTTP e estatísticas de saída, conforme vistas dos POPs/bordas da rede de distribuição de conteúdo.

Detalhes das métricas da análise de núcleo

A tabela a seguir mostra uma lista de métricas disponíveis nos logs de análise de núcleo para:

  • CDN Standard do Azure da Microsoft
  • CDN do Azure Standard/Premium da Edgio

Nem todas as métricas estão disponíveis de todos os provedores, embora essas diferenças sejam mínimas. A tabela também mostra se uma determinada métrica está disponível de um provedor. As métricas estão disponíveis somente para os pontos de extremidade da rede que têm tráfego neles.

Métrica Descrição Microsoft Edgio
RequestCountTotal Número total de ocorrências de solicitação durante esse período. Sim Sim
RequestCountHttpStatus2xx Contagem de todas as solicitações que resultaram em um código HTTP 2xx (por exemplo, 200, 202). Sim Sim
RequestCountHttpStatus3xx Contagem de todas as solicitações que resultaram em um código HTTP 3xx (por exemplo, 300, 302). Sim Sim
RequestCountHttpStatus4xx Contagem de todas as solicitações que resultaram em um código HTTP 4xx (por exemplo, 400, 404). Sim Sim
RequestCountHttpStatus5xx Contagem de todas as solicitações que resultaram em um código HTTP 5xx (por exemplo, 500, 504). Sim Sim
RequestCountHttpStatusOthers Contagem de todos os outros códigos HTTP (fora de 2xx a 5xx). Sim Sim
RequestCountHttpStatus200 Contagem de todas as solicitações que resultaram em um código de resposta HTTP 200. Sim Não
RequestCountHttpStatus206 Contagem de todas as solicitações que resultaram em um código de resposta HTTP 206. Sim Não
RequestCountHttpStatus302 Contagem de todas as solicitações que resultaram em um código de resposta HTTP 302. Sim Não
RequestCountHttpStatus304 Contagem de todas as solicitações que resultaram em um código de resposta HTTP 304. Sim Não
RequestCountHttpStatus404 Contagem de todas as solicitações que resultaram em um código de resposta HTTP 404. Sim Não
RequestCountCacheHit Contagem de todas as solicitações que resultaram em um hit do Cache. O ativo foi servido diretamente do POP para o cliente. Sim Yes
RequestCountCacheMiss Contagem de todas as solicitações que resultaram em uma Perda do Cache. Uma perda no cache significa que o recurso não foi encontrado no POP mais próximo do cliente e, portanto, foi recuperado da origem. Sim Yes
RequestCountCacheNoCache Contagem de todas as solicitações para um ativo que são impedidas de serem armazenadas em cache por causa de uma configuração do usuário na borda. Sim Yes
RequestCountCacheUncacheable Contagem de todas as solicitações para ativos que são impedidos de serem armazenados em cache pelos cabeçalhos de Controle de Cache e de Expiração do ativo. Essa contagem indica que não deve ser armazenado em cache em um POP ou pelo cliente HTTP. Sim Yes
RequestCountCacheOthers Contagem de todas as solicitações com o status de cache não cobertas por métricas listadas anteriormente. No Sim
EgressTotal Transferência de dados de saída em GB Sim Sim
EgressHttpStatus2xx Transferência de dados de saída* para respostas com códigos de status HTTP 2xx em GB. Sim Yes
EgressHttpStatus3xx Transferência de dados de saída para respostas com códigos de status HTTP 3xx em GB. Sim Yes
EgressHttpStatus4xx Transferência de dados de saída para respostas com códigos de status HTTP 4xx em GB. Sim Yes
EgressHttpStatus5xx Transferência de dados de saída para respostas com códigos de status HTTP 5xx em GB. Sim Yes
EgressHttpStatusOthers Transferência de dados de saída para respostas com outros códigos de status HTTP em GB. Sim Yes
EgressCacheHit Transferência de dados de saída para respostas distribuídas diretamente do cache da rede de distribuição de conteúdo nos POPs/Bordas da rede de distribuição de conteúdo. Sim Yes
EgressCacheMiss. Transferência de dados de saída de respostas que não foram encontradas no servidor POP mais próximo e foram recuperadas do servidor de origem. Sim Yes
EgressCacheNoCache Transferência de dados de saída para ativos que são impedidos de serem armazenados em cache devido a uma configuração do usuário na borda. Sim Yes
EgressCacheUncacheable Transferência de dados de saída para ativos que são impedidos de serem armazenados em cache pelos cabeçalhos de Controle de Cache e/ou de Expiração do ativo. Indica que não deve ser armazenado em cache em um POP ou pelo cliente HTTP. Sim Yes
EgressCacheOthers Transferências de dados de saída para outros cenários de cache. Não Sim

*A transferência de dados de saída refere-se ao tráfego distribuído dos servidores POP da rede de distribuição de conteúdo para o cliente.

Esquema dos logs de análise de núcleo

Todos os logs são armazenados em formato JSON e cada entrada tem campos de cadeia de caracteres de acordo com o esquema a seguir:

    "records": [
        {
            "time": "2017-04-27T01:00:00",
            "resourceId": "<ARM Resource Id of the CDN Endpoint>",
            "operationName": "Microsoft.Cdn/profiles/endpoints/contentDelivery",
            "category": "CoreAnalytics",
            "properties": {
                "DomainName": "<Name of the domain for which the statistics is reported>",
                "RequestCountTotal": integer value,
                "RequestCountHttpStatus2xx": integer value,
                "RequestCountHttpStatus3xx": integer value,
                "RequestCountHttpStatus4xx": integer value,
                "RequestCountHttpStatus5xx": integer value,
                "RequestCountHttpStatusOthers": integer value,
                "RequestCountHttpStatus200": integer value,
                "RequestCountHttpStatus206": integer value,
                "RequestCountHttpStatus302": integer value,
                "RequestCountHttpStatus304": integer value,
                "RequestCountHttpStatus404": integer value,
                "RequestCountCacheHit": integer value,
                "RequestCountCacheMiss": integer value,
                "RequestCountCacheNoCache": integer value,
                "RequestCountCacheUncacheable": integer value,
                "RequestCountCacheOthers": integer value,
                "EgressTotal": double value,
                "EgressHttpStatus2xx": double value,
                "EgressHttpStatus3xx": double value,
                "EgressHttpStatus4xx": double value,
                "EgressHttpStatus5xx": double value,
                "EgressHttpStatusOthers": double value,
                "EgressCacheHit": double value,
                "EgressCacheMiss": double value,
                "EgressCacheNoCache": double value,
                "EgressCacheUncacheable": double value,
                "EgressCacheOthers": double value,
            }
        }

    ]
}

Em que time representa a hora de início do limite da hora pela qual as estatísticas são relatadas. Uma métrica não compatível com um provedor da rede de distribuição de conteúdo, em vez de um valor duplo ou inteiro, resulta em um valor nulo. Esse valor nulo indica a ausência de uma métrica e isso é diferente de um valor de 0. Há um conjunto dessas métricas por domínio configurado no ponto de extremidade.

Propriedades de exemplo:

{
     "DomainName": "azurecdntest.azureedge.net",
     "RequestCountTotal": 480,
     "RequestCountHttpStatus2xx": 480,
     "RequestCountHttpStatus3xx": 0,
     "RequestCountHttpStatus4xx": 0,
     "RequestCountHttpStatus5xx": 0,
     "RequestCountHttpStatusOthers": 0,
     "RequestCountHttpStatus200": 480,
     "RequestCountHttpStatus206": 0,
     "RequestCountHttpStatus302": 0,
     "RequestCountHttpStatus304": 0,
     "RequestCountHttpStatus404": 0,
     "RequestCountCacheHit": null,
     "RequestCountCacheMiss": null,
     "RequestCountCacheNoCache": null,
     "RequestCountCacheUncacheable": null,
     "RequestCountCacheOthers": null,
     "EgressTotal": 0.09,
     "EgressHttpStatus2xx": null,
     "EgressHttpStatus3xx": null,
     "EgressHttpStatus4xx": null,
     "EgressHttpStatus5xx": null,
     "EgressHttpStatusOthers": null,
     "EgressCacheHit": null,
     "EgressCacheMiss": null,
     "EgressCacheNoCache": null,
     "EgressCacheUncacheable": null,
     "EgressCacheOthers": null
}

Mais recursos