DEV Community

Cover image for Construye tu primer sistema de Observabilidad con Prometheus y Grafana
Jeison Arenales
Jeison Arenales

Posted on

Construye tu primer sistema de Observabilidad con Prometheus y Grafana

En los posts anteriores estuvimos hablando de qué es la observabilidad y cuáles son sus señales (o pilares) fundamentales. Ahora que conocemos estos conceptos, no existe una mejor manera de entenderlos y aplicarlos que construyendo nuestro propio sistema de observabilidad en un ambiente controlado.

Para ello vamos a utilizar una plataforma que me gusta mucho y que todos podemos usar de manera gratuita: se llama Killercoda, y básicamente nos permite usar un servidor en la nube para hacer nuestras pruebas sin tener que preocuparnos por romper algo o por tener costos asociados.

En este post vamos a completar un laboratorio en Killercoda que nos permite construir una solución básica de observabilidad enfocada en métricas, utilizando Prometheus como nuestro backend de métricas y Grafana para la visualización. Primero vamos a responder algunas dudas que puedas tener.

1. ¿Qué servidor vamos a monitorear?

Vamos a utilizar un servidor en la nube gratuito con Ubuntu Linux que vamos a provisionar con Killercoda. Killercoda nos otorga 1 hora de uso de ese servidor sin ningún costo.

2. ¿Cómo vamos a recolectar las métricas?

Como vimos en el episodio anterior, las métricas nos indican un valor (unidad de medida) en un tiempo de ejecución. Esto está muy bien, pero ¿cómo obtenemos esas métricas desde nuestro servidor? Existen múltiples maneras de obtener métricas de servidores y/o aplicaciones, como la instrumentación o el uso de agentes. Por ahora no vamos a entrar en mucho detalle, ya que para nuestro caso en particular solo necesitamos obtener las métricas generales de nuestro servidor.

Para ello vamos a instalar un programa (Prometheus Node Exporter) en nuestro servidor en la nube que obtiene información del sistema y la expone mediante una URL (endpoint) específica: http://localhost:9100/metrics.

Endpoint de Node Exporter mostrando las métricas expuestas

Algo importante a mencionar es que Prometheus Node Exporter expone las métricas del estado actual de nuestro servidor. No es responsable de almacenarlas ni de mantener un histórico de sus valores; para ello necesitaremos otro componente.

3. ¿Cómo mantener el histórico de las métricas?

Nuestro servidor ya expone las métricas mediante un endpoint específico, pero ahora necesitamos recolectar esa información a lo largo del tiempo y almacenarla para poder consultar el historial de su comportamiento.

Time Series: Una serie temporal es una secuencia de valores de una métrica registrados a lo largo del tiempo. Por ejemplo, podemos registrar el uso de CPU de nuestro servidor cada cierto intervalo: 35% → 42% → 51% → 47%.

Nuestra solución será Prometheus, que es un sistema open-source de monitorización y recopilación de métricas que incluye su propia base de datos de series temporales o TSDB (Time Series Database). Prometheus es muy útil para muchos escenarios, pero para nuestro caso en particular nos enfocaremos en 2 funciones principales:

  1. Recolectar (en inglés: scrape) la información de las métricas de nuestro servidor conectándose a través del endpoint http://localhost:9100/metrics cada 15 segundos.
  2. Almacenar esa información en una base de datos de series temporales o TSDB.

4. ¿Dónde visualizar las métricas de una manera amigable?

Nuestro sistema de monitoreo ya va tomando forma: nuestro servidor expone las métricas usando Node Exporter, Prometheus las recolecta cada 15 segundos y las almacena en una TSDB. En el artículo anterior utilizamos el tablero de un vehículo como analogía para entender las métricas. Ahora necesitamos una aplicación que nos permita construir nuestro propio tablero y visualizar esas métricas de forma amigable.

Aquí vamos a introducir a Grafana, que es una plataforma open-source para la visualización y el análisis de datos. Permite conectarse a diferentes fuentes de datos y convertir la información recopilada en dashboards, gráficos y paneles interactivos.

Arquitectura

Con estos componentes ya identificados, veamos cómo encajan entre sí a nivel de arquitectura:

Arquitectura del sistema de monitoreo: Node Exporter expone métricas, Prometheus las recolecta y almacena, Grafana las visualiza

  • Ubuntu Linux: servidor donde se ejecutará nuestro entorno de monitorización.
  • Node Exporter: componente que expone las métricas del sistema operativo, como CPU, memoria, disco y red. Se ejecuta directamente sobre el servidor Ubuntu.
  • Docker: utilizado para ejecutar Prometheus y Grafana en contenedores, sin necesidad de instalarlos manualmente en el servidor.
  • Prometheus: sistema de monitorización encargado de recolectar esas métricas cada 15 segundos y almacenarlas en su base de datos de series temporales.
  • Grafana: herramienta utilizada para consultar y visualizar las métricas mediante dashboards.
  • Web Browser: utilizado para acceder a la interfaz de Grafana.

Manos a la obra

Ya tenemos claro cómo funcionaría nuestro sistema de monitoreo y por qué necesitamos cada una de sus piezas. Ahora toca construirlo con tus propias manos.

Preparé un escenario guiado en Killercoda donde vas a instalar y configurar cada componente paso a paso, en el mismo orden en que los presentamos en este post:

  1. Instalar Node Exporter directamente en el servidor Ubuntu y verificar que expone las métricas del sistema.
  2. Instalar y configurar Prometheus con Docker Compose, y comprobar que está recolectando (scrapeando) las métricas de Node Exporter.
  3. Instalar Grafana con Docker Compose y conectarlo a Prometheus como data source, verificando la conexión desde Explore.
  4. Importar un dashboard de la comunidad (Node Exporter Full) para visualizar todas las métricas de tu servidor sin tener que construir los paneles desde cero.

Cada paso incluye las verificaciones necesarias para confirmar que todo está funcionando antes de avanzar al siguiente, así que no te preocupes si nunca has usado Docker o Prometheus — el escenario te lleva de la mano.

Dashboard de Grafana mostrando métricas del servidor Ubuntu

👉 Escenario en Killercoda: Construye tu primer sistema de Observabilidad con Prometheus y Grafana

Recuerda que Killercoda te da 1 hora de uso gratuito del servidor — es tiempo de sobra para completar los 4 pasos con calma.

En el próximo capítulo saldremos de las métricas y nos adentraremos en otra de las señales fundamentales de la observabilidad: los logs. Construiremos un nuevo laboratorio utilizando Grafana Loki para recopilar y consultar los registros de nuestro servidor.

Cuéntame cómo te fue con el escenario, si te trabó algo o si tienes dudas sobre alguno de los componentes — déjamelo en los comentarios 👇

Sígueme aquí en dev.to para no perderte los próximos artículos de la serie; voy publicando uno a la vez, sin relleno.

Happy Learning 🚀

Top comments (2)

Collapse
 
jasara82 profile image
Jaime

Muchas gracias por el material, acabo de realizar el laboratorio y esta muy clara la explicación y el paso a paso!

Collapse
 
jeisonarenales profile image
Jeison Arenales

Hola Jaime, me alegra que te haya sido util el laboratorio. Pronto publicare otro laboratorio relacionado a logs, saludos y happy learning 🚀