Introducción

En el entorno empresarial de hoy, la capacidad de analizar datos a medida que llega —no horas más tarde— puede significar la diferencia entre aprovechar una oportunidad y perderla por completo. Los paneles analíticos en tiempo real proporcionan equipos operativos, ejecutivos y analistas de datos con información actualizada continuamente sobre métricas como la salud del sistema, el comportamiento del cliente, las lecturas de sensores de IoT y las transacciones financieras.

Azure Data Explorer (ADX) emerge como una solución líder diseñada específicamente para estas demandas. Ofrece tuberías de ingestión gestionadas, almacenamiento columnar optimizado para series temporales y datos de registro, y el poderoso Kusto Query Language (KQL) para transformar eventos crudos en visualizaciones factibles. Este artículo proporciona una guía práctica y práctica para la construcción de un panel de análisis de calidad de producción en tiempo real con Azure Explorer

¿Qué es Azure Data Explorer?

Datos de Azure Explorer es un servicio de análisis de datos de alto rendimiento que se destaca en el análisis interactivo de grandes volúmenes de datos estructurados y semiestructurados. Se construye para escenarios como monitoreo de aplicaciones, [FLT: [FLT]]

Las características clave que hacen ADX ideal para los paneles en tiempo real incluyen:

  • Ingestión de estrés: Ingerir datos de los Centros de Evento Azure, IoT Hub, Kafka y otras fuentes de streaming con retrasos tan bajos como unos segundos.
  • Almacenamiento e indexación de color: Los datos se comprimen e indexan mediante índices invertidos y de árbol B, lo que permite un rápido escaneo y filtrado.
  • Kusto Query Language (KQL): Un lenguaje de lectura, similar a SQL, con operadores incorporados para el análisis de series temporales, funciones estadísticas, ensambla y agregaciones.
  • Integración de la IBNative Power: El modo DirectQuery y el modo de importación permiten a los paneles refrescarse automáticamente o en tiempo casi real.
  • Gestión de escalas automáticas y costos: Los equipos pueden escalar el cálculo y el almacenamiento independientemente, y puede establecer una política de caché para mantener los datos calientes en memoria para consultas rápidas.

A menudo se compara con los almacenes de datos tradicionales como Azure Synapse o Amazon Redshift, pero se optimiza para alta cardinalidad] (por ejemplo, millones de dispositivos únicos) y sólo las cargas de trabajo típicas de los registros y las series de tiempo.

Configuración del medio ambiente

Crear un grupo de exploradores de datos de Azure

Para comenzar, inicie sesión en el portal de azul y cree un nuevo recurso de tipo "Azure Data Explorer Cluster." Elige una suscripción, grupo de recursos y región que se ajuste a sus fuentes de datos (preferiblemente la misma región para minimizar latencia). Seleccione un compute SKU basado en su tasa de ingestión y la concurrencia de consulta prevista:

  • Dev/Test: Dev(Standard D13 v2) o Standard D14 v2 para pequeñas cargas de trabajo.
  • Producción:] Standard L8s v2, Standard L16s v2, o la nueva familia SKU con SSDs NVMe locales (por ejemplo, Standard L8s v3) para alta rentabilidad.
  • Alto concurrencia:] Grupos con múltiples instancias que pueden autoescala basados en la carga de CPU o de ingestión.

Después de que el cluster se desplegue, cree una base de datos dentro de ella. Utilice las políticas de retención y caché predeterminadas inicialmente. Para los paneles de control en tiempo real, puede que desee establecer una política de cálculo ] de varios días (o semanas) para que todos los datos recientes se sirvan de la memoria. ] política de retención [[]]] debe ser lo suficientemente largo para cubrir sus necesidades.

Configuración de fuentes de ingestión de datos

