Tutorial: Ingerir e consultar dados de monitoramento no Azure Data Explorer

Este tutorial ensinará você a ingerir dados dos logs de diagnóstico e de atividades em um cluster do Azure Data Explorer sem nenhuma codificação. Com esse método de ingestão simples, você poderá começar a consultar o Azure Data Explorer rapidamente para análise de dados.

Neste tutorial, você aprenderá como:

  • Crie tabelas e mapeamento de ingestão em um banco de dados do Azure Data Explorer.
  • Formate os dados ingeridos usando uma política de atualização.
  • Crie um hub de eventos e conecte-o ao Azure Data Explorer.
  • Transmita dados para um hub de eventos dos logs e métricas de diagnóstico do Azure Monitor e dos logs de atividades.
  • Consulte os dados ingeridos usando o Azure Data Explorer.

Observação

Crie todos os recursos na mesma localização ou região do Azure.

Pré-requisitos

Provedor de dados do Azure Monitor: métricas e logs de diagnóstico e logs de atividades

Exiba e compreenda os dados fornecidos pelos logs e métricas de diagnóstico e logs de atividades do Azure Monitor abaixo. Você criará um pipeline de ingestão com base nesses esquemas de dados. Observe que cada evento em um log tem uma matriz de registros. Essa matriz de registros será dividida adiante no tutorial.

Exemplos de métricas e logs de diagnóstico e logs de atividades

As métricas e os logs de diagnóstico e de atividades do Azure são emitidos por um serviço do Azure e fornecem dados sobre a operação desse serviço.

Exemplo de métricas de diagnóstico

As métricas de diagnóstico são agregadas com um intervalo de agregação de um minuto. A seguir há um exemplo de um esquema de evento de métrica do Azure Data Explorer sobre a duração da consulta:

{
    "records": [
    {
        "count": 14,
        "total": 0,
        "minimum": 0,
        "maximum": 0,
        "average": 0,
        "resourceId": "/SUBSCRIPTIONS/<subscriptionID>/RESOURCEGROUPS/<resource-group>/PROVIDERS/MICROSOFT.KUSTO/CLUSTERS/<cluster-name>",
        "time": "2018-12-20T17:00:00.0000000Z",
        "metricName": "QueryDuration",
        "timeGrain": "PT1M"
    },
    {
        "count": 12,
        "total": 0,
        "minimum": 0,
        "maximum": 0,
        "average": 0,
        "resourceId": "/SUBSCRIPTIONS/<subscriptionID>/RESOURCEGROUPS/<resource-group>/PROVIDERS/MICROSOFT.KUSTO/CLUSTERS/<cluster-name>",
        "time": "2018-12-21T17:00:00.0000000Z",
        "metricName": "QueryDuration",
        "timeGrain": "PT1M"
    }
    ]
}

Configurar um pipeline de ingestão no Azure Data Explorer

A configuração de um pipeline do Azure Data Explorer envolve várias etapas, como criação de tabela e ingestão de dados. Também é possível manipular, mapear e atualizar os dados.

Conectar-se à interface do usuário da Web do Azure Data Explorer

No banco de dados TestDatabase do Azure Data Explorer, selecione Consulta para abrir a interface do usuário da Web do Azure Data Explorer.

Página Consulta.

Criar as tabelas de destino

A estrutura dos logs do Azure Monitor não é tabular. Você manipulará os dados e expandirá cada evento para um ou mais registros. Os dados brutos serão ingeridos a uma tabela intermediária denominada ActivityLogsRawRecords para os logs de atividade e DiagnosticRawRecords para métricas e logs de diagnóstico. Nesse momento, os dados serão manipulados e expandidos. Usando uma política de atualização, os dados expandidos serão, em seguida, ingeridos na tabela ActivityLogs para logs de atividades, DiagnosticMetrics para métricas de diagnóstico e DiagnosticLogs para logs de diagnóstico. Isso significa que você precisará criar duas tabelas separadas para ingerir os logs de atividades e três tabelas separadas para ingerir as métricas e os logs de diagnóstico.

Use a interface do usuário da Web do Azure Data Explorer para criar as tabelas de destino no banco de dados do Azure Data Explorer.

Criar tabelas para as métricas de diagnóstico

  1. No banco de dados TestDatabase, crie uma tabela chamada DiagnosticMetrics para armazenar os registros das métricas de diagnóstico. Use o seguinte .create table comando de gerenciamento:

    .create table DiagnosticMetrics (Timestamp:datetime, ResourceId:string, MetricName:string, Count:int, Total:double, Minimum:double, Maximum:double, Average:double, TimeGrain:string)
    
  2. Selecione Executar para criar a tabela.

    Execute a consulta.

  3. Crie a tabela de dados intermediários denominada DiagnosticRawRecords no banco de dados TestDatabase para manipulação de dados usando a consulta a seguir. Selecione Executar para criar a tabela.

    .create table DiagnosticRawRecords (Records:dynamic)
    
  4. Defina política de retenção zero para a tabela intermediária:

    .alter-merge table DiagnosticRawRecords policy retention softdelete = 0d
    

Criar mapeamentos de tabela

Como o formato de dados é json, o mapeamento de dados é necessário. O mapeamento json mapeia cada caminho JSON para um nome de coluna de tabela. Os caminhos JSON que incluem caracteres especiais deverão ter um escape como ['Nome da Propriedade']. Para obter mais informações, consulte Sintaxe JSONPath.

Mapear métricas e logs de diagnóstico para a tabela

Para mapear os dados das métricas e dos logs de diagnóstico para a tabela, use a seguinte consulta:

.create table DiagnosticRawRecords ingestion json mapping 'DiagnosticRawRecordsMapping' '[{"column":"Records","Properties":{"path":"$.records"}}]'

Criar a política de atualização para os dados das métricas e dos logs

Criar política de atualização de dados para métricas de diagnóstico

  1. Crie uma função que expande a coleção dos registros da métrica de diagnóstico de modo que cada valor na coleção receba uma linha separada. Use o operador mv-expand:

    .create function DiagnosticMetricsExpand() {
       DiagnosticRawRecords
       | mv-expand events = Records
       | where isnotempty(events.metricName)
       | project
           Timestamp = todatetime(events['time']),
           ResourceId = tostring(events.resourceId),
           MetricName = tostring(events.metricName),
           Count = toint(events['count']),
           Total = todouble(events.total),
           Minimum = todouble(events.minimum),
           Maximum = todouble(events.maximum),
           Average = todouble(events.average),
           TimeGrain = tostring(events.timeGrain)
    }
    
  2. Adicione a política de atualização à tabela de destino. Essa política executará a consulta automaticamente nos dados recém-ingeridos na tabela de dados intermediária DiagnosticRawRecords e ingerirá os resultados na tabela DiagnosticMetrics:

    .alter table DiagnosticMetrics policy update @'[{"Source": "DiagnosticRawRecords", "Query": "DiagnosticMetricsExpand()", "IsEnabled": "True", "IsTransactional": true}]'
    

Criar um namespace de Hubs de Eventos do Azure

As configurações de diagnóstico do Azure permitem a exportação de métricas e logs para uma conta de armazenamento ou um hub de eventos. Neste tutorial, rotearemos as métricas e os logs por meio de um hub de eventos. Você criará um namespace de hub de eventos e um hub de eventos para as métricas e os logs de diagnóstico nas etapas a seguir. O Azure Monitor criará o hub de eventos insights-operational-logs para os logs de atividades.

  1. Crie um hub de eventos usando um modelo do Azure Resource Manager no portal do Azure. Para seguir o restante das etapas deste artigo, clique com o botão direito do mouse no botão Implantar no Azure e, em seguida, selecione Abrir em uma nova janela. O botão Implantar no Azure leva você ao portal do Azure.

    Botão Implantar no Azure.

  2. Crie um namespace de hubs de eventos e um hub de eventos para os logs de diagnóstico. Saiba como criar um namespace de hubs de eventos.

  3. Preencha o formulário com as seguintes informações. Para as configurações não listadas na tabela a seguir, use os valores padrão.

    Configuração Valor sugerido Descrição
    Assinatura Sua assinatura Selecione a assinatura do Azure que você deseja usar para o seu hub de eventos.
    Grupo de recursos test-resource-group Crie um novo grupo de recursos.
    Localidade Selecione a região que melhor atende às suas necessidades. Crie o namespace de hubs de eventos na mesma localização dos outros recursos.
    Nome do namespace AzureMonitoringData Escolha um nome exclusivo que identifique seu namespace.
    Nome do Hub de Eventos DiagnosticData O hub de eventos fica sob o namespace, que fornece um contêiner de determinação de escopo exclusivo.
    Nome do grupo de consumidor adxpipeline Crie um nome de grupo de consumidores. Grupos de consumidores permitem que vários aplicativos de consumo tenham uma visão separada do fluxo de eventos.

Conectar as métricas e os logs do Azure Monitor ao hub de eventos

Agora, você precisa conectar as métricas e os logs de diagnóstico e os logs de atividades ao hub de eventos.

