Saltar a contenido

Loki

Descripción

Loki es un sistema de agregación de logs diseñado para ser altamente disponible y escalable. Se integra perfectamente con Grafana para visualización.

Configuración

loki:
  image: grafana/loki:latest
  container_name: loki
  volumes:
    - ./loki-config.yml:/etc/loki/loki-config.yml
  command: -config.file=/etc/loki/loki-config.yml
  environment:
    VIRTUAL_HOST: loki.seekdev.com
    VIRTUAL_PORT: 3100
    LETSENCRYPT_HOST: loki.seekdev.com
    LETSENCRYPT_EMAIL: jgarcia@seek.pe
  ports:
    - "3100:3100"
  networks:
    - sonarnet

Configuración de Loki

El archivo loki-config.yml define la configuración:

auth_enabled: false

server:
  http_listen_port: 3100

ingester:
  lifecycler:
    address: 127.0.0.1
    ring:
      kvstore:
        store: inmemory
      replication_factor: 1
    final_sleep: 0s
  chunk_idle_period: 5m
  chunk_retain_period: 30s

schema_config:
  configs:
    - from: 2020-05-15
      store: boltdb-shipper
      object_store: filesystem
      schema: v11
      index:
        prefix: index_
        period: 24h

storage_config:
  boltdb_shipper:
    active_index_directory: /tmp/loki/boltdb-shipper-active
    cache_location: /tmp/loki/boltdb-shipper-cache
    cache_ttl: 24h
    shared_store: filesystem
  filesystem:
    directory: /tmp/loki/chunks

compactor:
  working_directory: /tmp/loki/boltdb-shipper-compactor
  shared_store: filesystem

limits_config:
  reject_old_samples: true
  reject_old_samples_max_age: 168h

Logs de Servicios

SonarQube

# En docker-compose.yml
sonarqube:
  logging:
    driver: "json-file"
    options:
      max-size: "10m"
      max-file: "3"

WireMock

# En docker-compose.yml
wiremock:
  logging:
    driver: "json-file"
    options:
      max-size: "10m"
      max-file: "3"

Consultas en Grafana

Logs de SonarQube

{container_name="sonarqube"}

Errores de WireMock

{container_name="wiremock"} |= "ERROR"

Logs por nivel

{container_name=~"sonarqube|wiremock"} |~ "(?i)error|warn"

Retención de Logs

Configurar retención en loki-config.yml:

limits_config:
  retention_period: 168h  # 7 días

Alertas de Logs

Configurar alertas para:

  • Errores críticos
  • Servicios caídos
  • Patrones de error recurrentes
  • Logs de seguridad