Like Prometheus, but for logs.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
loki/production/docker/docker-compose.yaml

164 lines
3.7 KiB

version: "3.8"
networks:
loki:
services:
# Since the Loki containers are running as user 10001 and the mounted data volume is owned by root,
# Loki would not have permissions to create the directories.
# Therefore the init container changes permissions of the mounted directory.
init:
image: grafana/loki:2.6.1
user: root
entrypoint:
- "chown"
- "10001:10001"
- "/loki"
volumes:
- ./loki:/loki
networks:
- loki
grafana:
image: grafana/grafana:9.1.6
ports:
- "3000:3000"
environment:
GF_AUTH_ANONYMOUS_ENABLED: "true"
GF_AUTH_DISABLE_LOGIN_FORM: "true"
GF_AUTH_ANONYMOUS_ORG_ROLE: "Admin"
volumes:
- ./config/datasources.yaml:/etc/grafana/provisioning/datasources/datasources.yml
- grafana:/var/lib/grafana
networks:
- loki
prometheus:
image: prom/prometheus:v2.27.0
ports:
- 9090:9090
volumes:
- ./config/prometheus.yaml:/etc/prometheus/prometheus.yml
- prometheus:/prometheus
command: [ '--log.level=debug', '--config.file=/etc/prometheus/prometheus.yml', '--query.lookback-delta=30s' ]
networks:
- loki
# for testing purposes only, disable in production
log-generator:
image: mingrammer/flog
command:
- --loop
- --format=json
- --number=10 # number of log lines to generate per second
- --delay=100ms # delay between log lines
- --output=/var/log/generated-logs.txt
- --overwrite
- --type=log
volumes:
- ./loki/:/var/log/
promtail:
image: grafana/promtail:2.6.1
volumes:
- ./loki/:/var/log/
- ./config:/etc/promtail/
ports:
- "9080:9080"
command: -config.file=/etc/promtail/promtail.yaml
networks:
- loki
minio:
image: minio/minio
entrypoint:
- sh
- -euc
- |
mkdir -p /data/loki-data && \
mkdir -p /data/loki-ruler &&
minio server /data
environment:
- MINIO_ACCESS_KEY=loki
- MINIO_SECRET_KEY=supersecret
- MINIO_PROMETHEUS_AUTH_TYPE=public
- MINIO_UPDATE=off
ports:
- "9000:9000"
volumes:
- ./.data/minio:/data
networks:
- loki
loki-gateway:
image: nginx:1.19
volumes:
- ./config/nginx.conf:/etc/nginx/nginx.conf
ports:
- "8080:80"
- "3100"
networks:
- loki
loki-frontend:
image: grafana/loki:2.6.1
volumes:
- ./config:/etc/loki/
ports:
- "3100"
command: "-config.file=/etc/loki/loki.yaml -target=query-frontend -frontend.downstream-url=http://loki-read:3100"
networks:
- loki
deploy:
mode: replicated
replicas: 2
loki-read:
image: grafana/loki:2.6.1
volumes:
- ./config:/etc/loki/
ports:
- "3100"
- "7946"
# uncomment to use interactive debugging
# - "40000-40002:40000" # # makes the replicas available on ports 40000, 40001, 40002
#cap_add:
# - SYS_PTRACE
#security_opt:
# - apparmor=unconfined
command: "-config.file=/etc/loki/loki.yaml -target=read"
networks:
- loki
restart: always
deploy:
mode: replicated
replicas: 3
# only needed for interactive debugging with dlv
loki-write:
image: grafana/loki:2.6.1
volumes:
- ./config:/etc/loki/
ports:
- "3100"
- "7946"
# uncomment to use interactive debugging
# - "50000-50002:40000" # makes the replicas available on ports 50000, 50001, 50002
# cap_add:
# - SYS_PTRACE
# security_opt:
# - apparmor=unconfined
command: "-config.file=/etc/loki/loki.yaml -target=write"
networks:
- loki
restart: always
deploy:
mode: replicated
replicas: 3
volumes:
prometheus:
grafana: