ELK-stacken (Elasticsearch, Logstash, Kibana) är kraftfull men resurskrävande. Loki är ett lättviktsalternativ som fungerar utmärkt för de flesta behov.

Varför Loki?

  • Resurser: Loki använder en bråkdel av minnet jämfört med Elasticsearch
  • Enkelhet: Inga komplexa mappings eller index att hantera
  • Integration: Inbyggt stöd i Grafana — samma dashboard för metrics och loggar

Docker Compose

services:
  loki:
    image: grafana/loki:latest
    command: -config.file=/etc/loki/local-config.yaml
    ports:
      - "3100:3100"
    volumes:
      - loki-data:/loki

  promtail:
    image: grafana/promtail:latest
    volumes:
      - ./promtail-config.yml:/etc/promtail/config.yml
      - /var/log:/var/log:ro
      - /var/lib/docker/containers:/var/lib/docker/containers:ro

  grafana:
    image: grafana/grafana:latest
    ports:
      - "3000:3000"
    environment:
      - GF_SECURITY_ADMIN_PASSWORD=changeme

volumes:
  loki-data:

Promtail-konfiguration

server:
  http_listen_port: 9080

positions:
  filename: /tmp/positions.yaml

clients:
  - url: http://loki:3100/loki/api/v1/push

scrape_configs:
  - job_name: system
    static_configs:
      - targets: ["localhost"]
        labels:
          job: syslog
          __path__: /var/log/syslog

  - job_name: docker
    static_configs:
      - targets: ["localhost"]
        labels:
          job: docker
          __path__: /var/lib/docker/containers/*/*-json.log

LogQL — fråga dina loggar

# Hitta alla felmeddelanden
{job="docker"} |= "error"

# Filtrera på container och parse JSON
{container="nginx"} | json | status >= 400

# Räkna fel per minut
rate({job="docker"} |= "error" [5m])

Jämfört med ELK

ELKLoki
RAM-användning4-8 GB minimum256 MB räcker
IndexeringFulltextBara labels
SökbarhetBättre för fri textBra nog för det mesta
PrisDyrt vid scaleBilligt

För 90% av mina kunder är Loki rätt val. Spara ELK till de fall där du verkligen behöver fulltextsökning i petabyte.