Conectar as métricas e os logs de diagnóstico ao hub de eventos

Selecione um recurso do qual exportar métricas. Vários tipos de recurso dão suporte à exportação dos dados de diagnóstico, incluindo o namespace de hubs de eventos, o Azure Key Vault, o Hub IoT do Azure e clusters do Azure Data Explorer. Neste tutorial, usaremos um cluster do Azure Data Explorer como nosso recurso, examinaremos as métricas de desempenho de consulta e os logs de resultados de ingestão.

  1. Selecione o cluster Kusto no portal do Azure.

  2. Selecione Configurações de diagnóstico e, em seguida, selecione o link Ativar diagnóstico.

    Configurações de diagnóstico.

  3. O painel Configurações de diagnóstico será aberto. Siga estas etapas:

    1. Dê aos dados de log de diagnóstico o nome ADXExportedData.

    2. Em LOG, marque as caixas de seleção SucceededIngestion e FailedIngestion.

    3. Em MÉTRICA, marque a caixa de seleção Desempenho de consulta.

    4. Marque a caixa de seleção Transmitir para um hub de eventos.

    5. Selecione Configurar.

      Painel Configurações de diagnóstico.

  4. No painel Selecionar um hub de eventos, configure como exportar os dados dos logs de diagnóstico para o hub de eventos criado:

    1. Na lista Selecionar um namespace do hub de eventos, selecione AzureMonitoringData.
    2. Na lista Selecionar o nome do hub de evento, selecione DiagnosticData.
    3. Na lista Selecionar o nome da política do hub de eventos, selecione RootManagerSharedAccessKey.
    4. Selecione OK.
  5. Clique em Salvar.

Ver os dados fluindo para os hubs de eventos

  1. Aguarde alguns minutos até a conexão ser definida e a exportação do log de atividades para o hub de eventos ser concluída. Acesse o namespace de hubs de eventos para ver os hubs de eventos criados.

    Hubs de eventos criados.

  2. Veja os dados fluindo para o hub de eventos:

    Dados do hub de eventos.

Conectar um hub de eventos ao Azure Data Explorer

Agora, você precisa criar as conexões de dados para as métricas e os logs de diagnóstico e os logs de atividades.

Criar as conexões de dados para as métricas e os logs de diagnóstico e os logs de atividades

  1. No cluster do Azure Data Explorer chamado kustodocs, selecione Bancos de Dados no menu à esquerda.

  2. Na janela Bancos de Dados, selecione o banco de dados TestDatabase.

  3. No menu à esquerda, selecione Ingestão de dados.

  4. Na janela Ingestão de dados, selecione + Adicionar Conexão de Dados.

  5. Na janela Conexão de dados, insira as seguintes informações:

    Conexão de dados do hub de eventos.

  1. Use as seguintes configurações na janela Conexão de Dados:

    Fonte de dados:

    Configuração Valor sugerido Descrição do campo
    Nome da conexão de dados DiagnosticsLogsConnection O nome da conexão que você deseja criar no Azure Data Explorer.
    Namespace do Hub de Eventos AzureMonitoringData O nome escolhido anteriormente que identifica seu namespace.
    Hub de eventos DiagnosticData O hub de eventos que você criou.
    Grupo de consumidores adxpipeline O grupo de consumidores definido no hub de eventos que você criou.

    Tabela de destino:

    Há duas opções de roteamento: estático e dinâmico. Para este tutorial, você usará o roteamento estático (o padrão), no qual especificará o nome da tabela, o formato de dados e o mapeamento. Não selecione Meus dados incluem informações de roteamento.

    Configuração Valor sugerido Descrição do campo
    Tabela DiagnosticRawRecords A tabela criada no banco de dados TestDatabase.
    Formato dos dados JSON O formato usado na tabela.
    Mapeamento de coluna DiagnosticRawRecordsMapping O mapeamento criado no banco de dados TestDatabase, que mapeia os dados JSON de entrada para os nomes de coluna e os tipos de dados da tabela DiagnosticRawRecords.
  2. Selecione Criar.

Consultar as novas tabelas

Agora você tem um pipeline com os dados fluindo. A ingestão por meio do cluster leva 5 minutos por padrão; portanto, permita que os dados fluam por alguns minutos antes de iniciar a consulta.

Consultar a tabela de métricas de diagnóstico

A seguinte consulta analisa os dados de duração da consulta dos registros da métrica de diagnóstico no Azure Data Explorer:

DiagnosticMetrics
| where Timestamp > ago(15m) and MetricName == 'QueryDuration'
| summarize avg(Average)

Resultados da consulta:

avg_Average
00:06.156