Alejandría

Busca en Alejandría

Plataformas

Grafana Loki

Backend de agregación de logs que indexa etiquetas y conserva el contenido para consulta.

01

En pocas palabras

Backend de agregación de logs que indexa etiquetas y conserva el contenido para consulta.

Qué problema resuelve

Coste de indexar todo el texto de los logs y correlación difícil con otras señales.

Cuándo utilizarlo

Aplicaciones distribuidas. Ejemplo: consultar errores de un servicio durante un incidente.

02

De la idea a la práctica

Funcionamiento, ejemplos y decisiones para pasar al siguiente nivel.

En el Radar compartido: Trial (valoración de la edición aportada).

Cómo funciona

Organiza logs en streams identificados por etiquetas y utiliza LogQL para filtrarlos. En despliegues escalables emplea almacenamiento de objetos y componentes distribuidos.

Ejemplo de uso

Consultar {service_name=“pagos”} |= “timeout” en el intervalo del incidente. Seguir un trace_id del contenido para inspeccionar la traza relacionada en Grafana.

Etiquetas: la decisión más importante

Loki indexa solo las etiquetas; el contenido de las líneas se comprime y se recorre en la consulta. Cada combinación única de etiquetas crea un stream.

Buena etiqueta (baja cardinalidad) Mala etiqueta (alta cardinalidad)
service_name, namespace, env, cluster, level user_id, trace_id, request_id, IP

Los valores de alta cardinalidad van en el contenido o como structured metadata (por ejemplo trace_id), que se adjunta a cada línea sin crear streams nuevos.

LogQL en la práctica

# Filtrado de líneas
{service_name="pagos", env="prod"} |= "timeout" != "healthcheck"

# Parsear JSON y filtrar por un campo
{service_name="pagos"} | json | status >= 500 | line_format "{{.method}} {{.path}} {{.status}}"

# Métrica: errores por segundo por servicio
sum by (service_name) (rate({env="prod"} |= "ERROR" [5m]))

# Percentil de duración extraído de los logs
quantile_over_time(0.95, {service_name="pagos"} | json | unwrap duration_ms [5m]) by (endpoint)
Operador Uso
` =/!=`
` /!`
` json,
` unwrap`

Filtra primero por etiquetas y texto, y parsea después: es mucho más barato.

Modos de despliegue

Modo Uso
Monolítico Un binario; desarrollo o volúmenes pequeños
Microservicios Componentes separados (distributor, ingester, querier, compactor) escalados por separado
Grafana Cloud Gestionado

En producción usa almacenamiento de objetos (GCS, S3) con índice TSDB, y el compactor para aplicar la retención.

Alertas desde logs

El ruler evalúa consultas LogQL métricas como reglas de Prometheus: por ejemplo, alertar si rate({service_name="pagos"} |= "saldo negativo" [5m]) > 0. Útil para eventos de negocio que no tienen métrica propia.

Correlación

Configura en Grafana un derived field que convierta el trace_id del log en un enlace a Grafana Tempo, y envía logs con Grafana Alloy añadiendo las mismas etiquetas de servicio que usan métricas y trazas.

Criterios de implementación

Definir retención y límites por tenant. Autenticación y aislamiento requieren configuración; evaluar consultas amplias, volumen y costes de almacenamiento.

Continúa en las fuentes

Documentación oficial para verificar detalles y explorar más.