4.1 Instalación de Prometheus
Prometheus es un sistema de monitoreo y alertas súper potente de código abierto, diseñado para recolectar y almacenar métricas desde diferentes fuentes, incluyendo contenedores Docker. En esta lección, vamos a revisar en detalle el proceso de configurar el monitoreo de contenedores usando Prometheus, incluyendo instalación, configuración de recolección de métricas e integración con Docker.
1. Descargar e instalar Prometheus
Primero descarga la última versión de Prometheus desde la página oficial:
wget https://github.com/prometheus/prometheus/releases/download/v2.30.3/prometheus-2.30.3.linux-amd64.tar.gz
Descomprime el archivo:
tar xvfz prometheus-*.tar.gz
cd prometheus-*
Mueve los archivos binarios a /usr/local/bin
:
sudo mv prometheus /usr/local/bin/
sudo mv promtool /usr/local/bin/
4.2 Configuración del archivo de configuración de Prometheus
Prometheus usa un archivo de configuración llamado prometheus.yml
para definir las fuentes de métricas y los ajustes de recolección de datos. Crea o edita el archivo prometheus.yml
:
global:
scrape_interval: 15s # Intervalo de recolección de métricas
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
- job_name: 'cadvisor'
static_configs:
- targets: ['localhost:8080']
Este archivo de configuración incluye dos tareas (job):
prometheus
: para recolectar métricas de Prometheus en sí mismo.cadvisor
: para recolectar métricas de cAdvisor, el cual será utilizado para monitorear los contenedores Docker.
5.3 Inicio de Prometheus
Inicia Prometheus utilizando el archivo de configuración creado:
prometheus --config.file=prometheus.yml
Prometheus estará disponible en la dirección http://localhost:9090.
5.4 Instalación y configuración de cAdvisor
cAdvisor
(Container Advisor) — es una herramienta para monitorear contenedores, que recopila y proporciona métricas para contenedores Docker. Para usarlo, realiza los siguientes pasos:
Ejecuta cAdvisor
en un contenedor Docker:
docker run -d \
--name=cadvisor \
--volume=/:/rootfs:ro \
--volume=/var/run:/var/run:ro \
--volume=/sys:/sys:ro \
--volume=/var/lib/docker/:/var/lib/docker:ro \
--publish=8080:8080 \
--privileged \
gcr.io/cadvisor/cadvisor:latest
cAdvisor
estará disponible en la dirección http://localhost:8080.
5.5 Actualización de la configuración de Prometheus para cAdvisor
Asegúrate de que la configuración de Prometheus incluya una tarea para cAdvisor. Un ejemplo de configuración fue mostrado antes.
Reinicia Prometheus para aplicar los cambios:
prometheus --config.file=prometheus.yml
5.6 Verificación de la recopilación de métricas
Ve al interfaz web de Prometheus en la dirección http://localhost:9090 y asegúrate de que Prometheus está recopilando métricas desde cAdvisor. Para eso, haz una consulta en Prometheus:
container_cpu_usage_seconds_total
Deberías ver los datos recopilados de los contenedores Docker.
5.7 Añadiendo métricas adicionales
Puedes añadir métricas adicionales en el archivo de configuración de Prometheus para recopilar más datos sobre tus contenedores. Ejemplo de métricas adicionales:
- job_name: 'node'
static_configs:
- targets: ['localhost:9100']
Para esto necesitarás instalar node_exporter
, que proporciona métricas sobre el estado del sistema host.
Descarga e instala node_exporter
:
wget https://github.com/prometheus/node_exporter/releases/download/v1.2.2/node_exporter-1.2.2.linux-amd64.tar.gz
tar xvfz node_exporter-*.tar.gz
sudo mv node_exporter-1.2.2.linux-amd64/node_exporter /usr/local/bin/
Inicia node_exporter:
node_exporter &
Ahora node_exporter
estará disponible en http://localhost:9100.
5.8 Creación de reglas de alerta
Prometheus soporta la creación de reglas de alerta para notificar a los administradores sobre problemas. Añade las reglas de alerta al archivo de configuración prometheus.yml
:
rule_files:
- "alert.rules"
alerting:
alertmanagers:
- static_configs:
- targets:
- "localhost:9093"
Crea un archivo alert.rules
con un ejemplo de reglas:
groups:
- name: example
rules:
- alert: HighCPUUsage
expr: container_cpu_usage_seconds_total{job="cadvisor"} > 0.85
for: 1m
labels:
severity: warning
annotations:
summary: "Se detectó un alto uso de CPU"
description: "El contenedor está utilizando más del 85% de CPU por más de 1 minuto."
GO TO FULL VERSION