RousselTMLEARNING

TP · Grafana: del descubrimiento a la experiencia

Proyecto 4: Explotación de Elasticsearch

Lo que vas a aprender en este TP
  • Familiarizarse con la interfaz de Grafana
  • Creación de tableros
  • Asignar etiquetas a un tablero
  • Identificar y reconocer la fuente de datos
  • Construcción y uso de una consulta Lucene
  • Uso de una visualización de tipo Geomap
  • Personalización de la visualización
  • Definir el rango horario por defecto
  • Definir el título y la descripción de un panel
  • Hacer gráficos de barras
  • Configurar una tabla con semáforo de colores
  • Usar el value mapping
  • Usar expresiones regulares
  • Hacer gráficos circulares
  • Construir un panel a partir de otro
  • Familiarizarse con la visualización de tipo Logs
  • Hacer consultas por rangos con Lucene
  • Hacer series temporales
  • Usar el modo Metrics de la fuente de datos Elasticsearch
  • Hacer agrupaciones según un criterio
  • Excluir un campo por negación con lucene
  • Configurar una alerta

Introducción #

Lo que vas a aprender en esta sección
  • Familiarizarse con la interfaz de Grafana
  • Creación de tableros
  • Asignar etiquetas a un tablero
Para realizar este proyecto, debe instalar su propia instancia de Grafana (hay un taller disponible para ello). Pero si está realizando un curso presencial, puede pedirle a su formador las credenciales para conectarse a la instancia https://demo.rousseltm.fr

AVISO: no dude en hacernos preguntas, porque hay conceptos de otros productos que debe conocer (o dominar) para configurar fácilmente sus tableros Grafana:

  • Query type: le recomendamos ver este vídeo, que explica los diferentes tipos de consultas que puede hacer en Grafana con Elasticsearch. Aquí tiene el resumen necesario para hacer este taller:
    • Metrics: se usa para construir gráficos temporales (time series). Se basa en las agregaciones de Elasticsearch (date_histogram, terms, avg, count, etc.).
    • Logs (valor por defecto): modo orientado a observabilidad/logs. Muestra los eventos (documentos) de forma cronológica. Grafana formatea los campos (@timestamp, message, log.level, etc.) para parecerse a un explorador de logs (como Kibana Discover).
    • Raw data: devuelve los documentos de Elasticsearch tal como se almacenan (JSON en bruto). Menos «amigable» que el modo Logs, pero más fiel a los datos.
    • Raw Document (obsoleto): versión antigua de Raw data. Usaba _source directamente y no ofrecía todas las optimizaciones recientes de Grafana.

  • Lucene query: le recomendamos ver este vídeo, que explica la diferencia entre los lenguajes de Elasticsearch. Necesitará comprender el lenguaje Lucene para hacer este taller y lo esencial se explica en el vídeo
.
  1. Primeros pasos

    Debe crear una carpeta y colocar en ella su tablero. Si se trata de un curso en grupo, el formador le asignará una carpeta dedicada.

  2. Creación del tablero

    En la carpeta que acaba de crear, debe crear un tablero al que llamará 'proyecto 4' y asignarle la etiqueta 'proyecto 4'. Luego debe identificar la fuente de datos correcta que corresponde a Elasticsearch.

  3. Creación de una variable

    Debe crear una variable llamada 'host' que muestre la lista de dominios (campo 'host') presentes en la fuente de datos de tipo 'Elasticsearch'. Debe permitir seleccionar varias opciones en la variable.
    ATENCIÓN: cada uno de los paneles siguientes debe variar según la elección de la variable

Panel: mapa #

Lo que vas a aprender en esta sección
  • Identificar y reconocer la fuente de datos
  • Construcción y uso de una consulta Lucene
  • Uso de una visualización de tipo Geomap
  • Personalización de la visualización
  • Definir el rango horario por defecto
  • Definir el título y la descripción de un panel

