Partilhar via


Tutorial: Ingerir e consultar dados de monitorização no Azure Data Explorer

Este tutorial irá ensinar-lhe a ingerir dados de registos de diagnósticos e atividades para um cluster do Azure Data Explorer sem escrever código. Com este método de ingestão simples, pode começar rapidamente a consultar o Azure Data Explorer para análise de dados.

Neste tutorial, irá aprender a:

  • Criar tabelas e mapeamento de ingestão numa base de dados do Azure Data Explorer.
  • Formate os dados ingeridos com uma política de atualização.
  • Crie um hub de eventos e ligue-o ao Azure Data Explorer.
  • Transmitir dados para um hub de eventos a partir de métricas de diagnóstico e registos e registos de atividades do Azure Monitor.
  • Consulte os dados ingeridos com o Azure Data Explorer.

Nota

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

Pré-requisitos

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

Veja e compreenda os dados fornecidos pelas métricas de diagnóstico e registos de atividades e registos de atividades do Azure Monitor abaixo. Irá criar um pipeline de ingestão com base nestes esquemas de dados. Tenha em atenção que cada evento num registo tem uma matriz de registos. Esta matriz de registos será dividida mais tarde no tutorial.

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

As métricas de diagnóstico e os registos e registos de atividades do Azure são emitidos por um serviço do Azure e fornecem dados sobre o funcionamento 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 de métricas do Azure Data Explorer durante a 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ários passos, como a criação de tabelas e a ingestão de dados. Também pode manipular, mapear e atualizar os dados.

Ligar à IU web do Azure Data Explorer

Na base de dados TestDatabase do Azure Data Explorer, selecione Consulta para abrir a IU web do Azure Data Explorer.

Página de consulta.

Criar as tabelas de destino

A estrutura dos registos do Azure Monitor não é tabular. Irá manipular os dados e expandir cada evento para um ou mais registos. Os dados não processados serão ingeridos numa tabela intermédia chamada ActivityLogsRawRecords para registos de atividades e DiagnosticRawRecords para métricas de diagnóstico e registos. Nessa altura, os dados serão manipulados e expandidos. Com uma política de atualização, os dados expandidos serão ingeridos na tabela ActivityLogs para registos de atividades, DiagnosticMetrics para métricas de diagnóstico e Registos de Diagnóstico para registos de diagnóstico. Isto significa que terá de criar duas tabelas separadas para ingerir registos de atividades e três tabelas separadas para ingerir métricas de diagnóstico e registos.

Utilize a IU da Web do Azure Data Explorer para criar as tabelas de destino na base de dados do Azure Data Explorer.

Criar tabelas para as métricas de diagnóstico

  1. Na base de dados TestDatabase , crie uma tabela com o nome DiagnosticMetrics para armazenar os registos de métricas de diagnóstico. Utilize o seguinte .create table comando de gestão:

    .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 intermédia denominada DiagnosticRawRecords na base de dados TestDatabase para manipulação de dados com a seguinte consulta. Selecione Executar para criar a tabela.

    .create table DiagnosticRawRecords (Records:dynamic)
    
  4. Defina a política de retenção zero para a tabela intermédia:

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

Criar mapeamentos de tabelas

Uma vez que o formato de dados é json, é necessário o mapeamento de dados. O json mapeamento mapeia cada caminho json para um nome de coluna de tabela. Os caminhos JSON que incluem carateres especiais devem ser escapados como ['Nome da Propriedade']. Para obter mais informações, veja Sintaxe JSONPath.

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

Para mapear a métrica de diagnóstico e os dados de registo para a tabela, utilize 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 de registo

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 registos de métricas de diagnóstico para que cada valor na coleção receba uma linha separada. Utilize 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 irá executar automaticamente a consulta em quaisquer dados recentemente ingeridos na tabela de dados intermédios DiagnosticRawRecords e ingerir os resultados na tabela DiagnosticMetrics :

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

Criar um espaço de nomes Hubs de Eventos do Azure

As definições de diagnóstico do Azure permitem exportar métricas e registos para uma conta de armazenamento ou para um hub de eventos. Neste tutorial, vamos encaminhar as métricas e os registos através de um hub de eventos. Irá criar um espaço de nomes do hub de eventos e um hub de eventos para as métricas de diagnóstico e registos nos passos seguintes. O Azure Monitor irá criar as informações do hub de eventos-operational-logs para os registos de atividades.

  1. Crie um hub de eventos com um modelo do Azure Resource Manager no portal do Azure. Para seguir os restantes passos neste artigo, clique com o botão direito do rato no botão Implementar no Azure e, em seguida, selecione Abrir numa nova janela. O botão Implementar no Azure direciona-o para o portal do Azure.

    Botão Implementar no Azure.

  2. Crie um espaço de nomes dos hubs de eventos e um hub de eventos para os registos de diagnóstico. Saiba como criar um espaço de nomes de hubs de eventos.

  3. Preencha o formulário com as seguintes informações. Para quaisquer definições não listadas na tabela seguinte, utilize os valores predefinidos.

    Definição Valor sugerido Descrição
    Subscrição A sua subscrição Selecione a subscrição do Azure que quer utilizar para o hub de eventos.
    Grupo de recursos test-resource-group Criar um novo grupo de recursos.
    Localização Selecione a região que melhor se adequa às suas necessidades. Crie o espaço de nomes do hub de eventos na mesma localização que outros recursos.
    Nome do espaço de nomes AzureMonitoringData Escolha um nome exclusivo que identifique o seu espaço de nomes.
    Nome do hub de eventos DiagnosticData O hub de eventos encontra-se no espaço de nomes, que fornece um contentor de âmbito 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.

