version: "3.9" services: grafana: image: ${GRAFANA_IMAGE} container_name: ${GRAFANA_CONTAINER_NAME} restart: always labels: - "traefik.enable=true" - "traefik.http.routers.logs.entrypoints=https" - "traefik.http.routers.logs.rule=Host(`grafana.${HOST}`)" - "traefik.http.routers.logs.tls=true" - "traefik.http.routers.logs.tls.certresolver=letsEncrypt" - "traefik.http.services.logs-service.loadbalancer.server.port=3000" - "traefik.docker.network=${PROXY_NETWORK}" environment: - GF_PATHS_DATA=/var/lib/grafana/data - GF_PATHS_LOGS=/var/log/grafana - GF_PATHS_PLUGINS=/var/lib/grafana/plugins - GF_PATHS_PROVISIONING=/etc/grafana/provisioning - GF_AUTH_ANONYMOUS_ENABLED=false - GF_USERS_ALLOW_SIGN_UP=false - GF_USERS_ALLOW_ORG_CREATE=false volumes: - ./configs/grafana-configs/grafana.ini:/etc/grafana/grafana.ini - ./configs/grafana-configs/ldap.toml:/etc/grafana/ldap.toml - ./configs/grafana-configs/datasources.yaml:/etc/grafana/provisioning/datasources/datasources.yaml - ./data/grafana-backup:/backup - ./data/grafana-storage:/var/lib/grafana expose: - 3000 networks: - ${LOKI_NETWORK} - ${PROXY_NETWORK} loki: image: ${LOKI_IMAGE} container_name: ${LOKI_CONTAINER_NAME} restart: always labels: - "traefik.enable=true" - "traefik.http.routers.loki.entrypoints=https" - "traefik.http.routers.loki.rule=Host(`loki.${HOST}`)" - "traefik.http.routers.loki.tls=true" - "traefik.http.routers.loki.tls.certresolver=letsEncrypt" - "traefik.http.routers.loki.middlewares=loki-auth" - "traefik.http.services.loki-service.loadbalancer.server.port=3100" - "traefik.http.middlewares.loki-auth.basicauth.users=${BASIC_AUTH_USER}:${BASIC_AUTH_TOKEN}" - "traefik.docker.network=${PROXY_NETWORK}" command: -config.file=/etc/loki/local-config.yaml volumes: - ./data/loki-storage:/loki - ./configs/loki-configs/local-config.yaml:/etc/loki/local-config.yaml expose: - 3100 networks: - ${LOKI_NETWORK} - ${PROXY_NETWORK} otel-collector: image: ${OTEL_IMAGE} container_name: ${OTEL_CONTAINER_NAME} hostname: ${OTEL_CONTAINER_NAME} command: ["--config=/etc/otel-collector-config.yaml"] volumes: - ./configs/otel-collector/config.yaml:/etc/otel-collector-config.yaml ports: # - "8888:8888" # Prometheus metrics exposed by the collector for scrape - "8889:8889" # Prometheus exporter metrics - "13133:13133" # health_check extension - "4317:4317" # OTLP gRPC receiver - "4318:4318" # OTLP http receiver # - 55679:55679 # zpages extension prometheus: image: ${PROMETHEUS_IMAGE} container_name: ${PROMETHEUS_CONTAINER_NAME} hostname: ${PROMETHEUS_CONTAINER_NAME} volumes: - ./configs/prometheus/:/etc/prometheus/ - ./prometheus_data:/prometheus command: - '--config.file=/etc/prometheus/prometheus.yml' - '--storage.tsdb.path=/prometheus' # - '--enable-feature=otlp-write-receiver' ports: - 9090:9090 networks: ${LOKI_NETWORK}: name: ${LOKI_NETWORK} ${PROXY_NETWORK}: name: ${PROXY_NETWORK}