Configuración de Prometheus

DockerBeginner
Practicar Ahora

Introducción

Prometheus es un potente kit de herramientas de monitorización y alerta de código abierto. Su comportamiento se controla mediante un archivo de configuración, que normalmente se llama prometheus.yml. Este archivo define todo, desde la frecuencia con la que se deben recopilar las métricas, los objetivos a recopilar y cómo gestionar las reglas de alerta.

Este laboratorio es una continuación del laboratorio "Instalación de Prometheus", donde aprendió a instalar y ejecutar Prometheus utilizando Docker. Ahora que sabe cómo poner en marcha Prometheus, este laboratorio le enseñará los fundamentos de la configuración de Prometheus. Comenzará inspeccionando un contenedor de Prometheus en ejecución con una configuración predeterminada. Luego, creará su propio archivo prometheus.yml personalizado, lanzará un nuevo contenedor utilizando este archivo y aprenderá a recargar la configuración sin reiniciar el servicio.

Este es un Guided Lab, que proporciona instrucciones paso a paso para ayudarte a aprender y practicar. Sigue las instrucciones cuidadosamente para completar cada paso y obtener experiencia práctica. Los datos históricos muestran que este es un laboratorio de nivel principiante con una tasa de finalización del 96%. Ha recibido una tasa de reseñas positivas del 100% por parte de los estudiantes.

Verificar que el Contenedor de Prometheus se está Ejecutando

En este paso, verificaremos que el contenedor inicial de Prometheus, que fue iniciado por el script de configuración, está en ejecución. Este contenedor utiliza la configuración predeterminada integrada.

Listemos todos los contenedores de Docker en ejecución para ver nuestro contenedor prometheus-default.

docker ps

Debería ver una salida similar a esta, que muestra que un contenedor con el nombre prometheus-default está activo y en ejecución. La columna PORTS indica que el puerto 9090 en el host está mapeado al puerto 9090 en el contenedor.

CONTAINER ID   IMAGE                       COMMAND                  CREATED          STATUS          PORTS                                       NAMES
a1b2c3d4e5f6   prom/prometheus     "/bin/prometheus --c…"   15 seconds ago   Up 14 seconds   0.0.0.0:9090->9090/tcp, :::9090->9090/tcp   prometheus-default

Esto confirma que nuestra instancia inicial de Prometheus está activa. En el siguiente paso, accederá a la interfaz web de Prometheus para ver la configuración predeterminada en funcionamiento.

Acceder a la Interfaz Web de Prometheus en localhost:9090

En este paso, accederá a la interfaz web de Prometheus, que ahora está en ejecución y expuesta en el puerto 9090. El entorno de LabEx proporciona una forma conveniente de acceder a los servicios web que se ejecutan dentro de la máquina virtual.

Haga clic en el botón + (Nueva Pestaña) ubicado en la parte superior de la interfaz del laboratorio.

Seleccione la opción Web Service e introduzca 9090 como puerto.

Esto abrirá una nueva pestaña del navegador conectada a los servicios que se ejecutan en su entorno de laboratorio.

Dado que hemos mapeado el puerto 9090, la interfaz de usuario de Prometheus estará disponible. Debería ver el Navegador de Expresiones de Prometheus (Prometheus Expression Browser), que es la página principal. Esta interfaz le permite escribir y ejecutar consultas PromQL para explorar métricas.

Página de inicio del Navegador de Expresiones de Prometheus

La presencia de esta página confirma que su contenedor de Prometheus se está ejecutando correctamente y es accesible.

Crear el Archivo prometheus.yml con Configuración Básica de Scrape

En este paso, creará un archivo de configuración personalizado de Prometheus llamado prometheus.yml. Este archivo indicará a Prometheus qué debe monitorizar.

Ahora que ha accedido a la interfaz web de Prometheus y ha confirmado que funciona, creemos un archivo de configuración personalizado que pueda utilizar para configurar Prometheus según sus necesidades.

Utilizaremos el editor de texto nano para crear el archivo en el directorio ~/project.

nano prometheus.yml

Ahora, copie y pegue la siguiente configuración YAML en el editor nano. Esta configuración le indica a Prometheus que obtenga métricas de sí mismo cada 5 segundos.

global:
  scrape_interval: 5s

scrape_configs:
  - job_name: "prometheus"
    static_configs:
      - targets: ["localhost:9090"]

Analicemos esta configuración:

  • global: Esta sección define parámetros que son válidos para todas las demás secciones de configuración.
  • scrape_interval: Esto establece el tiempo predeterminado entre cada scrape a 5 segundos.
  • scrape_configs: Esta sección define el conjunto de objetivos (targets) y parámetros para el scraping.
  • job_name: Este es el nombre asignado al trabajo (job), que se adjuntará como una etiqueta a cualquier serie temporal obtenida de este objetivo.
  • static_configs: Esto especifica una lista de objetivos a monitorizar.
  • targets: Esto lista los endpoints de los que se obtendrán las métricas. En este caso, es el propio servidor de Prometheus.

