RousselTMLEARNING

TP · Grafana: del descubrimiento a la experiencia

Proyecto 5: Primeros pasos

Lo que vas a aprender en este TP
  • Crear un 'drill down' entre tableros
  • Crear variables avanzadas (asistidas): key-value
  • Crear variables avanzadas (personalizadas): key-value
  • 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
  • Crear un 'drill down' entre tableros
  • Crear variables avanzadas (asistidas): key-value
  • Crear variables avanzadas (personalizadas): key-value

Para este proyecto, debe haber completado íntegramente el Proyecto 4

  1. Creación del tablero

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

  2. Variable host_avance1

    Debe crear una variable llamada 'host_avance1' y con la etiqueta 'Host avanzado 1' que muestre la lista de dominios (campo 'host') presentes en la fuente de datos de tipo 'Infinity'. La URL a usar para construir las variables es la siguiente: https://github.com/RousselTM/grafana-formation/blob/main/tp/data/host_avance1.json
    ATENCIÓN: notará que en el json hay dos campos particulares: '__text' y '__value', que son campos especiales que Grafana sabe interpretar como clave y valor de la variable.
  3. Variable host_avance2

    Debe crear una variable llamada 'host_avance2' y con la etiqueta 'Host avanzado 2' que muestre la lista de dominios (campo 'host') presentes en la fuente de datos de tipo 'Infinity'. La URL a usar para construir las variables es la siguiente: https://github.com/RousselTM/grafana-formation/blob/main/tp/data/host_avance2.json
    ATENCIÓN: notará que en el json ya no están los dos campos particulares: '__text' y '__value'. Además, los campos ya no tienen título y tienen forma clave:valor. Por tanto, debe usar el campo 'Regex' para extraer la información que nos interesa.
  4. Variable host_avance3

    Debe crear una variable llamada 'host_avance3' y con la etiqueta 'Host avanzado 3' que muestre la lista de dominios (campo 'host') presentes en la fuente de datos de tipo 'Infinity'. La URL a usar para construir las variables es la siguiente: https://github.com/RousselTM/grafana-formation/blob/main/tp/data/host_avance3.json
    ATENCIÓN: nuevo caso de uso. Esta vez la información que nos interesa está en un subcampo. Por tanto, debe cambiar del Type 'JSON' al type 'UQL'. En el campo 'UQL' que aparecerá deberá construir la sintaxis adecuada.
  5. Prueba de las variables host_avanceX

    Debe crear 3 visualizaciones de tipo 'Text' y colocarlas una al lado de la otra. Cada una mostrará los 3 formatos de variable siguientes:
    Por defecto: ${host_avanceX}
    Valor: ${host_avanceX:value}
    Título: ${host_avanceX:text}

Time series con Annotations #

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: SPC Histogram #

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 ...