Familiarizarse con la representación en forma de mapa

  1. Fuente de datos

    Debe identificar y elegir la fuente de datos de tipo Elasticsearch.
    INFORMACIÓN: en la empresa, debe definir una convención de nombres en Grafana. El error que cometen algunos es poner el tipo de la fuente en el nombre, aunque se identifica fácilmente en la consola de Grafana
  2. La consulta

    Debe construir una consulta Lucene para mostrar únicamente los documentos que tienen un status http '503' y cuyo campo 'machine.os' empieza por 'win'. Recuerde que creó una variable, ¡así que todas las consultas deben incluirla!

  3. Tipo de visualización

    Debe elegir una visualización que corresponda a una representación en forma de mapa y use estos campos para las coordenadas:
    • Latitud: geo.coordinates.lat
    • Longitud: geo.coordinates.lon
  4. Título y descripción

    Debe definir, para la visualización, como título 'Distribución geográfica de los visitantes' y como descripción 'Representación geográfica de los usuarios'

  5. El detalle de los puntos

    Debe configurar la tabla para que muestre únicamente estos campos al situarse sobre un punto:
    • host
    • clientip
    • @timestamp
    • geo.dest
    • geo.src
    • message
    Y todo campo necesario para el funcionamiento del mapa. Los campos deben mostrarse en el orden exacto de los elementos.
  6. Rango horario por defecto

    Debe configurar el tablero para que muestre por defecto los datos de 30 días.

Panel: gráfico de barras #

Lo que vas a aprender en esta sección
  • Hacer gráficos de barras
  • Configurar una tabla con semáforo de colores
  • Usar el value mapping
  • Usar expresiones regulares
Debe crear un panel que muestre un gráfico de barras con el desglose de los códigos de estado HTTP. Configure un semáforo de colores
  • Verde con el mensaje 'OK': código 2xx
  • Amarillo con el mensaje 'Redirección': código 3xx
  • Naranja con el mensaje 'Error de cliente': código 4xx
  • Rojo con el mensaje 'Error de servidor': código 5xx
  1. Agrupación de los datos

    Debe implementar, mediante las transformaciones, la agrupación de los datos por código de respuesta y contar cuántas veces aparece a lo largo del tiempo.

  2. Conversión de los datos

    Un gráfico de barras usa campos de tipo 'string'. Por tanto, debe convertir los códigos de respuesta a cadena de texto.

  3. Modo de coloración

    Debe indicarle a Grafana que use el código de respuesta para el color de las barras.

  4. Semáforo de colores

    Debe implementar el semáforo de colores como se pidió arriba.

Panel: gráfico circular #

Lo que vas a aprender en esta sección
  • Hacer gráficos circulares
  • Construir un panel a partir de otro
Debe crear un panel que muestre un gráfico de barras con el desglose de los códigos de respuesta. Debe personalizar las etiquetas según este modelo
  • Mensaje 'OK': código 2xx
  • Mensaje 'Redirección': código 3xx
  • Mensaje 'Error de cliente': código 4xx
  • Mensaje 'Error de servidor': código 5xx
  1. Duplicar un panel

    Debe duplicar el panel que acaba de crear (Panel: gráfico de barras). Y redimensionarlos para que se muestren en la misma fila. El de barras ocupa aproximadamente 2/3 de la fila y el clon 1/3.

  2. Cambiar visualización

    Debe modificar la visualización para que los datos ahora se muestren en forma de sectores.

  3. Semáforo de colores

    ¿Es posible aplicar un semáforo de colores con este tipo de visualización?

Panel: Logs #

Lo que vas a aprender en esta sección
  • Familiarizarse con la visualización de tipo Logs
  • Hacer consultas por rangos con Lucene

Debe añadir al tablero un panel para visualizar Logs.

  1. Errores HTTP

    Debe añadir un panel para representar logs y que muestre únicamente los logs de errores HTTP.
    INFORMACIÓN: un log de error HTTP es un log con un código de respuesta HTTP de 4xx a 5xx

Panel: serie temporal #

Lo que vas a aprender en esta sección
  • Hacer series temporales
  • Usar el modo Metrics de la fuente de datos Elasticsearch
  • Hacer agrupaciones según un criterio
  • Excluir un campo por negación con lucene

Crear una serie temporal con datos procedentes de Elasticsearch. Este gráfico debe mostrar la evolución del número de documentos por código de respuesta HTTP

  1. El tipo de consulta

    Debe seleccionar el modo adecuado para hacer una serie temporal. Y en la consulta, excluir todos los status HTTP 2xx y 3xx

  2. La agrupación

    Debe configurar Grafana para que agrupe las métricas por tiempo (en Elasticsearch, el campo de tiempo por defecto es '@timestamp') y por código de respuesta HTTP.

  3. La visualización

    Debe seleccionar la visualización que permite mostrar series temporales.

Alertas #

Lo que vas a aprender en esta sección
  • Configurar una alerta
Debe configurar una alerta sobre errores de servidor.
INFORMACIÓN: un error de servidor es un log con un código de respuesta HTTP 5xx
  1. Error de servidor

    Debe configurar una alerta que se dispare cada vez que ocurra un error de servidor. Las notificaciones deben enviarse al punto de contacto 'RousselTM'. Puede verificar las notificaciones en: Ver las notificaciones.

Nivel de dificultad : ●●●○○ (3/5)

Glossaire de la formation

Observabilidad

La capacidad de conocer el estado interno de un sistema a partir de los datos que emite.Estos datos se clasifican en 3 pilares: logs (registros)métric...

Grafana

Plataforma de código abierto para la visualización de datos y el análisis de métricas interactivas.

Prometheus

Sistema de monitorización y alertas de código abierto, particularmente adaptado para la recopilación de métricas en entornos dinámicos (como Kubernete...

APM (Application Performance Monitoring)

Monitorización del rendimiento de aplicaciones para identificar, diagnosticar y resolver problemas complejos relacionados con el rendimiento y la disp...

k6

Herramienta de código abierto para pruebas de carga (load testing) diseñada para ingeniería de rendimiento, que permite evaluar la fiabilidad y escala...

Trazas distribuidas

Técnica (proveniente del pilar de Trazas) que permite seguir el recorrido completo de una solicitud a través de múltiples microservicios para identifi...

Métricas

Medidas numéricas recopiladas a intervalos regulares (ej: CPU, RAM, tiempo de respuesta) utilizadas para evaluar el estado de salud general de un sist...

Alerting (Alertas)

Proceso que consiste en notificar a los equipos (vía email, Slack, Teams) cuando se detecta un evento específico, un umbral superado o una anomalía.

Código HTTP (HTTP Code)

Códigos de estado HTTP estandarizados que indican el resultado del procesamiento de una solicitud.1xx (Información): 100 Continue, 101 Switching Proto...

Access Log (Registro de acceso)

Archivo de registro que guarda las solicitudes procesadas por un servidor web (Apache, Nginx, Lighttpd, etc.). Permite rastrear la actividad del servi...

Client IP (IP del Cliente)

La dirección IP del usuario que realiza la solicitud hacia el servidor web. Cuando un usuario pasa por un Load Balancer o un proxy (ej: Cloudflare), l...

Timestamp (Marca de tiempo)

La fecha y la hora exactas en las que el servidor recibió la solicitud.Configuración: %t en Apache, $time_local o $time_iso8601 en Nginx.

Request (Solicitud)

La línea de solicitud inicial del cliente. Generalmente incluye el método HTTP (ej: GET), la URL solicitada y la versión del protocolo HTTP.Configurac...

Status Code (Código de estado)

El código de estado HTTP final devuelto por el servidor al cliente (ej: 200 para un éxito, 404 para recurso no encontrado).Configuración: %>s en Apach...

Size (Tamaño)

El volumen de datos devuelto al cliente, medido en bytes (generalmente sin los encabezados HTTP).Configuración: %b u %O en Apache, $body_bytes_sent en...

Referrer (Referente)

La URL de la página web desde la que el cliente hizo clic o siguió un enlace para acceder al recurso actual.Configuración: %{Referer}i en Apache, $htt...

User-Agent

La información de identificación proporcionada por el cliente sobre su navegador, su sistema operativo y su dispositivo. Su estructura estándar a menu...

Response Time (Tiempo de respuesta)

El tiempo total que tarda el servidor en procesar la solicitud y devolver la respuesta al cliente.Configuración: %D (microsegundos) o %T (segundos) en...

Articles recommandés

Grafana Alloy: Perfilado Continuo con Pyroscope

Descubra cómo configurar el perfilado continuo (Continuous Profiling) en sus entornos utilizando ...