Introdução

No ambiente de negócios atual, a capacidade de analisar dados à medida que chegam, não horas depois, pode significar a diferença entre aproveitar uma oportunidade e perdê-la completamente. Painéis de análise em tempo real fornecem equipes operacionais, executivos e analistas de dados com insights continuamente atualizados em métricas como saúde do sistema, comportamento do cliente, leituras de sensores de IoT e transações financeiras. Construir um painel assim requer uma infraestrutura que pode ingerir dados de alta velocidade, armazená-lo eficientemente e responder a consultas complexas em segundos.

O Azure Data Explorer (ADX) surge como uma solução líder projetada especificamente para essas demandas. Oferece pipelines de ingestão gerenciadas, armazenamento colunar otimizado para séries temporais e dados de log, e o poderoso Kusto Query Language (KQL) para transformar eventos brutos em visualizações acionáveis. Este artigo fornece um guia prático e prático para construir um painel de análise em tempo real de produção usando o Azure Data Explorer e integrando-o com o Power BI para relatórios interativos. Você aprenderá como configurar um cluster ADX, transmitir dados de fontes como o Event Hubs, escrever consultas KQL eficientes, conectar-se ao Power BI e otimizar todo o gasoduto para atualizações de baixa latência.

O que é o Azure Data Explorer?

O Azure Data Explorer é um serviço de análise de dados big que se destaca na análise interativa de grandes volumes de dados estruturados e semiestruturados. É construído para cenários como monitoramento de aplicações[, Telemetria de IoT, análise de log de segurança[, e inteligência de negócios[[]] onde os dados chegam continuamente e as consultas devem retornar resultados em segundos ou até milissegundos.

Principais características que fazem ADX ideal para painéis em tempo real incluem:

  • Ingestão de fluxo: Ingerir dados de Azure Event Hubs, IoT Hub, Kafka, e outras fontes de streaming com latências tão baixas quanto poucos segundos.
  • Armazenamento e indexação de colunas: Os dados são compactados e indexados usando índices invertidos e de árvores B, permitindo a digitalização e filtragem rápidas.
  • Kusto Query Language (KQL): Uma linguagem somente para leitura, SQL-like com operadores incorporados para análise de séries temporais, funções estatísticas, junções e agregações.
  • Integração de NAtive Power BI: O modo DirectQuery e o modo de importação permitem que os painéis refresquem automaticamente ou em tempo quase real.
  • Auto-scaling e gerenciamento de custos: Os clusters podem escalar o cálculo e armazenamento de forma independente, e você pode definir uma política de cache para manter dados quentes na memória para consultas rápidas.

ADX é frequentemente comparado a armazéns de dados tradicionais como Azure Synapse ou Amazon Redshift, mas é otimizado para alta cardinalidade (por exemplo, milhões de dispositivos únicos) e só para as cargas de trabalho ] típicas de logs e séries temporais. Para uma compreensão mais profunda, consulte a documentação oficial do Azure Data Explorer[.

Configurando o Ambiente

Criar um cluster de exploração de dados Azure

Para começar, faça login no portal azul e crie um novo recurso do tipo "Azure Data Explorer Cluster". Escolha uma assinatura, grupo de recursos e região que se alinha com suas fontes de dados (de preferência a mesma região para minimizar a latência). Selecione um SKU de computação baseado na taxa de ingestão esperada e concurrância de consulta:

  • Dev/Test: Dev(Standard D13 v2) ou Standard D14 v2 para pequenas cargas de trabalho.
  • Produção: Standard L8s v2, Standard L16s v2, ou a mais recente família SKU com SSDs NVMe locais (por exemplo, Standard L8s v3) para alta taxa de rendimento.
  • Alta concordância: Aglomerados com várias instâncias que podem escalar automaticamente com base na CPU ou carga de ingestão.

Depois de o cluster ser implantado, crie um banco de dados dentro dele. Use as políticas de retenção e cache padrão inicialmente. Para painéis em tempo real, você pode querer definir uma política de cache de vários dias (ou semanas) para que todos os dados recentes sejam servidos da memória. A política de retenção deve ser longa o suficiente para cobrir suas necessidades de relatórios (por exemplo, 30-90 dias).

Configurando Fontes de Ingestão de Dados

Os painéis em tempo real dependem de dados de streaming. ADX suporta várias abordagens de ingestão:

  • Event Hubs: Mais comum para logs e telemetria. Crie um espaço de nomes Event Hubs e um hub, então configure uma conexão de dados em ADX que mapeia os eventos JSON ou Avro para um esquema de tabela.
  • IoT Hub: Para dispositivos IoT, o IoT Hub fornece autenticação do dispositivo e encaminhamento de mensagens diretamente para ADX.
  • Kafka: Use o conector ADX Kafka para trazer fluxos de Apache Kafka ou Confluente.
  • Blob Storage/Data Lake:] Para a ingestão em lote ou quase em tempo real de arquivos Parquet/CSV armazenados em Azure Blob ou ADLS Gen2.

Ao configurar os Hubs de Evento, certifique-se de que a contagem de partições corresponde às suas necessidades de rendimento. ADX pode ingerir dados de várias partições simultaneamente. Para cada conexão de dados, você irá definir uma tabela e um mapeamento que transforma os campos JSON em colunas ADX. O mapeamento também pode lidar com conversões de tipos de dados (por exemplo, datas de épocas até à data).

Ingerindo Dados em Tempo Real

Criar Tabelas e Mapeamentos

Antes de ingerir, crie a tabela de destino no seu banco de dados ADX usando o KQL. Por exemplo, uma tabela para registros de erros de aplicativos pode parecer:

.create table AppLogs (Timestamp: datetime, Level: string, Service: string, Message: string, CorrelationId: string)

Em seguida, crie um mapeamento de ingestão para o formato que sua fonte de streaming usa. Para o JSON a partir de Event Hubs, o comando é:

.create table AppLogs ingestion json mapping 'AppLogsJsonMapping' '[{"column":"Timestamp","datatype":"datetime","properties":{"path":"$.timestamp"}},{"column":"Level","datatype":"string","properties":{"path":"$.level"}},{"column":"Service","datatype":"string","properties":{"path":"$.service"}},{"column":"Message","datatype":"string","properties":{"path":"$.message"}},{"column":"CorrelationId","datatype":"string","properties":{"path":"$.correlationId"}}]'

Esses mapeamentos dizem ao ADX como extrair campos de cada evento.

Configurar a Ligação de Eventos

No portal Azure, navegue até o seu banco de dados ADX, selecione "Conexões de dados" e adicione uma conexão Event Hubs. Forneça o espaço de nomes do Event Hubs, nome do hub, grupo de consumidores (use um grupo de consumidores dedicado para ADX para evitar conflitos) e o nome da tabela. Especifique a referência de mapeamento que você criou. O ADX irá automaticamente começar a consumir eventos e torná-los disponíveis para consultas em segundos.

Para cenários de alta produtividade, considere usar ] streaming intaining (ativado no cluster) em vez de ingestão em lote. A streaming intaining escreve dados diretamente nas extensões colunares sem estadiamento intermediário, fornecendo latências em menos de 10 segundos. Para a maioria dos painéis em tempo real, este é o modo preferido. A ingestão em lote (padrão) coleta dados por até alguns minutos antes de finalizar as extensões, o que pode introduzir 2-5 minutos de atraso.

