Partilhar via


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

Este tutorial ensinará como ingerir dados de logs de diagnóstico e atividade para um cluster do Azure Data Explorer sem escrever código. Com esse método de ingestão simples, você pode começar rapidamente a consultar o Azure Data Explorer para análise de dados.

Neste tutorial, você aprenderá a:

  • 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 a partir de métricas e logs de diagnóstico e logs de atividade do Azure Monitor.
  • Consulte os dados ingeridos usando o Azure Data Explorer.

Observação

Crie todos os recursos no mesmo local ou região do Azure.

Pré-requisitos

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

Veja e compreenda os dados fornecidos pelas métricas de diagnóstico e logs do Azure Monitor, e logs de atividade 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 posteriormente no tutorial.

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

As métricas de diagnóstico e os logs de atividades 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 tempo de 1 minuto. Segue-se um exemplo de um esquema de eventos métricos do Azure Data Explorer na 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 a criação de tabelas e a ingestão de dados. Você também pode 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 de 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 em uma tabela intermediária chamada ActivityLogsRawRecords para logs de atividades 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 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 importar logs de atividades e três tabelas separadas para importar métricas e 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 de 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.

    Executar consulta.

  3. Crie a tabela de dados intermediária chamada 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. Definir a 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 associa cada caminho JSON a um nome de coluna de tabela. Os caminhos JSON que incluem caracteres especiais devem ser escapados como ['Nome da propriedade']. Para obter mais informações, consulte Sintaxe JSONPath.

Associa métricas de diagnóstico e logs à tabela

Para mapear a métrica de diagnóstico e os dados de log 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 dados de métricas e logs

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

  1. Crie uma função que expanda a coleção de registros de métricas de diagnóstico para que cada valor na coleção receba uma linha separada. Use o mv-expand operador:

    .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. Esta política executará automaticamente a consulta em quaisquer dados recém-ingeridos na tabela de dados intermediários DiagnosticRawRecords e ingerirá seus 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 exportar métricas e logs para uma conta de armazenamento ou para um hub de eventos. Neste tutorial, encaminharemos 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 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 neste artigo, clique com o botão direito do mouse no botão Implantar no Azure e selecione Abrir em 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 quaisquer configurações não listadas na tabela a seguir, use os valores padrão.

    Setting Valor sugerido Descrição
    Subscription A sua subscrição Selecione a assinatura do Azure que você deseja usar para seu hub de eventos.
    Grupo de recursos test-resource-group Criar um novo grupo de recursos.
    Localização Selecione a região que melhor atende às suas necessidades. Crie o namespace do hub de eventos no mesmo local que outros recursos.
    Nome do namespace AzureMonitoringData Escolha um nome exclusivo que identifique o seu espaço de nomes.
    Nome do hub de eventos Dados de diagnóstico O hub de eventos fica sob o namespace, que fornece um contêiner de escopo exclusivo.
    Nome do grupo de consumidores AdxPipeline Crie um nome de grupo de consumidores. Os grupos de consumidores permitem que cada aplicação de consumo tenha uma vista separada do fluxo de eventos.

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

Agora você precisa conectar suas métricas e logs de diagnóstico e seus logs de atividade ao hub de eventos.

Conecte métricas e logs de diagnóstico ao seu hub de eventos

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

  1. Selecione seu 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 é aberto. Siga os seguintes passos:

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

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

    3. Em METRIC, selecione a caixa de seleção Desempenho da consulta.

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

    5. Selecione Configurar.

      Painel de configurações de diagnóstico.

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

    1. Na lista Selecionar namespace do hub de eventos , selecione AzureMonitoringData.
    2. Na lista Selecionar nome do hub de eventos , selecione DiagnosticData.
    3. Na lista Selecionar nome da política do hub de eventos , selecione RootManagerSharedAccessKey.
    4. Selecione OK.
  5. Selecione Guardar.

Veja os dados fluindo para seus hubs de eventos

  1. Aguarde alguns minutos até que a conexão seja definida e a exportação do log de atividades para o hub de eventos seja concluída. Vá para o namespace dos hubs de eventos para ver os hubs de eventos que você criou.

    Hubs de eventos criados.

  2. Veja os dados que fluem para o seu hub de eventos:

    Dados do hub de eventos.

Conectar um hub de eventos ao Azure Data Explorer

Agora, precisa criar as conexões de dados para as suas métricas de diagnóstico, logs e logs de atividade.

Criar a conexão de dados para métricas de diagnóstico, logs e 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 seu 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:

    Setting Valor sugerido Descrição do campo
    Nome da conexão de dados DiagnosticsLogsConnection O nome da ligação que quer criar no Azure Data Explorer.
    Namespace do hub de eventos AzureMonitoringData O nome que escolheu anteriormente para identificar o seu espaço de nomes.
    Hub de eventos Dados de diagnóstico O hub de eventos que criou.
    Grupo de consumidores AdxPipeline O grupo de consumidores definido no hub de eventos que criou.

    Tabela de destino

    Existem duas opções de roteamento: estático e dinâmico. Para este tutorial, você usará o roteamento estático (o padrão), onde especifique o nome da tabela, o formato de dados e o mapeamento. Deixe Meus dados incluem informações de encaminhamento desmarcado.

    Setting Valor sugerido Descrição do campo
    Tabela DiagnosticRawRecords A tabela que você criou no banco de dados TestDatabase .
    Formato dos dados JSON O formato usado na tabela.
    Mapeamento de colunas DiagnosticRawRecordsMapping O mapeamento que criou na base de dados TestDatabase, que associa os dados JSON recebidos aos nomes de coluna e tipos de dados da tabela DiagnosticRawRecords.
  2. Selecione Criar.

Consultar as novas tabelas

Agora você tem um pipeline com fluxo de dados. A ingestão através do cluster leva 5 minutos por padrão, portanto, permita que os dados fluam por alguns minutos antes de começar a consultar.

Consultar a tabela de métricas de diagnóstico

A consulta a seguir analisa os dados de duração da consulta de registros de métricas 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