Los paneles en tiempo real dependen de datos de transmisión. ADX admite varios enfoques de ingestión:

  • Evento Hubs: Más común para registros y telemetría. Cree un espacio de nombres de Event Hubs y un centro, luego configura una conexión de datos en ADX que mapea los eventos JSON o Avro a un esquema de tabla.
  • IoT Hub: Para dispositivos IoT, IoT Hub proporciona autenticación de dispositivos y envío de mensajes directamente a ADX.
  • Kafka:] Usa el conector ADX Kafka para traer los flujos de Apache Kafka o Confluent.
  • Blob Storage/Data Lake: Para la ingestión en tiempo parcial o casi real de los archivos Parquet/CSV almacenados en Azure Blob o ADLS Gen2.

Al configurar Event Hubs, asegúrese de que la partición contemple sus necesidades de rendimiento. ADX puede ingerir datos de múltiples particiones simultáneamente. Para cada conexión de datos, usted definirá una table y un ]mapping que transforma los campos JSON en columnas ADXch.

Ingerir datos en tiempo real

Creación de tablas y mappings

Antes de ingerir, cree la tabla de destino en su base de datos ADX usando KQL. Por ejemplo, una tabla para registros de errores de aplicación podría parecer:

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

Luego crear un mapeo de ingestión para el formato que utiliza su fuente de streaming. Para JSON de Event Hubs, el comando es:

.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"}}]'

Estas asignaciones le dicen a ADX cómo extraer campos de cada evento.

Configuración de la conexión de los centros de eventos

En el portal Azure, navega a su base de datos ADX, selecciona "Conexiones de datos", y añade una conexión de Event Hubs. Proporcionar el espacio de nombres de Event Hubs, nombre de hub, grupo de consumidores (utiliza un grupo de consumidores dedicado para ADX para evitar conflictos), y el nombre de la tabla. Especifica la referencia de asignación que creó. ADX comenzará automáticamente a consumir eventos y los pondrá a disposición para consultas en segundos.

Para escenarios de alto rendimiento, considere utilizar ingestión de corriente] (se puede utilizar en el grupo) en lugar de ingestión de lotes. La ingestión de streaming escribe datos directamente en las dimensiones columnar sin estadificación intermedia, proporcionando las demoras inferiores a 10 segundos. Para la mayoría de los paneles de tiempo real, este es el modo preferido. Ingestión de lotes (por defecto)

Consultas con Kusto Query Language (KQL)

El corazón de cualquier dashboard ADX es las consultas KQL que agregan y filtran datos en tiempo real. A continuación se presentan patrones que utilizará con frecuencia.

Filtro básico y agregación

Para contar los eventos de error por servicio durante la última hora en contenedores de un minuto:

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

Esto devuelve una serie de tiempo lista para una tabla de línea.

Cálculos porcentuales

Para las métricas de latencia, usted podría querer P50, P95 y P99:

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

Unirse a Datos de Referencia

A menudo los tableros de control tienen que enriquecer eventos con datos de búsqueda estática (por ejemplo, ubicaciones de dispositivos). ADX admite lazos ligeros. Por ejemplo, únase al flujo de telemetría con una tabla de dispositivos:

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

Para las tablas de referencia grandes, considere la materialización de las opiniones materializadas] o almacenarlas en un grupo separado con una política de caché adecuada.

Funciones de la serie de tiempo

ADX incluye potentes operaciones de series temporales como para la detección de anomalías, para la estacionalidad, y para el análisis de frecuencias. Ejemplo: detectar anomalías en los casos de error 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

Tales consultas están avanzadas pero pueden alimentar a los tableros de alerta directamente.

Para una referencia completa, consulte la Kusto Query Language documentation].

Construyendo el tablero de mandos Power BI

Conexión de la interfaz de usuario a ADX

Azure Data Explorer se integra con Power BI a través del conector Azure Data Explorer (Kusto)].

  1. Open Power BI Desktop, haga clic en "Obtenga datos" > "Más..."
  2. Busque "Azure Data Explorer" y seleccione el conector.
  3. Introduzca su URL de racimo (por ejemplo, ) y el nombre de la base de datos.
  4. Elige entre Import] (se introducen datos en Power BI y se actualizan periódicamente) o DirectQuery (se envían las consultas a ADX en cada interacción). Para los paneles de control en tiempo real, utilice DirectQuery. Esto asegura que cada filtro, cortador y disparador visuales más recientes contra un KQ.

Escribir consultas KQL en Power BI

En el diálogo de conectores, puede escribir una consulta KQL directamente. Mantenga las consultas enfocadas y asegúrese de devolver los datos tabulares que Power BI puede modelar. Por ejemplo, crear un conjunto de datos con los recuentos de errores por minuto durante la última hora:

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

Después de cargar la consulta, utilice el modelado de Power BI para definir medidas, jerarquías y relaciones si tiene múltiples consultas. Evite cargar troncos completos en bruto (agregar tanto como sea posible en KQL).

Configuración de Refrescos en tiempo real

En modo DirectQuery, las imágenes se vuelven a grabar automáticamente ADX cuando los usuarios interactúan con el informe (por ejemplo, cambiando una rebanadora de fecha). Sin embargo, para hacer el auto-refreshboard sin interacción con el usuario, debe configurar la función de actualización automática en el servicio Power BI:

  1. Publicar el informe a un ]Aplicar espacio de trabajo con capacidad Premium (o PPU).
  2. En la configuración del informe, bajo "Refrigerio programado", establece el intervalo de actualización DirectQuery—para paneles de control en tiempo real, utilice 1 o 2 minutos.
  3. Alternativamente, utilice la función Auto-refresh (previsión) que refresca la página a un intervalo fijo (por ejemplo, cada 30 segundos).

Tenga en cuenta que cada auto-refresh ejecutará todas las consultas KQL subyacentes a las visuales. Optimize your consultas para regresar rápidamente (bajo 5 segundos) para evitar esperas de usuario y carga excesiva de racimo.

Mejores prácticas de visualización

  • Use tar imágenes para KPIs (por ejemplo, errores totales en los últimos 5 minutos).
  • Gráficos de línea para las tendencias de las series temporales.
  • Gráficos de barras] para los desglose de la N superior (por ejemplo, los servicios de falla superior).
  • Mapas geoespaciales si tiene datos de ubicación.
  • ] [Gauges [para mostrar el progreso hacia los umbrales.

Debido a que DirectQuery envía consultas sobre cada interacción, evite usar visuales personalizados que generen muchas consultas. Además, aplique filtros lo antes posible en KQL para reducir el volumen de datos.

Optimización del rendimiento para consultas en tiempo real

Reforzamiento de la lista y el ajuste de índice

ADX crea y fusiona automáticamente los alcances (datos shards) con el tiempo. Sin embargo, puede influir en el rendimiento por:

  • Elegir una política cluster que equilibra la alta capacidad de ingestión con la concurrencia de la consulta. Para los tableros de control en tiempo real con muchas consultas visuales, escalar (add instances) en lugar de escalar.
  • Establecer la política de la cámara apropiada en la base de datos o tablas. Por ejemplo, para mantener los últimos 7 días en caché caliente:
  • Utilizando las vistas materializadas para los resultados pre-agregados que se actualizan incrementalmente. Una vista materializada puede calcular los resúmenes por hora o diarios, que luego sirven paneles de alta calidad al instante.

Consejos de optimización de consultas

  • Filter early:] Use cláusulas sobre la columna de timetamp y dimensiones de alta cardiacidad para reducir los datos escaneados.
  • Minimizar se une: Si es posible, desnormalizar los datos durante la ingestión para que los datos de referencia ya estén incrustados en eventos.
  • Evite en proyectos:] Lista extensivamente necesaria columnas para reducir el ancho de banda y la memoria.
  • Use ] para grandes operaciones para distribuir agregación a través de los nodos.
  • ] Resultados de la palabra:] Siempre use , , o en las consultas de desarrollo. En Power BI, las visuales generalmente tienen sus propios filtros de top-N, pero añádanlos en KQL también.

Vigilancia de la salud en racimo

