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
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.
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.jsonATENCIÓ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.
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.jsonATENCIÓ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.
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.jsonATENCIÓ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.
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
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
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!
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
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'
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
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ónDebe 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
- Hacer gráficos de barras
- Configurar una tabla con semáforo de colores
- Usar el value mapping
- Usar expresiones regulares
- 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
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.
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.
Modo de coloración
Debe indicarle a Grafana que use el código de respuesta para el color de las barras.
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ónDebe 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
- Hacer gráficos circulares
- Construir un panel a partir de otro
- 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
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.
Cambiar visualización
Debe modificar la visualización para que los datos ahora se muestren en forma de sectores.
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.
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
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
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.
La visualización
Debe seleccionar la visualización que permite mostrar series temporales.
Alertas #
Lo que vas a aprender en esta secciónDebe configurar una alerta sobre errores de servidor.
- Configurar una alerta
INFORMACIÓN: un error de servidor es un log con un código de respuesta HTTP 5xx
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 ...