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
| ELK | Loki | |
|---|---|---|
| RAM-användning | 4-8 GB minimum | 256 MB räcker |
| Indexering | Fulltext | Bara labels |
| Sökbarhet | Bättre för fri text | Bra nog för det mesta |
| Pris | Dyrt vid scale | Billigt |
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.