CodeGym /Cursos /Módulo 5. Spring /Lección 259: Uso de Grafana para la visualización de métr...

Lección 259: Uso de Grafana para la visualización de métricas

Módulo 5. Spring
Nivel 20 , Lección 8
Disponible

Ya hemos visto el concepto de Observability y cómo afecta el soporte y la disponibilidad de microservicios. Aprendimos sobre trazado distribuido con Zipkin, configuramos Sleuth para añadir automáticamente identificadores de trazado y comprobamos cómo las peticiones atraviesan los límites de los microservicios. Además, estudiamos el ELK stack para el logging centralizado y empezamos la integración con Prometheus para recopilar métricas. Ahora llega el "postre": visualizar todos los datos recopilados con Grafana. Al fin y al cabo, ninguna Observability está completa sin gráficos bonitos.


¿Por qué Grafana?

Ya hemos trasteado un poco con Grafana, pero toca recordarla y aprender a trabajar con ella dentro de una arquitectura de microservicios.

Imagina que has recogido todas las métricas y logs de tus microservicios. Están ordenados en una base de datos, en Prometheus o en Elasticsearch. Y te sientas a analizarlos... por la línea de comandos.

Por mucho que te guste la consola, analizar miles de líneas de texto no es precisamente lo más entretenido. Grafana nos salva, aportando potentes herramientas para visualizar datos. Es como Maps para datos: en lugar de coordenadas aburridas en papel, tienes mapas vistosos con rutas.

Características de Grafana:

  • Conexión a multitud de fuentes de datos: Prometheus, Elasticsearch, MySQL e incluso Google Sheets.
  • Flexibilidad de los dashboards: tú decides qué y cómo mostrarlo.
  • Métricas potentes: gráficos, histogramas, tablas.
  • Alertas configurables: recibe notificaciones sobre problemas antes de que se vuelvan críticos.
  • Soporte de plugins y visualizaciones personalizadas.

Instalación de Grafana

Grafana se distribuye en paquetes, imágenes Docker e incluso como solución cloud. Pero vamos a hacer la instalación al estilo "programación real de desarrollador" y la haremos con Docker, porque es rápido y fácil.

Arrancando Grafana desde Docker

Asegúrate de que Docker está instalado en tu máquina. Luego ejecuta el siguiente comando:

docker run -d -p 3000:3000 --name=grafana grafana/grafana
  • -d arranca el contenedor en segundo plano.
  • -p 3000:3000 redirige el puerto 3000 de la máquina host al puerto 3000 del contenedor.
  • ¡Contenedor listo! Grafana ya está disponible en el navegador en http://localhost:3000.

Acceso a Grafana

Abre el navegador y ve a http://localhost:3000. Por defecto el usuario y la contraseña son:

  • Usuario: admin
  • Contraseña: admin

En el primer acceso Grafana te pedirá que cambies la contraseña. Por favor, cámbiala para no olvidar que aquí hay auténticos profesionales.


Integración de Grafana con Prometheus

Configuramos Prometheus antes para obtener métricas de Spring Boot vía Actuator. Ahora toca conectar Prometheus como fuente de datos en Grafana.

