160 lines
3.8 KiB
YAML
160 lines
3.8 KiB
YAML
services:
|
|
# --- MinIO ---
|
|
minio:
|
|
container_name: loki-minio
|
|
image: minio/minio:latest
|
|
entrypoint:
|
|
- sh
|
|
- -euc
|
|
- |
|
|
mkdir -p /data/loki-chunks && \
|
|
minio server /data --console-address ":9001"
|
|
environment:
|
|
MINIO_ROOT_USER: loki
|
|
MINIO_ROOT_PASSWORD: supersecret
|
|
ports:
|
|
- "9000:9000"
|
|
- "9001:9001"
|
|
volumes:
|
|
- minio-data:/data
|
|
healthcheck:
|
|
test: ["CMD", "mc", "ready", "local"]
|
|
interval: 5s
|
|
timeout: 5s
|
|
retries: 10
|
|
networks:
|
|
loki-net:
|
|
ipv4_address: 192.168.97.10
|
|
|
|
# --- Loki Write ---
|
|
loki-write:
|
|
container_name: loki-write
|
|
image: grafana/loki:3.4.2
|
|
hostname: loki-write
|
|
command: -config.file=/etc/loki/loki-config.yaml -config.expand-env=true -target=write
|
|
volumes:
|
|
- ./loki-config.yaml:/etc/loki/loki-config.yaml:ro
|
|
- loki-write-data:/loki
|
|
depends_on:
|
|
minio:
|
|
condition: service_healthy
|
|
networks:
|
|
loki-net:
|
|
ipv4_address: 192.168.97.11
|
|
|
|
# --- Loki Read ---
|
|
loki-read:
|
|
container_name: loki-read
|
|
image: grafana/loki:3.4.2
|
|
hostname: loki-read
|
|
command: -config.file=/etc/loki/loki-config.yaml -config.expand-env=true -target=read
|
|
volumes:
|
|
- ./loki-config.yaml:/etc/loki/loki-config.yaml:ro
|
|
- loki-read-data:/loki
|
|
depends_on:
|
|
minio:
|
|
condition: service_healthy
|
|
networks:
|
|
loki-net:
|
|
ipv4_address: 192.168.97.12
|
|
|
|
# --- Loki Backend ---
|
|
loki-backend:
|
|
container_name: loki-backend
|
|
image: grafana/loki:3.4.2
|
|
hostname: loki-backend
|
|
command: -config.file=/etc/loki/loki-config.yaml -config.expand-env=true -target=backend
|
|
volumes:
|
|
- ./loki-config.yaml:/etc/loki/loki-config.yaml:ro
|
|
- loki-backend-data:/loki
|
|
depends_on:
|
|
minio:
|
|
condition: service_healthy
|
|
networks:
|
|
loki-net:
|
|
ipv4_address: 192.168.97.13
|
|
|
|
# --- Gateway (nginx) ---
|
|
gateway:
|
|
container_name: loki-gateway
|
|
image: nginx:1.27-alpine
|
|
volumes:
|
|
- ./nginx.conf:/etc/nginx/nginx.conf:ro
|
|
ports:
|
|
- "3100:3100"
|
|
- "3000:3000"
|
|
depends_on:
|
|
- loki-write
|
|
- loki-read
|
|
- loki-backend
|
|
- grafana
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "wget --quiet --tries=1 --output-document=- http://192.168.97.14:3100/ready | grep -q 'ready'"]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 15
|
|
networks:
|
|
loki-net:
|
|
ipv4_address: 192.168.97.14
|
|
|
|
# --- Vector ---
|
|
vector:
|
|
container_name: loki-vector
|
|
image: timberio/vector:0.44.0-alpine
|
|
volumes:
|
|
- ./vector.yaml:/etc/vector/vector.yaml:ro
|
|
- /var/run/docker.sock:/var/run/docker.sock:ro
|
|
depends_on:
|
|
gateway:
|
|
condition: service_healthy
|
|
networks:
|
|
loki-net:
|
|
ipv4_address: 192.168.97.15
|
|
|
|
# --- Grafana ---
|
|
grafana:
|
|
container_name: loki-grafana
|
|
image: grafana/grafana:12.4
|
|
environment:
|
|
GF_SECURITY_ADMIN_USER: admin
|
|
GF_SECURITY_ADMIN_PASSWORD: admin
|
|
GF_AUTH_ANONYMOUS_ENABLED: "true"
|
|
GF_AUTH_ANONYMOUS_ORG_ROLE: Admin
|
|
volumes:
|
|
- ./provisioning:/etc/grafana/provisioning:ro
|
|
- grafana-data:/var/lib/grafana
|
|
depends_on:
|
|
loki-read:
|
|
condition: service_started
|
|
networks:
|
|
loki-net:
|
|
ipv4_address: 192.168.97.16
|
|
|
|
# --- Log Generator ---
|
|
log-generator:
|
|
container_name: loki-log-generator
|
|
image: mingrammer/flog:0.4.3
|
|
command: -f json -d 2s -l
|
|
labels:
|
|
vector.collect: "true"
|
|
depends_on:
|
|
- vector
|
|
networks:
|
|
loki-net:
|
|
ipv4_address: 192.168.97.17
|
|
|
|
networks:
|
|
loki-net:
|
|
driver: bridge
|
|
ipam:
|
|
config:
|
|
- subnet: 192.168.97.0/24
|
|
gateway: 192.168.97.1
|
|
|
|
volumes:
|
|
minio-data:
|
|
loki-write-data:
|
|
loki-read-data:
|
|
loki-backend-data:
|
|
grafana-data:
|