Monitoreo en Kubernetes: Configuración de Prometheus y Grafana
Operar Kubernetes a ciegas en entornos de producción es una receta garantizada para el desastre. La naturaleza dinámica de los contenedores (que se crean, destruyen y reprograman constantemente) hace que las herramientas tradicionales de monitorización de servidores queden completamente obsoletas.
Para gestionar de forma eficaz clústeres complejos, la industria se ha estandarizado en torno a una combinación ganadora de código abierto: Prometheus para la recolección y almacenamiento de métricas en formato de series temporales, y Grafana para la visualización rica y creación de cuadros de mando (dashboards).
En este artículo veremos la arquitectura de monitorización en Kubernetes y cómo desplegar este stack utilizando las mejores prácticas modernas.
La Arquitectura de Monitoreo Cloud Native
Para entender cómo funciona este stack, es vital conocer el flujo de los datos desde que se producen hasta que se visualizan:
- Exposición de Métricas (Endpoints de
/metrics): Cada componente (nodos de Kubernetes, la API del sistema y tus propios microservicios) expone una URL HTTP bajo el formato estándar de Prometheus donde muestra sus métricas en texto plano. - Kube-State-Metrics: Un servicio auxiliar que escucha la API de Kubernetes y traduce la información de estado de los recursos (número de Pods deseados, estado de los nodos, reinicios de contenedores) en métricas legibles por Prometheus.
- Node Exporter: Un daemon que se ejecuta en cada nodo físico o virtual para extraer métricas de hardware del sistema operativo subyacente (uso de disco, E/S de red, memoria libre, carga del kernel).
- Prometheus Server (Pull Model): A diferencia de otros sistemas que empujan datos, Prometheus realiza peticiones HTTP de forma activa (hace scraping) periódicamente a todos los servicios registrados para descargar sus métricas y almacenarlas en su base de datos temporal (TSDB).
- Grafana: Se conecta a Prometheus como origen de datos (Data Source) para consultar las métricas mediante consultas PromQL y renderizarlas en gráficos interactivos en tiempo real.
Despliegue Simplificado con kube-prometheus-stack
Instalar y configurar manualmente cada una de estas piezas por separado (definir ServiceMonitors, configurar alertas de Alertmanager, diseñar paneles de Grafana) requiere días de configuración.
La forma estándar y recomendada por la comunidad es utilizar Helm y el chart unificado kube-prometheus-stack (mantenido por el proyecto Prometheus Operator), el cual instala de forma automática todo el ecosistema configurado por defecto.
Paso 1: Añadir el repositorio de Helm
Asegúrate de tener Helm instalado y añade el repositorio oficial de la comunidad de Prometheus:
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update
Paso 2: Configurar y personalizar los valores básicos
Antes de instalar, creamos un archivo values.yaml para habilitar el almacenamiento persistente en Prometheus y definir credenciales de acceso seguras para Grafana:
grafana:
adminPassword: "UnaContrasenaMuySegura2026"
persistence:
enabled: true
size: 10Gi
prometheus:
prometheusSpec:
retention: 15d
storageSpec:
volumeClaimTemplate:
spec:
accessModes: ["ReadWriteOnce"]
resources:
requests:
storage: 20Gi
Paso 3: Lanzar la instalación
Instala el stack en un namespace dedicado a la observabilidad:
kubectl create namespace monitoring
helm install prometheus-stack prometheus-community/kube-prometheus-stack -f values.yaml -n monitoring
Dashboards Fundamentales en Grafana
Una vez instalado, puedes acceder a la interfaz de Grafana mediante port-forward:
kubectl port-forward svc/prometheus-stack-grafana -n monitoring 3000:80
Al acceder a http://localhost:3000 con el usuario admin y la contraseña definida en tus valores, descubrirás que el chart ha preconfigurado docenas de dashboards extremadamente completos. Los paneles más críticos que debes revisar con frecuencia son:
- Kubernetes / Compute Resources / Cluster: Visión general de la capacidad de cómputo y consumo total de CPU y memoria de todo el clúster.
- Kubernetes / Compute Resources / Namespace (Pods): Permite ver en detalle qué namespaces y qué pods están consumiendo la mayor cantidad de recursos.
- Use Method (Utilización, Saturación y Errores): El panel ideal para hacer troubleshooting rápido cuando los nodos muestran signos de degradación.
Implementar este stack te dotará de la visibilidad necesaria para anticipar problemas de capacidad, optimizar los recursos del clúster y asegurar la alta disponibilidad de tus aplicaciones en producción.