La corrección está integrada en el TP (Ver los recuadros verdes)
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ónPara 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
- Familiarizarse con la interfaz de Grafana
- Creación de tableros
- Asignar etiquetas a un tablero
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
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.
Para ello, en 'Dashboards', debe seguir estos pasos:
- Situarse en la carpeta 'grafana-participants'
- Hacer clic en 'New' y luego en 'New folder'
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.
Para ello, en 'Dashboards', debe seguir estos pasos:
- Situarse en la carpeta creada anteriormente
- Hacer clic en 'New' y luego en 'New dashboard'
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
Para ello, debe ir a los 'settings' del tablero, pestaña 'Variables' y hacer clic en 'Add variable'. En la página que aparece, puede usar los parámetros por defecto y establecer estos valores:
- 'Variable type', seleccione 'Query' porque hemos pedido consultar un índice 'Elasticsearch'.
- 'Name' -> 'host'
- 'Data source' -> Seleccionar la fuente de datos Elasticsearch
- 'Query' -> ' {"find": "terms", "field": "host.keyword"} '
- Debe marcar la opción 'Multi-value' en la sección 'Selection options' para permitir seleccionar varios valores
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
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
Para ello, debe elegir la fuente de datos 'datasource3', ya que corresponde a Elasticsearch. Para saberlo, a la izquierda del nombre tiene el logo de Elasticsearch y a la derecha el tipo 'Elasticsearch'
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!
Debe tener por tanto esta consulta Lucene:
. Recuerde que se pidió antes añadir el filtro sobre la variable, de ahí la adición deresponse:503 AND machine.os:win* AND host:$hostAND host:$hostTipo 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
Para ello, debe elegir, en la parte 'Visualization', el tipo 'Geomap', que corresponde a una visualización en forma de mapa. Y en los parámetros:
- [Map view] Initial view -> View: 'Fit to data'. Para que el mapa haga zoom sobre los puntos.
- [Map layers] Layer 1 -> Layer type: 'Markers'. Para tener puntos como referencia de coordenadas
- [Map layers] Layer 1 -> Data: 'Query A'. Para seleccionar la consulta que proporcionará la información
- [Map layers] Layer 1 -> Location Mode: 'Coords'. Para indicar la forma de identificar las posiciones: coordenadas.
- [Map layers] Layer 1 -> Latitude field: 'geo.coordinates.lat'. Para proporcionar la latitud
- [Map layers] Layer 1 -> Longitude field: 'geo.coordinates.lon'. Para proporcionar la longitud
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'
Para ello, debe rellenar, en la parte 'Visualization', los campos 'Title' y 'Description'
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
Debe usar una transformación para hacerlo. En la pestaña 'Transformations', añada la transformación 'Organize fields by name' y oculte (haciendo clic en el ojo delante del nombre del campo) todos los campos que no se piden. Cuidado, no se pidió mostrar las coordenadas pero no puede ocultarlas o dejará de funcionar el mapa. Con la misma transformación puede cambiar el orden de los elementos para que se muestren en el orden que desee.
Rango horario por defecto
Debe configurar el tablero para que muestre por defecto los datos de 30 días.
El método más sencillo consiste en situarse en el periodo que desee, en nuestro caso 'Last 30 days', y hacer clic en 'Save dashboard'. En la ventana que se abre, marque la casilla 'Update default time range', ponga en 'Message' su mensaje para identificar los cambios realizados por si necesita volver a una versión anterior. Por último, haga clic en 'Save'.
Panel: gráfico de barras #
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.
Debe usar la transformación 'Group by'. El código de respuesta se guarda en el campo 'response', así que configure 'Group by' en ese campo. Solo falta aplicar la operación: 'Calculate' -> 'Count' sobre '@timestamp' (campo único), por ejemplo
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.
Debe usar la transformación 'Convert field type'. El código de respuesta se guarda en el campo 'response', así que configúrelo como 'String'.
Modo de coloración
Debe indicarle a Grafana que use el código de respuesta para el color de las barras.
En los ajustes de la visualización, debe colocar 'response' (donde se guarda el código de respuesta) en el campo 'Color by field'
Semáforo de colores
Debe implementar el semáforo de colores como se pidió arriba.
No se puede usar 'Thresholds' porque tuvimos que convertir el campo a cadena de texto. Por eso usaremos 'Value mappings'. Hay varias opciones, pero la más sencilla es usar este formato de Regex:
- condición: Regex, Regular expression: 2.*, Display text: OK, Color: verde
- condición: Regex, Regular expression: 3.*, Display text: Redirección, Color: amarillo
- condición: Regex, Regular expression: 4.*, Display text: Error de cliente, Color: naranja
- condición: Regex, Regular expression: 5.*, Display text: Error de servidor, Color: rojo
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.
Debe estar en modo de edición y hacer clic en el 'Menu' (arriba a la derecha, con 3 puntos) -> More ... -> Duplicate. O situar el cursor sobre el panel y usar el atajo de teclado 'p d'. Una vez duplicado el panel, solo falta reducir su tamaño y moverlos
Cambiar visualización
Debe modificar la visualización para que los datos ahora se muestren en forma de sectores.
Debe usar la visualización 'Pie chart'. Esto no basta, también hay que cambiar el modo de visualización (Show) a 'All values'
Semáforo de colores
¿Es posible aplicar un semáforo de colores con este tipo de visualización?
No: hay visualizaciones que no permiten personalizar los colores (y por tanto no permiten semáforos): pie chart, timeseries...
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
Debe añadir un nuevo panel con un 'Query type' de 'Logs o Raw Data' y poner esta consulta Lucene
. Por último, debe elegir como visualización 'Logs'. Para empezar, estos parámetros son suficientesresponse:[400 TO 599] AND host:$host
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
Debe cambiar el 'Query type' de la consulta a modo 'Metrics' y añadir esto en 'Lucene Query'
NOT response:[200 TO 3*] AND host:$hostLa 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.
Debe elegir 'Metrics' como 'Query type' y, en las opciones de 'Metrics', poner:
- Metric: Count
- Group By: 'Date Histogram' -> '@timestamp'
- Group By: 'Terms' -> 'response.keyword'
La visualización
Debe seleccionar la visualización que permite mostrar series temporales.
Debe seleccionar la visualización de tipo 'Time series'.
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 ...