<mohammadrony>
services:
  prometheus:
    image: prom/prometheus
    container_name: prometheus
    restart: unless-stopped
    ports:
      - "9090:9090"
    volumes:
      - ./prometheus.yaml:/etc/prometheus/prometheus.yaml
      - prometheus-data:/prometheus
    command:
      - --config.file=/etc/prometheus/prometheus.yaml
      - --storage.tsdb.path=/prometheus
      - --web.console.libraries=/etc/prometheus/console_libraries
      - --web.console.templates=/etc/prometheus/consoles
      - --web.enable-remote-write-receiver
      - --enable-feature=exemplar-storage
      - --enable-feature=native-histograms
      - --web.enable-lifecycle
    deploy:
      resources:
        limits:
          cpus: '0.5'
          memory: '1G'
        reservations:
          cpus: '0.25'
          memory: '512M'
    networks:
      - monitoring

  grafana:
    image: grafana/grafana-enterprise:latest
    container_name: grafana
    volumes:
      - ./grafana-datasources.yaml:/etc/grafana/provisioning/datasources/datasources.yaml
      - grafana-data:/var/lib/grafana
    environment:
      - GF_FEATURE_TOGGLES_ENABLE=traceqlEditor
    #   - GF_AUTH_ANONYMOUS_ENABLED=true
    #   - GF_AUTH_ANONYMOUS_ORG_ROLE=Admin
    #   - GF_AUTH_DISABLE_LOGIN_FORM=true
    deploy:
      resources:
        limits:
          cpus: '1'
          memory: '1024M'
        reservations:
          cpus: '0.5'
          memory: '512M'
    ports:
      - "3000:3000"
    networks:
      - monitoring

  cadvisor:
    container_name: cadvisor
    image: gcr.io/cadvisor/cadvisor:latest
    restart: unless-stopped
    ports:
      - "8080:8080"
    volumes:
      - "/:/rootfs"
      - "/var/run:/var/run"
      - "/sys:/sys"
      - "/var/lib/docker/:/var/lib/docker"
      - "/dev/disk/:/dev/disk"
    privileged: true
    devices:
      - "/dev/kmsg"
    deploy:
      resources:
        limits:
          cpus: '0.5'
          memory: '1G'
        reservations:
          cpus: '0.25'
          memory: '512M'
    networks:
      - monitoring

  loki:
    image: grafana/loki:latest
    container_name: loki
    restart: unless-stopped
    volumes:
      - loki-data:/loki
      - ./loki-config.yaml:/etc/loki/loki-config.yaml
    command: -config.file=/etc/loki/loki-config.yaml
    ports:
      - 3100:3100
    deploy:
      resources:
        limits:
          cpus: '0.5'
          memory: '1G'
        reservations:
          cpus: '0.25'
          memory: '512M'
    networks:
      - monitoring

volumes:
  prometheus-data:
  grafana-data:
  loki-data:

networks:
  monitoring:
    name: monitoring
    driver: bridge