Consultando com Kusto Consultar Linguagem (KQL)

O coração de qualquer painel ADX é as consultas do KQL que agregam e filtram dados em tempo real. Abaixo estão os padrões que você usará com frequência.

Filtragem e agregação básicas

Para contar os eventos de erro por serviço durante a última hora em caixas de um minuto:

AppLogs
| where Timestamp > ago(1h)
| where Level == "Error"
| summarize ErrorCount = count() by Service, bin(Timestamp, 1m)
| order by Timestamp asc

Isto devolve uma série temporal pronta para um gráfico de linhas.

Cálculos Percentil

Para as métricas de latência, você pode querer P50, P95 e P99:

ServiceLatency
| where Timestamp > ago(30m)
| summarize P50 = percentile(LatencyMs, 50), P95 = percentile(LatencyMs, 95), P99 = percentile(LatencyMs, 99) by Service

Juntando-se com Dados de Referência

Muitas vezes, os painéis precisam enriquecer eventos com dados de busca estática (por exemplo, locais de dispositivos). ADX suporta junções leves. Por exemplo, junte o fluxo de telemetria com uma tabela de dispositivos:

Telemetry
| where Timestamp > ago(15m)
| lookup Devices on DeviceId
| project Timestamp, DeviceId, Region, MetricValue

Para tabelas de referência grandes, considere materializá-las usando vistas materializadas ou armazená-las em um cluster separado com uma política de cache apropriada.

Funções da Série Temporal

ADX inclui operações poderosas de séries temporais como para detecção de anomalias, para sazonalidade e para análise de frequência. Exemplo: detectar anomalias nas contagens de erros HTTP:

AppLogs
| where Timestamp > ago(2h)
| make-series ErrorCount = count() on Timestamp step 1m
| extend anomalies = series_decompose(ErrorCount, -1, 2.0, 'ok')
| mv-expand Timestamp, ErrorCount, anomalies
| where anomalies[2] < 0 or anomalies[2] > 0

Tais consultas são avançadas, mas podem alimentar painéis de alerta diretamente.

Para uma referência completa, consulte a documentação da linguagem Kusto Query Language .

Construindo o Painel de energia BI

Ligando o poder BI ao ADX

O Azure Data Explorer integra-se com o Power BI através do conector Azure Data Explorer (Kusto). Para conectar:

  1. Abrir a área de trabalho do BI de energia, clique em "Get Data" > "Mais..."
  2. Procure por "Azure Data Explorer" e selecione o conector.
  3. Digite o seu URL de cluster (por exemplo, ]) e o nome do banco de dados.
  4. Escolha entre Importar (os dados são puxados para Power BI e atualizados periodicamente) ou DirectQuery[ (as consultas são enviadas para ADX em cada interação). Para painéis em tempo real, use DirectQuery. Isto garante que cada filtro, slicer e visual desencadeie uma consulta do KQL contra os dados mais recentes.

A gravar as Consultas KQL no Power BI

Na janela do conector, você pode digitar uma consulta do KQL diretamente. Mantenha as consultas focadas e garanta que eles retornam dados tabulares que o Power BI pode modelar. Por exemplo, para criar um conjunto de dados com contagens de erros por serviço por minuto na última hora:

AppLogs
| where Timestamp > ago(1h)
| summarize ErrorCount = count() by Service, bin(Timestamp, 1m)

Após carregar a consulta, use a modelagem do Power BI para definir medidas, hierarquias e relacionamentos se você tiver várias consultas. Evite carregar registros completos brutos – agregar o máximo possível no KQL.

Configurando Atualizações em Tempo Real

No modo DirectQuery, os visuais re-query ADX automaticamente quando os usuários interagem com o relatório (por exemplo, alterando um cortador de datas). No entanto, para fazer o painel de controle atualizar automaticamente sem interação do usuário, você precisa definir o recurso de atualização de página automática no serviço Power BI:

  1. Publicar o relatório num espaço de trabalho App com capacidade Premium (ou PPU).
  2. Nas configurações do relatório, em "Reash agendado", defina o intervalo de atualização DirectQuery — para painéis em tempo real, use 1 ou 2 minutos.
  3. Em alternativa, use o recurso Auto-refresh (preview) que atualiza a página em um intervalo fixo (por exemplo, a cada 30 segundos).

Tenha em mente que cada atualização automática irá executar todas as consultas do KQL subjacentes aos visuais. Otimize suas consultas para retornar rapidamente (menos de 5 segundos) para evitar esperas do usuário e carga excessiva de cluster.

Melhores práticas de visualização

  • Utilizar visualmente card para KPIs (por exemplo, erros totais nos últimos 5 minutos).
  • Linha de gráficos para tendências da série temporal.
  • Gráficos de barras para desagregações top-N (por exemplo, serviços de falha superior).
  • Mapas geoespaciais se você tiver dados de localização.
  • Gaúges para mostrar o progresso em direção aos limiares.

Dado que o DirectQuery envia consultas em todas as interacções, evite usar visuais personalizados que geram muitas consultas. Também, aplique filtros o mais cedo possível no KQL para reduzir o volume de dados.

Otimizando o desempenho para consultas em tempo real

Agregação e ajuste de índices

ADX cria automaticamente e mescla extensões (com os fragmentos de dados) ao longo do tempo. No entanto, você pode influenciar o desempenho por:

  • Escolhendo uma política de agrupamento que equilibra o rendimento de ingestão elevado com a concorrência de consultas. Para painéis em tempo real com muitas consultas visuais, dimensione (acrescente instâncias) em vez de aumentar a escala.
  • Definição apropriada política de cache] na base de dados ou tabelas. Por exemplo, para manter os últimos 7 dias em cache quente: ]
  • Usando visualizações materializadas para resultados pré-agregados que atualizam incrementalmente. Uma visualização materializada pode calcular resumos horários ou diários, que servem painéis de alto nível instantaneamente.