Ligar métricas e registos do Azure Monitor ao hub de eventos

Agora, tem de ligar as métricas de diagnóstico e os registos e os registos de atividades ao hub de eventos.

Ligar métricas de diagnóstico e registos ao hub de eventos

Selecione um recurso a partir do qual exportar métricas. Vários tipos de recursos suportam a exportação de dados de diagnóstico, incluindo o espaço de nomes dos hubs de eventos, o Azure Key Vault, o Hub IoT do Azure e os clusters do Azure Data Explorer. Neste tutorial, vamos utilizar um cluster do Azure Data Explorer como recurso. Vamos rever as métricas de desempenho de consultas e os registos de resultados de ingestão.

  1. Selecione o cluster do Kusto no portal do Azure.

  2. Selecione Definições de diagnóstico e, em seguida, selecione a ligação Ativar diagnóstico.

    Definições de diagnóstico.

  3. O painel Definições de diagnóstico é apresentado. Siga estes passos:

    1. Atribua aos dados de registo de diagnóstico o nome ADXExportedData.

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

    3. Em MÉTRICA, selecione a caixa de verificação Desempenho da consulta.

    4. Selecione a caixa de verificação Transmitir para um hub de eventos .

    5. Selecione Configurar.

      Painel definições de diagnóstico.

  4. No painel Selecionar hub de eventos , configure como exportar dados de registos de diagnóstico para o hub de eventos que criou:

    1. Na lista Selecionar espaço de nomes do hub de eventos , selecione AzureMonitoringData.
    2. Na lista Selecionar nome do hub de eventos , selecione DiagnósticoDados.
    3. Na lista Selecionar nome da política do hub de eventos , selecione RootManagerSharedAccessKey.
    4. Selecione OK.
  5. Selecione Guardar.

Ver dados a fluir para os hubs de eventos

  1. Aguarde alguns minutos até que a ligação seja definida e a exportação do registo de atividades para o hub de eventos esteja concluída. Aceda ao espaço de nomes dos hubs de eventos para ver os hubs de eventos que criou.

    Hubs de eventos criados.

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

    Dados do hub de eventos.

Ligar um hub de eventos ao Azure Data Explorer

Agora, tem de criar as ligações de dados para as métricas de diagnóstico, registos e registos de atividades.

Criar a ligação de dados para métricas de diagnóstico, registos e registos de atividades

  1. No cluster do Azure Data Explorer com o nome kustodocs, selecione Bases de dados no menu esquerdo.

  2. Na janela Bases de Dados , selecione a base de dados TestDatabase .

  3. No menu esquerdo, selecione Ingestão de dados.

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

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

    Ligação de dados do hub de eventos.

  1. Utilize as seguintes definições na janela Ligação de Dados :

    Origem de dados:

    Definição Valor sugerido Descrição do campo
    Nome da ligação de dados DiagnosticsLogsConnection O nome da ligação que quer criar no Azure Data Explorer.
    Espaço de nomes do hub de eventos AzureMonitoringData O nome que escolheu anteriormente que identifica o seu espaço de nomes.
    Hub de eventos DiagnosticData 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 para o encaminhamento: estático e dinâmico. Neste tutorial, irá utilizar o encaminhamento estático (a predefinição), onde especifica o nome da tabela, o formato de dados e o mapeamento. Deixe o campo Os meus dados incluem informações de encaminhamento não selecionado.

    Definição Valor sugerido Descrição do campo
    Tabela DiagnosticRawRecords A tabela que criou na base de dados TestDatabase .
    Formato de dados JSON O formato utilizado na tabela.
    Mapeamento de colunas DiagnosticRawRecordsMapping O mapeamento que criou na base de dados TestDatabase , que mapeia os dados JSON recebidos para os nomes de colunas e tipos de dados da tabela DiagnosticRawRecords .
  2. Selecione Criar.

Consultar as novas tabelas

Tem agora um pipeline com fluxo de dados. Por predefinição, a ingestão através do cluster demora 5 minutos, pelo que permite que os dados fluam durante alguns minutos antes de começarem a consultar.

Consultar a tabela de métricas de diagnóstico

A consulta seguinte analisa os dados de duração da consulta dos registos 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