Paso 1: Añadir la fuente de datos

  1. Entra en Grafana.
  2. Ve al menú (icono de "engranaje" a la izquierda) → Data SourcesAdd data source.
  3. En la lista de fuentes busca Prometheus.
  4. Indica la URL de tu servidor Prometheus (normalmente http://localhost:9090).
  5. Pulsa Save & Test. Si todo está bien verás el mensaje "Data source is working".

Paso 2: Crear el primer dashboard

Ahora es el momento de añadir un poco de magia visual:

  1. Ve al menú principal y elige DashboardNew Dashboard.
  2. Pulsa Add new panel.
  3. En la ventana que se abre selecciona la métrica que quieras visualizar. Por ejemplo, empecemos con http_server_requests_seconds_count (el número de peticiones en tu aplicación Spring Boot).
  4. Elige el tipo de gráfico (por ejemplo, "Time series" para métricas que cambian en el tiempo).
  5. Configura las opciones de visualización y guarda los cambios.

Cómo hacer gráficos chulos

Contaremos más detalles sobre cómo exprimir Grafana al máximo.

Tipos de visualizaciones

Grafana ofrece muchos tipos de gráficos:

  • Time series: gráficos de la evolución de métricas en el tiempo.
  • Table: tablas para presentar datos en formato tabular.
  • Gauge (medidores): visualizaciones numéricas, por ejemplo, "uso de CPU en porcentaje".
  • Heatmap: mapas de calor para mostrar densidad de eventos.

Ejemplo: monitorización de peticiones HTTP

  1. Ve a tu dashboard.
  2. Añade un gráfico nuevo.
  3. En el campo Query selecciona la consulta a Prometheus:
    sum(rate(http_server_requests_seconds_count[5m])) by (status)
    
    Esto mostrará el número de peticiones HTTP en los últimos 5 minutos, agrupadas por códigos de estado (por ejemplo, 200, 404).
  4. Elige el tipo de visualización "Bar chart".
  5. Guarda el panel. ¡Voilà! Ahora tienes un gráfico de la distribución de peticiones HTTP.

Alertas en Grafana

No solo la visualización, las alertas también son clave en el monitoring. Grafana puede enviar notificaciones a Slack, Email, Telegram y otros sistemas de notificación.

Ejemplo: notificación por pico de peticiones

Supongamos que quieres configurar una alerta si el número de peticiones supera 100 en los últimos 5 minutos.

  1. Abre el panel que creaste para monitorizar las peticiones HTTP.
  2. Pulsa "Edit" del panel → pestaña AlertCreate Alert.
  3. Configura las condiciones. Por ejemplo:
    • Expresión: sum(rate(http_server_requests_seconds_count[5m])) > 100
    • Intervalo de comprobación: cada 1 minuto.
  4. Indica el canal de notificación. Por ejemplo, Slack:
    • Ve a Contact Points en la configuración de Grafana.
    • Añade un contacto nuevo, selecciona Slack y proporciona el Webhook URL.

Dashboards para microservicios

Pensemos qué más necesitamos monitorizar en microservicios. Aquí tienes algunas ideas que pueden inspirarte:

  • Errores HTTP: porcentaje de peticiones con códigos 4xx y 5xx (count(status_code >= 400)/count(all_requests)).
  • Uso de CPU y memoria: usa las métricas de la JVM que proporciona Spring Boot Actuator.
  • Datos de latencia: tiempo medio de ejecución de peticiones (avg(http_server_requests_seconds_sum / http_server_requests_seconds_count)).

Integración con otras fuentes de datos

Grafana no es solo Prometheus. Puedes conectar fuentes adicionales para crear un dashboard unificado:

  • Elasticsearch: para mostrar logs.
  • MySQL/Postgres: para hacer consultas directas y visualizar datos desde la BD.
  • Google Analytics: si necesitas datos de tráfico de usuarios.

Usando todas estas posibilidades puedes construir una herramienta de observabilidad potente para tus microservicios.


Preguntas frecuentes

1. ¿Se puede poner Grafana en production? Sí, Grafana se usa ampliamente en entornos de production. Tienes que asegurar el acceso (por ejemplo, poner un user/contraseña fuerte) y usar SSL (se puede configurar con un reverse proxy, por ejemplo, Nginx).

2. Grafana va lento con muchas peticiones, ¿qué hacer? Limita la frecuencia de consultas. Usa agregaciones en Prometheus para reducir la cantidad de datos que envía Grafana.

3. ¿Cuándo conviene usar alertas? Configura alertas solo para métricas críticas. Tener demasiadas notificaciones hará que las alertas sean inútiles.


Ya hemos conocido Grafana: la herramienta que convierte números aburridos en visualizaciones bonitas. Ahora tu monitoring no solo es útil, sino que también alegra la vista.

Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION