Introducción
Gestionar logs en entornos Kubernetes distribuidos puede convertirse en un dolor de cabeza cuando los pods se escalan dinámicamente, los nodos fallan o los desarrolladores necesitan depurar problemas en tiempo real. Loki, el sistema de logs diseñado por Grafana Labs, ofrece una alternativa ligera y eficiente a soluciones tradicionales como ELK, especialmente cuando trabajas con clusters en AWS EKS donde el costo y la escalabilidad son críticos.
En esta guía, implementaremos un stack completo de logs en EKS usando:
- Loki como backend de logs optimizado para Kubernetes
- Grafana para visualización y dashboards
- Promtail como agente de recolección
- IAM para permisos seguros en AWS
- S3 como almacenamiento persistente opcional
El resultado será un sistema capaz de manejar miles de logs por segundo con un footprint mínimo en tu cluster.
Qué es y para qué sirve
Loki: el «Prometheus de los logs»
Loki no indexa el contenido completo de los logs como hace Elasticsearch. En cambio, usa etiquetas (labels) similares a Prometheus para agrupar streams de logs y solo indexa esas etiquetas más timestamps. Esto lo hace 10x más económico en almacenamiento que soluciones tradicionales.
Casos de uso ideales:- Clusters Kubernetes con alta rotación de pods
- Aplicaciones con logs estructurados (JSON, key=value)
- Entornos donde el costo de almacenamiento es crítico
- Equipos que ya usan Grafana para métricas (integración nativa)
Arquitectura propuesta
graph TD
A[Pods en EKS] -->|Logs| B[Promtail]
B --> C[Loki Distributor]
C --> D[Loki Ingester]
D --> E[Loki Querier]
E --> F[Grafana]
E --> G[S3 (opcional)]
H[AWS IAM] -->|Permisos| B & C & DComponentes clave:| Componente | Rol | Requisitos mínimos |
|---|---|---|
| Promtail | Agente que recolecta logs de pods | 1 vCPU, 256MB RAM |
| Loki Distributor | Balancea carga de logs entrante | 2 vCPU, 2GB RAM |
| Loki Ingester | Escribe logs a almacenamiento | 2 vCPU, 4GB RAM |
| Loki Querier | Ejecuta consultas | 2 vCPU, 2GB RAM |
| Grafana | Visualización y dashboards | 1 vCPU, 1GB RAM |
Versiones probadas
| Componente | Versión mínima | Comando de verificación |
|---|---|---|
| eksctl | 0.169+ |
