diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..998609d --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,131 @@ +version: '3.8' + +#### networks +networks: + docker-traefik_front_network: + external: true + back_network: + driver: bridge + attachable: true + +volumes: + prometheus_data: {} + grafana_data: {} + +#### services +services: + prometheus: + image: prom/prometheus + restart: always + volumes: + - ./prometheus:/etc/prometheus/ + - prometheus_data:/prometheus + command: + - '--config.file=/etc/prometheus/prometheus.yml' + - '--storage.tsdb.path=/prometheus' + - '--web.console.libraries=/usr/share/prometheus/console_libraries' + - '--web.console.templates=/usr/share/prometheus/consoles' +# ports: +# - 9090:9090 + networks: + - docker-traefik_front_network + - back_network + links: + - cadvisor:cadvisor + - alertmanager:alertmanager + depends_on: + - cadvisor + labels: + - "traefik.enable=true" + - "traefik.docker.network=docker-traefik_front_network" +# HTTP + - "traefik.http.routers.prometheus-http.rule=Host(`prometheus.10.0.4.29.traefik.me`)" + - "traefik.http.routers.prometheus-http.entrypoints=http" +# HTTPS + - "traefik.http.routers.prometheus-https.rule=Host(`prometheus.10.0.4.29.traefik.me`)" + - "traefik.http.routers.prometheus-https.entrypoints=https" + - "traefik.http.routers.prometheus-https.tls=true" + - "traefik.http.routers.prometheus-https.service=prometheus-service" +# Middleware +# Service + - "traefik.http.services.prometheus-service.loadbalancer.server.port=9090" + + node-exporter: + image: prom/node-exporter + volumes: + - /proc:/host/proc:ro + - /sys:/host/sys:ro + - /:/rootfs:ro + command: + - '--path.procfs=/host/proc' + - '--path.sysfs=/host/sys' + - --collector.filesystem.ignored-mount-points + - '^/(sys|proc|dev|host|etc|rootfs/var/lib/docker/containers|rootfs/var/lib/docker/overlay2|rootfs/run/docker/netns|rootfs/var/lib/docker/aufs)($$|/)' + ports: + - 9100:9100 + networks: + - back_network + restart: always + deploy: + mode: global + + alertmanager: + image: prom/alertmanager + restart: always + ports: + - 9093:9093 + networks: + - back_network + volumes: + - ./alertmanager/:/etc/alertmanager/ + command: + - '--config.file=/etc/alertmanager/config.yml' + - '--storage.path=/alertmanager' + + cadvisor: + image: gcr.io/cadvisor/cadvisor + volumes: + - /:/rootfs:ro + - /var/run:/var/run:rw + - /sys:/sys:ro + - /var/lib/docker/:/var/lib/docker:ro + ports: + - 8080:8080 + networks: + - back_network + restart: always + deploy: + mode: global + + grafana: + image: grafana/grafana + user: '472' + restart: always + environment: + GF_INSTALL_PLUGINS: 'grafana-clock-panel,grafana-simple-json-datasource' + volumes: + - grafana_data:/var/lib/grafana + - ./grafana/provisioning/:/etc/grafana/provisioning/ + env_file: + - ./grafana/config.monitoring +# ports: +# - 3000:3000 + networks: + - docker-traefik_front_network + - back_network + depends_on: + - prometheus + labels: + - "traefik.enable=true" + - "traefik.docker.network=interne" +# HTTP + - "traefik.http.routers.grafana-http.rule=Host(`grafana.10.0.4.29.traefik.me`)" + - "traefik.http.routers.grafana-http.entrypoints=http" +# HTTPS + - "traefik.http.routers.grafana-https.rule=Host(`grafana.10.0.4.29.traefik.me`)" + - "traefik.http.routers.grafana-https.entrypoints=https" + - "traefik.http.routers.grafana-https.tls=true" + - "traefik.http.routers.grafana-https.service=grafana-service" +# Middleware +# Service + - "traefik.http.services.grafana-service.loadbalancer.server.port=3000"