Crear dashboards básicos con Kibana para visualizar agregaciones

Video
15 min~6 min lectura

Reproductor de video

Concepto clave

Las agregaciones en Elasticsearch son el mecanismo principal para realizar analítica en tiempo real sobre tus datos indexados. Piensa en ellas como el equivalente a las funciones GROUP BY y agregación (SUM, AVG, COUNT) en SQL, pero diseñadas para trabajar con datos no estructurados o semiestructurados a gran escala y en tiempo real.

En el contexto de Kibana, un dashboard es una colección de visualizaciones (gráficos, tablas, mapas) que muestran los resultados de estas agregaciones de manera intuitiva. La magia está en que, al combinar Elasticsearch (motor de agregación) con Kibana (interfaz de visualización), puedes crear dashboards que se actualizan automáticamente a medida que nuevos datos llegan, permitiendo monitoreo y toma de decisiones en tiempo real. Una analogía del mundo real sería un panel de control de una fábrica: en lugar de revisar manualmente reportes de producción, ves gráficos que muestran inmediatamente cuántas unidades se produjeron por hora, cuáles líneas tienen más errores, o qué productos son más populares.

Cómo funciona en la práctica

Vamos a crear un dashboard básico paso a paso usando un dataset de ejemplo de ventas de e-commerce. Supongamos que tienes un índice en Elasticsearch llamado ventas-2024 con documentos que representan transacciones, cada uno con campos como producto, categoria, precio, fecha, y region.

  1. Accede a Kibana: Abre Kibana en tu navegador y ve a la sección Dashboard desde el menú principal.
  2. Crea una nueva visualización: Haz clic en Create visualization y selecciona el tipo Vertical Bar. En la configuración, define:
    • Eje X: Agregación por terms en el campo categoria para agrupar ventas por categoría de producto.
    • Eje Y: Agregación por sum en el campo precio para sumar el total de ventas por categoría.
    Guarda esta visualización como Ventas por Categoría.
  3. Añade más visualizaciones: Repite el proceso para crear:
    • Un gráfico de líneas con agregación date_histogram en fecha (por día) y sum en precio para ver tendencias temporales.
    • Una tabla con agregación terms en region y avg en precio para el precio promedio por región.
  4. Construye el dashboard: En la sección Dashboard, crea uno nuevo y añade las visualizaciones guardadas. Organízalas arrastrando y ajustando tamaños.
  5. Configura actualización en tiempo real: En la configuración del dashboard, habilita Auto-refresh para que se actualice cada 30 segundos, reflejando nuevos datos de Elasticsearch automáticamente.
Recuerda: Kibana no almacena datos; solo visualiza resultados de agregaciones ejecutadas en Elasticsearch. Cada vez que abres un dashboard, Kibana envía consultas de agregación a Elasticsearch y renderiza la respuesta.

Caso de estudio

Imagina que trabajas para una plataforma de streaming de música. Tu objetivo es crear un dashboard para el equipo de contenido que muestre métricas clave en tiempo real. Los datos están en un índice Elasticsearch reproducciones con campos como usuario_id, cancion_id, genero, duracion, timestamp, y pais.

Implementamos un dashboard con tres visualizaciones principales:

VisualizaciónAgregaciones UsadasPropósito
Gráfico de barrasterms en genero (top 10) + cardinality en usuario_idMostrar cuántos usuarios únicos escuchan cada género musical
Mapa de calorgeohash_grid en ubicacion + sum en duracionVisualizar la duración total de reproducciones por región geográfica
Métrica grandedate_histogram en timestamp (por hora) + countMonitorear el número de reproducciones por hora para detectar picos

Este dashboard permite al equipo identificar tendencias (ej., aumento de escuchas de jazz en Europa), optimizar recomendaciones, y planificar licencias de contenido basado en datos actuales, no en reportes semanales desactualizados.

Errores comunes

  • Usar agregaciones en campos no optimizados: Si aplicas una agregación terms en un campo de texto sin mapeo keyword, Elasticsearch puede fallar o devolver resultados inconsistentes. Solución: Asegúrate de que los campos usados en agregaciones tengan el tipo adecuado (ej., keyword para agrupaciones, numeric para cálculos).
  • Ignorar el impacto en rendimiento: Agregaciones complejas (ej., cardinality con alta precisión) sobre grandes volúmenes de datos pueden ralentizar Elasticsearch. Solución: Usa parámetros como size para limitar resultados, y considera usar sampler aggregation para datasets masivos.
  • No configurar intervalos de actualización: Dejar el dashboard sin auto-refresh pierde el beneficio de tiempo real. Solución: Establece un intervalo de actualización (ej., 30s) balanceando carga del sistema y necesidad de frescura de datos.
  • Crear dashboards sobrecargados: Añadir demasiadas visualizaciones puede hacer el dashboard lento y confuso. Solución: Prioriza las métricas clave y usa filtros para permitir exploración sin saturar la vista.
  • Olvidar la seguridad de datos: Exponer dashboards con datos sensibles sin control de acceso. Solución: Usa roles de Kibana para restringir acceso basado en índices o campos específicos.

Checklist de dominio

  1. Puedo crear al menos tres tipos de visualizaciones en Kibana (ej., barras, líneas, tablas) usando agregaciones básicas como terms, sum, y avg.
  2. Sé configurar un dashboard para auto-actualizarse y reflejar datos en tiempo real desde Elasticsearch.
  3. Entiendo cuándo usar campos keyword vs. text en agregaciones para evitar errores.
  4. Puedo aplicar filtros de tiempo o campo en un dashboard para segmentar datos dinámicamente.
  5. Sé interpretar los resultados de agregaciones en visualizaciones para extraer insights accionables (ej., identificar picos de tráfico o tendencias de ventas).
  6. Puedo optimizar el rendimiento de dashboards ajustando parámetros como size en agregaciones o intervalos de actualización.
  7. Reconozco la importancia de la seguridad y cómo asignar permisos adecuados en Kibana para dashboards.

Dashboard de Monitoreo de Rendimiento de API

En este ejercicio, crearás un dashboard en Kibana para monitorear el rendimiento de una API en tiempo real, usando un dataset simulado de logs. Sigue estos pasos:

  1. Prepara el entorno:
    • Asegúrate de tener Elasticsearch y Kibana ejecutándose localmente o en un entorno de prueba.
    • Indexa datos de ejemplo en un índice llamado api-logs con al menos 1000 documentos. Cada documento debe tener campos como:
      • timestamp (fecha y hora de la solicitud)
      • endpoint (ej., /users, /products)
      • response_time_ms (tiempo de respuesta en milisegundos)
      • status_code (ej., 200, 404, 500)
      • user_agent (agente de usuario del cliente)
      Puedes generar datos usando un script simple o herramientas como Logstash.
  2. Crea visualizaciones:
    • Visualización 1: Un gráfico de líneas que muestre el tiempo promedio de respuesta (avg en response_time_ms) por hora (usa date_histogram en timestamp). Título: Tiempo de Respuesta Promedio por Hora.
    • Visualización 2: Un gráfico de barras que muestre el número de solicitudes (count) por código de estado (terms en status_code). Título: Solicitudes por Código de Estado.
    • Visualización 3: Una tabla que liste los endpoints más usados (top 5 con terms en endpoint) y su tiempo de respuesta máximo (max en response_time_ms). Título: Endpoints Críticos.
    Guarda cada visualización con nombres descriptivos.
  3. Construye el dashboard:
    • Crea un nuevo dashboard llamado Monitoreo API.
    • Añade las tres visualizaciones y organízalas en un layout claro (ej., gráfico de líneas arriba, barras y tabla abajo).
    • Configura un filtro de tiempo para mostrar solo los últimos 7 días.
    • Habilita auto-refresh para actualizar cada 1 minuto.
  4. Prueba y valida:
    • Verifica que el dashboard se actualice automáticamente al agregar nuevos documentos al índice api-logs.
    • Usa los filtros de Kibana para explorar datos específicos (ej., filtrar por status_code: 500 para errores).
    • Documenta al menos un insight que puedas derivar del dashboard (ej., qué endpoint tiene el mayor tiempo de respuesta).
Pistas
  • Si no tienes datos reales, usa el dev tools de Kibana para indexar documentos de ejemplo con un comando bulk. Asegúrate de que el mapeo del índice defina campos numéricos como float o integer para agregaciones.
  • Al crear el gráfico de líneas, en la configuración de date_histogram, ajusta el intervalo a 1h para agrupar por hora. Usa la opción Auto si Kibana lo sugiere.
  • Para el auto-refresh, encuentra la opción en el menú de configuración del dashboard (icono de engranaje). Prueba con intervalos cortos primero para ver cambios rápidos, pero ajusta a 1 minuto para un entorno de producción simulado.

Evalua tu comprension

Completa el quiz interactivo de arriba para ganar XP.