Azure Data Explorer proporciona registros de diagnóstico incorporados y métricas a través de Azure Monitor. métricas clave para ver:

  • Ingestión de latencia: Tiempo medio de la creación de eventos para ser consultable.
  • Pregunta de latencia: P50 y P99 tiempos de ejecución.
  • Uso de la CPU y la memoria: Si es consistentemente alto, considere el escalado.
  • Tasa de ingestión:] Asegurarse de que no se está moviendo; dividir los flujos en más particiones si es necesario.

Configurar alertas en Azure Monitor para cuando las consultas de las personas superen un umbral (por ejemplo, P99 ≤ 10 segundos) para que puedas ajustar de forma proactiva.

Alerta y automatización en tiempo real

Un panel de control en tiempo real es más potente cuando se combina con respuestas automatizadas. Azure Data Explorer ofrece varios puntos de integración:

Alertas de Monitor de Azure de ADX

Puede crear consultas programadas] en ADX que se ejecutan en un horario (por ejemplo, cada 5 minutos) y enviar resultados a Azure Monitor. A continuación, definir reglas de alerta que disparan cuando se cumplen las condiciones (por ejemplo, cuenta de error √ 100 en una ventana de 5 minutos). Esto permite acciones como:

  • Enviar un correo electrónico o SMS a través de Grupos de Acción.
  • Intrigando aplicaciones de Azure Logic para ejecutar flujos de trabajo (por ejemplo, reiniciar un servicio, crear un ticket de incidencia).
  • Llamando a webhooks para notificar sistemas externos.

Aplicaciones lógicas Azure y Microsoft Power Automate

Usa aplicaciones lógicas con el conector "Execute Kusto Query" para buscar datos de ADX y luego tomar acción. Por ejemplo, si una consulta detecta un aumento en el uso de CPU a través de VMs, una aplicación lógica puede activar un programa de automatización de Azure para escalar el VMSS. Esto cierra el bucle entre monitoreo y remediación.

Stream Analytics y ADX como Sink

Para alertas de latencia incluso menores, la transmisión de datos a través de Azure Stream Analytics, que puede aplicar ventanas temporales y empujar eventos de alerta simultáneamente a ADX (para análisis histórico) y a un suscriptor de Event Hubs para alerta inmediata.

Use casos y ejemplos del mundo real

  • ]DevOps Observability Dashboard: Logros ágiles, métricas y rastros de microservicios a través de los grupos de Kubernetes. ADX ingesta de los centros de eventos de Fluentd/Logstash Azure, y el panel Power BI muestra tasas de solicitud, respuestas de error y retrasos en la cola.
  • IoT Fleet Monitoring: Conectar IoT Hub a ADX para la telemetría de vehículos (ubicación, velocidad, estado de la batería). Un mapa en tiempo real visual en Power BI actualiza como informan los vehículos.
  • Detección de Fraude Financiero: Transmite las transacciones a través de Event Hubs en ADX. Los paneles muestran volúmenes de transacción por región y puntajes de anomalía; alertas activan listas de bloqueo cuando se incumplan los umbrales.
  • Análisis del curso de clics: La actividad de usuario de los sitios web se ingiere en ADX. Las pistas de panel usuarios activos, vistas de página por segundo, y embudos de conversión actualizados cada minuto.

Conclusión

Construir un panel analítico en tiempo real con Azure Data Explorer y Power BI es un enfoque robusto y escalable que satisface la creciente demanda de información instantánea. Al aprovechar la ingestión de streaming de ADX, las potentes capacidades de serie de tiempo de KQL, y conexiones de DirectQuery en Power BI, usted puede crear paneles que refrescan cada pocos segundos y manejar terabytes de monitoreo de los datos que se acercan.

Comience pequeño con un solo flujo de telemetría, se iterará en las consultas y se expanda gradualmente a más fuentes de datos. A medida que las necesidades en tiempo real de su organización crecen, la elasticidad de ADX asegura que sus escalas de tableros de control sin comprometer la velocidad. Para más información, explore la DX Event Hubs guía de ingestión y la