Después de pegar el contenido, guarde el archivo y salga de nano presionando Ctrl+X, luego Y, y finalmente Enter.

Ejecutar el Contenedor de Prometheus con Configuración Montada

Ahora que tenemos nuestro archivo prometheus.yml personalizado, necesitamos ejecutar un nuevo contenedor de Prometheus que lo utilice. Primero, detengamos y eliminemos el contenedor anterior.

docker stop prometheus-default
docker rm prometheus-default

A continuación, iniciaremos un nuevo contenedor llamado prometheus-custom. Utilizaremos la bandera -v para montar nuestro archivo local prometheus.yml dentro del contenedor en la ubicación esperada /etc/prometheus/prometheus.yml. También añadiremos la bandera --web.enable-lifecycle para habilitar la API de recarga en caliente (hot-reloading), que utilizaremos en el siguiente paso.

docker run -d \
  --name prometheus-custom \
  -p 9090:9090 \
  -v ~/project/prometheus.yml:/etc/prometheus/prometheus.yml \
  prom/prometheus \
  --config.file=/etc/prometheus/prometheus.yml \
  --web.enable-lifecycle

Revisemos las nuevas banderas:

  • -v ~/project/prometheus.yml:/etc/prometheus/prometheus.yml: Este es el montaje de volumen (volume mount). Mapea el archivo prometheus.yml del directorio ~/project de su máquina host a la ruta /etc/prometheus/prometheus.yml dentro del contenedor. Prometheus leerá este archivo al iniciar.
  • --web.enable-lifecycle: Esta bandera de línea de comandos habilita la API HTTP para recargar la configuración, a la que se puede acceder a través del endpoint /-/reload.

Puede verificar que el nuevo contenedor se está ejecutando:

docker ps

Debería ver el contenedor prometheus-custom en la lista.

Recargar la Configuración de Prometheus a través de la API

Una de las características potentes de Prometheus es la capacidad de recargar su configuración sin necesidad de un reinicio completo, lo que evita cualquier interrupción en la recopilación de métricas. Esto es posible porque habilitamos la API de ciclo de vida con la bandera --web.enable-lifecycle.

Primero, modifiquemos nuestro archivo de configuración. Cambiaremos el scrape_interval de 5s a 15s.

Abra el archivo con nano:

nano prometheus.yml

Cambie la línea scrape_interval a 15s:

global:
  scrape_interval: 15s ## Cambiado de 5s

scrape_configs:
  - job_name: "prometheus"
    static_configs:
      - targets: ["localhost:9090"]

Guarde el archivo y salga de nano (Ctrl+X, Y, Enter).

Ahora, en lugar de reiniciar el contenedor, enviaremos una solicitud POST al endpoint /-/reload usando curl. Esto le indica a la instancia de Prometheus en ejecución que recargue su configuración desde el archivo montado.

curl -X POST http://localhost:9090/-/reload

Si la recarga es exitosa, no verá ninguna salida. Este éxito silencioso significa que Prometheus ha aplicado la nueva configuración.

Comprobar Métricas Recopiladas en la Página de Destinos (Targets)

En este paso final, verificaremos que nuestra configuración personalizada está activa revisando la interfaz web de Prometheus.

El entorno de LabEx proporciona una pestaña "Web Terminal" o un mecanismo similar para acceder a los servicios web que se ejecutan dentro de la VM. Abra la interfaz de usuario de Prometheus navegando a http://localhost:9090 en el navegador proporcionado por la interfaz del laboratorio.

Una vez que la interfaz de usuario cargue, haga clic en el menú Status en la barra de navegación superior y luego seleccione Targets.

En la página de Targets, verá los objetivos de recopilación (scrape targets) definidos en su archivo prometheus.yml. Debería ver un objetivo bajo el trabajo (job) prometheus.

  • Endpoint: http://localhost:9090/metrics
  • State: El estado debe ser UP con un fondo verde.
  • Last Scrape / Scrape Duration: Estas columnas muestran cuándo ocurrió la última recopilación y cuánto tiempo tomó. Puede observar que el tiempo entre recopilaciones es ahora de aproximadamente 15 segundos, lo que refleja el cambio que recargamos en el paso anterior.
Página de Targets de Prometheus

Esto confirma que Prometheus cargó con éxito nuestro archivo de configuración personalizado, está recopilando el objetivo especificado y aplicó la recarga de configuración.

Resumen

¡Felicitaciones! Ha completado con éxito este laboratorio sobre la configuración de Prometheus.

En este laboratorio, aprendió a:

  • Crear un archivo de configuración prometheus.yml personalizado.
  • Utilizar montajes de volúmenes de Docker (-v) para proporcionar una configuración personalizada a un contenedor de Prometheus.
  • Habilitar la API de ciclo de vida de Prometheus para permitir la recarga en caliente (hot-reloading).
  • Recargar la configuración de Prometheus sobre la marcha (on-the-fly) utilizando un simple comando curl.
  • Verificar la configuración activa revisando la página de Targets en la interfaz web de Prometheus.

Estas son habilidades fundamentales para gestionar y operar Prometheus en cualquier entorno.