DEV Community

José Alejandro Fiengo Vega
José Alejandro Fiengo Vega

Posted on • Edited on

Guía Profesional para Desplegar Prometheus, Grafana y Loki en Kubernetes con Helm

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

Instale Prometheus:

kubectl create namespace observability
helm install prometheus prometheus-community/prometheus \
  -f charts/prometheus/values.yaml \
  -n observability
Enter fullscreen mode Exit fullscreen mode

Paso 3 – Instalar Grafana

Agregue el repositorio de Grafana:

helm repo add grafana https://grafana.github.io/helm-charts
helm repo update
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

Instale Grafana:

helm install grafana grafana/grafana \
  -f charts/grafana/values.yaml \
  -n observability
Enter fullscreen mode Exit fullscreen mode

Exponer temporalmente el servicio:

kubectl port-forward svc/grafana 3000:80 -n observability
Enter fullscreen mode Exit fullscreen mode

Paso 4 – Instalar Loki y Promtail

Agregue el repositorio Loki:

helm repo add grafana https://grafana.github.io/helm-charts
helm repo update
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

Instale Loki:

helm install loki grafana/loki-stack \
  -f charts/loki/values.yaml \
  -n observability
Enter fullscreen mode Exit fullscreen mode

Paso 5 – Verificar estado y línea base de recursos

Verifique los pods desplegados:

kubectl get pods -n observability
Enter fullscreen mode Exit fullscreen mode

Consulte uso de recursos:

kubectl top pods -n observability
Enter fullscreen mode Exit fullscreen mode

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.


Recursos Adicionales

Top comments (0)