networks:
  loki: {}
services:
  cadvisor:
    container_name: cadvisor
    image: gcr.io/cadvisor/cadvisor:latest
    networks:
      loki: null
    ports:
    - published: 8080
      target: 8080
    restart: always
    volumes:
    - /:/rootfs:ro
    - /var/run:/var/run:rw
    - /sys:/sys:ro
    - /var/lib/docker:/var/lib/docker:ro
  generator:
    build:
      context: ./generator
    container_name: generator
    depends_on:
    - syslog-ng
    networks:
      loki: null
  grafana:
    container_name: grafana
    environment:
      GF_AUTH_ANONYMOUS_ENABLED: "true"
      GF_AUTH_ANONYMOUS_ORG_ROLE: Admin
      GF_AUTH_BASIC_ENABLED: "false"
      GF_AUTH_DISABLE_LOGIN_FORM: "true"
      GF_DASHBOARDS_DEFAULT_HOME_DASHBOARD_PATH: /var/lib/grafana/dashboards/no_folder/loki_syslog_aio_overview.json
    image: grafana/grafana:8.1.2
    networks:
      loki: null
    ports:
    - protocol: tcp
      published: 3000
      target: 3000
    restart: always
    volumes:
    - ./config/grafana/provisioning/datasources:/etc/grafana/provisioning/datasources:ro
    - ./config/grafana/provisioning/dashboards:/etc/grafana/provisioning/dashboards:ro
    - ./config/grafana/dashboards:/var/lib/grafana/dashboards:ro
  loki:
    command: -config.file=/etc/loki/loki-config.yml
    container_name: loki
    depends_on:
    - minio
    image: grafana/loki:2.3.0
    networks:
      loki: null
    ports:
    - protocol: tcp
      published: 3100
      target: 3100
    restart: always
    volumes:
    - ./config/loki-config-s3.yml:/etc/loki/loki-config.yml:ro
  minio:
    command: -c 'mkdir -p /data/loki && /usr/bin/docker-entrypoint.sh minio server /data'
    container_name: minio
    entrypoint: sh
    environment:
      MINIO_ACCESS_KEY: minio123
      MINIO_PROMETHEUS_AUTH_TYPE: public
      MINIO_SECRET_KEY: minio456
    healthcheck:
      interval: 30s
      retries: 3
      test:
      - CMD
      - curl
      - -f
      - http://localhost:9000/minio/health/live
      timeout: 20s
    image: minio/minio:latest
    networks:
      loki: null
    ports:
    - published: 9000
      target: 9000
    restart: always
  node-exporter:
    command: --path.rootfs=/host
    container_name: node-exporter
    image: prom/node-exporter:latest
    networks:
      loki: null
    pid: host
    ports:
    - published: 9100
      target: 9100
    restart: always
    volumes:
    - /:/host:ro,rslave
  prometheus:
    command:
    - --config.file=/etc/prometheus/prometheus.yml
    - --storage.tsdb.path=/prometheus
    - --web.enable-admin-api
    - --web.enable-lifecycle
    container_name: prometheus
    image: prom/prometheus:latest
    networks:
      loki: null
    ports:
    - published: 9090
      target: 9090
    restart: always
    volumes:
    - ./config/prometheus.yml:/etc/prometheus/prometheus.yml:ro
  promtail:
    command: -config.file=/etc/promtail/promtail-config.yml
    container_name: promtail
    image: grafana/promtail:2.3.0
    networks:
      loki: null
    ports:
    - protocol: tcp
      published: 1514
      target: 1514
    - protocol: tcp
      published: 9080
      target: 9080
    restart: always
    volumes:
    - ./config/promtail-config.yml:/etc/promtail/promtail-config.yml:ro
  syslog-ng:
    command: -edv
    container_name: syslog-ng
    depends_on:
    - promtail
    image: balabit/syslog-ng:latest
    networks:
      loki: null
    ports:
    - protocol: udp
      published: 514
      target: 514
    - protocol: tcp
      published: 601
      target: 601
    restart: always
    volumes:
    - ./config/syslog-ng.conf:/etc/syslog-ng/syslog-ng.conf:ro
version: '3.3'
