Este artículo detalla el despliegue del stack Prometheus + Grafana + Loki (PLG) en Kubernetes utilizando Helm. Se establecen las bases para una estrategia de observabilidad robusta, reproducible y alineada con buenas prácticas. Incluye código listo para ejecutar y métricas iniciales para evaluación de recursos. Esta es la Parte 1 de una serie técnica dirigida a equipos DevOps e ingenieros de plataforma.
Contexto
La observabilidad es un pilar esencial en sistemas distribuidos modernos. Kubernetes, por su naturaleza dinámica y compleja, requiere herramientas especializadas que permitan monitorear el comportamiento del clúster, comprender el estado de las aplicaciones y reaccionar ante anomalías.
Sin una solución de observabilidad efectiva, se dificulta la resolución de incidencias, la optimización de recursos y la garantía de confiabilidad del sistema. El stack Prometheus + Grafana + Loki proporciona una base consolidada y extensible para monitoreo, visualización y análisis de logs, y es ampliamente adoptado en entornos de producción.
Requisitos Técnicos
Recurso | Recomendado |
---|---|
Kubernetes | 1.26 o superior |
Helm | v3+ |
Espacio en disco | ≥ 20 GB por nodo |
RAM por nodo | ≥ 4 GB |
Acceso a Internet | Repositorios y charts |
Asegúrese de tener kubectl
configurado con permisos administrativos sobre el clúster.
Paso 1 – Preparar repositorio companion
Se recomienda versionar la configuración del stack en un repositorio Git para mantener consistencia entre ambientes:
git init observability-k8s-demo
cd observability-k8s-demo
git checkout -b step-01
mkdir -p charts/prometheus charts/grafana charts/loki manifests
Paso 2 – Instalar Prometheus con Helm
Agregue el repositorio oficial de Prometheus:
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update
Cree un archivo charts/prometheus/values.yaml
personalizado:
alertmanager:
enabled: false
pushgateway:
enabled: false
server:
resources:
limits:
cpu: 500m
memory: 512Mi
requests:
cpu: 250m
memory: 256Mi
retention: "7d"
persistentVolume:
enabled: true
size: 8Gi
Instale Prometheus:
kubectl create namespace observability
helm install prometheus prometheus-community/prometheus \
-f charts/prometheus/values.yaml \
-n observability
Paso 3 – Instalar Grafana
Agregue el repositorio de Grafana:
helm repo add grafana https://grafana.github.io/helm-charts
helm repo update
Archivo charts/grafana/values.yaml
:
adminPassword: admin123 # Cambiar en producción
datasources:
datasources.yaml:
apiVersion: 1
datasources:
- name: Prometheus
type: prometheus
access: proxy
url: http://prometheus-server.observability.svc.cluster.local
isDefault: true
resources:
limits:
cpu: 300m
memory: 300Mi
requests:
cpu: 100m
memory: 128Mi
Instale Grafana:
helm install grafana grafana/grafana \
-f charts/grafana/values.yaml \
-n observability
Exponer temporalmente el servicio:
kubectl port-forward svc/grafana 3000:80 -n observability
Paso 4 – Instalar Loki y Promtail
Agregue el repositorio Loki:
helm repo add grafana https://grafana.github.io/helm-charts
helm repo update
Archivo charts/loki/values.yaml
:
loki:
persistence:
enabled: true
size: 5Gi
resources:
limits:
cpu: 500m
memory: 512Mi
requests:
cpu: 200m
memory: 256Mi
promtail:
enabled: true
resources:
limits:
cpu: 200m
memory: 256Mi
requests:
cpu: 100m
memory: 128Mi
Instale Loki:
helm install loki grafana/loki-stack \
-f charts/loki/values.yaml \
-n observability
Paso 5 – Verificar estado y línea base de recursos
Verifique los pods desplegados:
kubectl get pods -n observability
Consulte uso de recursos:
kubectl top pods -n observability
Ejemplo de métricas de línea base:
Pod | CPU (m) | RAM (Mi) |
---|---|---|
prometheus-server-xxxxx | 240 | 190 |
grafana-xxxxx | 110 | 130 |
loki-xxxxx | 190 | 210 |
promtail-xxxxx | 90 | 120 |
Buenas prácticas y errores comunes
✅ Usar namespaces dedicados (observability
)
✅ Establecer límites y solicitudes de recursos
✅ Versionar configuración de Helm en Git
✅ Separar ambientes (dev, stage, prod)
✅ Incluir retención y almacenamiento persistente
🚫 No exponer Grafana sin autenticación
🚫 No usar valores por defecto sin revisión
🚫 No ejecutar sin monitoreo de recursos (kubectl top
)
🚫 No omitir configuración de data sources en Helm
Conclusión
El stack Prometheus, Grafana y Loki es una solución madura y flexible para lograr visibilidad operativa en Kubernetes. Esta guía te permite instalarlo de forma reproducible y ajustada a buenas prácticas. En la Parte 2 abordaremos la creación de dashboards, configuración de alertas con PrometheusRule y modelos como RED.
Top comments (0)