Dicas de Otimização de Consulta

  • Filtro inicial: Utilizar cláusulas na coluna de datapasta e dimensões de alta frequência para reduzir os dados digitalizados.
  • Minimizar junções: Se possível, desnormalizar dados durante a ingestão para que os dados de referência já estejam incorporados em eventos.
  • Evite em projetos: Lista explícita de colunas necessárias para reduzir largura de banda e memória.
  • Use para grandes operações para distribuir agregação entre nós.
  • Limite resultados: Sempre use , , ou nas consultas de desenvolvimento. No Power BI, os visuais geralmente têm seus próprios filtros top-N, mas adicioná-los também no KQL.

Monitoramento da Saúde do Agregado

O Azure Data Explorer fornece registros de diagnóstico e métricas embutidos através do Azure Monitor. métricas chave para assistir:

  • Lentidade de ingestão: Tempo médio desde a criação de eventos até ser questionável.
  • Exame latência: Tempos de execução P50 e P99.
  • CPU e uso de memória: Se consistentemente alto, considere escalar.
  • Taxa de ingestão: Certifique-se de que você não está se estrangulando; divida fluxos em mais partições, se necessário.

Configure alertas no Azure Monitor para quando as latências da consulta excederem um limiar (por exemplo, P99 > 10 segundos) para que você possa sintonizar proativamente.

Alerta e Automação em tempo real

Um painel em tempo real é mais poderoso quando emparelhado com respostas automatizadas. O Azure Data Explorer oferece vários pontos de integração:

Alertas de Monitor Azure da ADX

Você pode criar consultas agendadas no ADX que executam em um cronograma (por exemplo, a cada 5 minutos) e enviam resultados para o Monitor Azure. Depois, defina regras de alerta que disparam quando as condições são cumpridas (por exemplo, contagem de erro > 100 em uma janela de 5 minutos). Isto permite ações como:

  • Enviando um e-mail ou SMS através de Grupos de Ação.
  • Ativando o Azure Logic Apps para executar fluxos de trabalho (por exemplo, reiniciar um serviço, criar um ticket incidente).
  • Chamando webhooks para notificar sistemas externos.

Azure Logic Apps e Microsoft Power Automatizar

Use o aplicativo lógico com o conector "Execute Kusto Query" para obter dados do ADX e então tomar medidas. Por exemplo, se uma consulta detectar um pico no uso da CPU em VMs, uma aplicação lógica pode ativar um executório de Automação Azure para ampliar o VMSS. Isto fecha o loop entre monitoramento e remediação.

Análise de fluxo e ADX como Sink

Para alertas de latência ainda mais baixos, transmita dados através do Azure Stream Analytics, que pode aplicar janelas temporais e empurrar eventos de alerta simultaneamente para ADX (para análise histórica) e para um assinante do Event Hubs para alerta imediato.

Casos de uso e exemplos do mundo real

  • DevOps Painel de Observabilidade: Registros agregados, métricas e traços de microservices em clusters Kubernetes. ADX ingere de Fluentd/Logstash Azure Event Hubs, e o painel Power BI mostra taxas de solicitação, respostas de erro e latências de cauda.
  • Monitoramento da Frota de IoT:] Ligue o Hub de IoT ao ADX para telemetria de veículos (localização, velocidade, estado da bateria). Um mapa em tempo real de imagens em Power BI actualiza à medida que os veículos se reportam.
  • Detecção de Fraude Financeira: Transacções de fluxo através de Hubs de Evento em ADX. Os painéis mostram volumes de transação por região e pontuações de anomalia; alertas disparam blocklists quando os limiares são violados.
  • Análise de fluxo de cliques: A atividade do usuário de sites é ingerida em ADX. O painel rastreia usuários ativos, visualizações de página por segundo e funil de conversão atualizados a cada minuto.

Conclusão

Construir um painel de análise em tempo real com o Azure Data Explorer e Power BI é uma abordagem robusta e escalável que satisfaz a crescente demanda por insights instantâneos. Ao alavancar a ingestão de streaming da ADX, os recursos poderosos da série de tempo da KQL e as conexões DirectQuery no Power BI, você pode criar painéis que atualizam a cada poucos segundos e lidam com terabytes de dados recebidos. A chave para o sucesso reside no planejamento cuidadoso de capacidade, design de consultas pensativas e monitoramento contínuo do desempenho.

Comece pequeno com um único fluxo de telemetria, itere em consultas e expanda gradualmente para mais fontes de dados. À medida que as necessidades da sua organização crescem, a elasticidade do ADX garante que o seu painel de instrumentos escale sem comprometer a velocidade. Para mais informações, explore o guia de ingestão de Hubs de eventos e o Power BI to Azure Data Explorer documentation.