From 8070dd160a5298fa39b2be771e7a1e10ce8187c3 Mon Sep 17 00:00:00 2001 From: Socheat Sok Date: Sat, 22 Jun 2024 18:14:58 +0700 Subject: [PATCH] Refactor docker stack deployment --- docker-stack/Makefile | 4 +- docker-stack/alertmanager/Makefile | 9 ++-- docker-stack/alertmanager/docker-stack.yml | 46 +++++++--------- docker-stack/cadvisor/Makefile | 9 ++-- docker-stack/cadvisor/docker-stack.yml | 25 +++------ docker-stack/node-exporter/Makefile | 9 ++-- docker-stack/node-exporter/docker-stack.yml | 25 +++------ docker-stack/prometheus/Makefile | 9 ++-- docker-stack/prometheus/docker-stack.yml | 59 +++++++++++---------- 9 files changed, 89 insertions(+), 106 deletions(-) diff --git a/docker-stack/Makefile b/docker-stack/Makefile index ff6b542..98e258d 100644 --- a/docker-stack/Makefile +++ b/docker-stack/Makefile @@ -5,8 +5,8 @@ it: networks: @docker network create --scope=swarm --driver=overlay --attachable dockerswarm_ingress > /dev/null 2>&1 || true - @docker network create --scope=swarm --driver=overlay --attachable dockerswarm_metrics > /dev/null 2>&1 || true - @docker network create --scope=swarm --driver=overlay --attachable prometheus_exporters > /dev/null 2>&1 || true + @docker network create --scope=swarm --driver=overlay --attachable prometheus > /dev/null 2>&1 || true + @docker network create --scope=swarm --driver=overlay --attachable prometheus_gwnetwork > /dev/null 2>&1 || true deploy: networks $(MAKE) -C prometheus deploy diff --git a/docker-stack/alertmanager/Makefile b/docker-stack/alertmanager/Makefile index 4428ca7..798e3da 100644 --- a/docker-stack/alertmanager/Makefile +++ b/docker-stack/alertmanager/Makefile @@ -1,4 +1,4 @@ -docker-stack-name = default_alertmanager +docker-stack-name = promstack_alertmanager it: @echo "make [deploy|remove|clean|reset] docker-stack-name=$(docker-stack-name)" @@ -10,7 +10,10 @@ remove: docker stack rm --detach=false $(docker-stack-name) clean: - @sleep 10 docker volume ls -q | grep $(docker-stack-name) | xargs docker volume rm -reset: remove clean deploy +reset: remove wait clean deploy + +wait: + @echo "Waiting for previous recipe to finish..." + @sleep 10 diff --git a/docker-stack/alertmanager/docker-stack.yml b/docker-stack/alertmanager/docker-stack.yml index 919e137..c136903 100644 --- a/docker-stack/alertmanager/docker-stack.yml +++ b/docker-stack/alertmanager/docker-stack.yml @@ -12,24 +12,6 @@ x-exporter-resources-constraints: &x-exporter-resources-constraints reservations: memory: 64M -volumes: - alertmanager-data: - alertmanager-configs: - - prometheus-data: - prometheus-configs: - -networks: - dockerswarm_ingress: - name: dockerswarm_ingress - external: true - dockerswarm_metrics: - name: dockerswarm_metrics - external: true - prometheus_exporters: - name: prometheus_exporters - external: true - configs: dockerswarm-nodes-alertmanager: file: ./configs/dockerswarm-nodes-alertmanager.yml @@ -71,7 +53,8 @@ services: mode: host hostname: alertmanager.{{.Node.ID}}.cluster.local networks: - dockerswarm_metrics: + alertmanager_internal: + prometheus_gwnetwork: extra_hosts: - "host.docker.internal:host-gateway" volumes: @@ -84,7 +67,7 @@ services: command: - --listen-address=:8080 - --watched-dir=/alertmanager-configs.d - - --reload-url=http://host.docker.internal:9093/-/reload + - --reload-url=http://alertmanager:9093/-/reload deploy: mode: global resources: *x-exporter-resources-constraints @@ -94,16 +77,27 @@ services: - node.role == manager labels: io.prometheus.role: "alertmanager-config-reloader" - io.prometheus.enabled: "true" - io.prometheus.job_name: "alertmanager-config-reloader" - io.prometheus.scrape_port: "8080" + io.prometheus.dockerswarm-tasks.should_be_scraped: "false" io.prometheus.dockerswarm-services.should_be_probed: "false" logging: *x-default-logging networks: - dockerswarm_metrics: - extra_hosts: - - "host.docker.internal:host-gateway" + alertmanager_internal: volumes: - type: volume source: alertmanager-configs target: /alertmanager-configs.d + +volumes: + alertmanager-data: + alertmanager-configs: + +networks: + alertmanager_internal: + internal: true + + prometheus: + name: prometheus + external: true + prometheus_gwnetwork: + name: prometheus_gwnetwork + external: true diff --git a/docker-stack/cadvisor/Makefile b/docker-stack/cadvisor/Makefile index e165584..0e709cd 100644 --- a/docker-stack/cadvisor/Makefile +++ b/docker-stack/cadvisor/Makefile @@ -1,4 +1,4 @@ -docker-stack-name = default_cadvisor +docker-stack-name = promstack_cadvisor it: @echo "make [deploy|remove|clean|reset] docker-stack-name=$(docker-stack-name)" @@ -10,7 +10,10 @@ remove: docker stack rm --detach=false $(docker-stack-name) clean: - @sleep 10 docker volume ls -q | grep $(docker-stack-name) | xargs docker volume rm -reset: remove clean deploy +reset: remove wait clean deploy + +wait: + @echo "Waiting for previous recipe to finish..." + @sleep 10 diff --git a/docker-stack/cadvisor/docker-stack.yml b/docker-stack/cadvisor/docker-stack.yml index 2570a29..5840741 100644 --- a/docker-stack/cadvisor/docker-stack.yml +++ b/docker-stack/cadvisor/docker-stack.yml @@ -12,24 +12,6 @@ x-exporter-resources-constraints: &x-exporter-resources-constraints reservations: memory: 64M -volumes: - alertmanager-data: - alertmanager-configs: - - prometheus-data: - prometheus-configs: - -networks: - dockerswarm_ingress: - name: dockerswarm_ingress - external: true - dockerswarm_metrics: - name: dockerswarm_metrics - external: true - prometheus_exporters: - name: prometheus_exporters - external: true - configs: dockerswarm-nodes-cadvisor: file: ./configs/dockerswarm-nodes-cadvisor.yml @@ -59,7 +41,7 @@ services: target: 8080 mode: host networks: - prometheus_exporters: + prometheus_gwnetwork: hostname: cadvisor.{{.Node.ID}}.cluster.local volumes: - type: bind @@ -92,3 +74,8 @@ services: # source: /dev/kmsg # target: /dev/kmsg # read_only: true + +networks: + prometheus_gwnetwork: + name: prometheus_gwnetwork + external: true diff --git a/docker-stack/node-exporter/Makefile b/docker-stack/node-exporter/Makefile index 6af7e93..72218ed 100644 --- a/docker-stack/node-exporter/Makefile +++ b/docker-stack/node-exporter/Makefile @@ -1,4 +1,4 @@ -docker-stack-name = default_node_exporter +docker-stack-name = promstack_node_exporter it: @echo "make [deploy|remove|clean|reset] docker-stack-name=$(docker-stack-name)" @@ -10,7 +10,10 @@ remove: docker stack rm --detach=false $(docker-stack-name) clean: - @sleep 10 docker volume ls -q | grep $(docker-stack-name) | xargs docker volume rm -reset: remove clean deploy +reset: remove wait clean deploy + +wait: + @echo "Waiting for previous recipe to finish..." + @sleep 10 diff --git a/docker-stack/node-exporter/docker-stack.yml b/docker-stack/node-exporter/docker-stack.yml index 01b3cf1..a0996fb 100644 --- a/docker-stack/node-exporter/docker-stack.yml +++ b/docker-stack/node-exporter/docker-stack.yml @@ -12,24 +12,6 @@ x-exporter-resources-constraints: &x-exporter-resources-constraints reservations: memory: 64M -volumes: - alertmanager-data: - alertmanager-configs: - - prometheus-data: - prometheus-configs: - -networks: - dockerswarm_ingress: - name: dockerswarm_ingress - external: true - dockerswarm_metrics: - name: dockerswarm_metrics - external: true - prometheus_exporters: - name: prometheus_exporters - external: true - configs: dockerswarm-nodes-node-exporter: file: ./configs/dockerswarm-nodes-node-exporter.yml @@ -58,10 +40,15 @@ services: target: 9100 mode: host networks: - prometheus_exporters: + prometheus_gwnetwork: hostname: node-exporter.{{.Node.ID}}.cluster.local volumes: - type: bind source: / target: /rootfs read_only: true + +networks: + prometheus_gwnetwork: + name: prometheus_gwnetwork + external: true diff --git a/docker-stack/prometheus/Makefile b/docker-stack/prometheus/Makefile index d55354c..8184ddb 100644 --- a/docker-stack/prometheus/Makefile +++ b/docker-stack/prometheus/Makefile @@ -1,4 +1,4 @@ -docker-stack-name = default_prometheus +docker-stack-name = promstack_prometheus it: @echo "make [deploy|remove|clean|reset] docker-stack-name=$(docker-stack-name)" @@ -10,7 +10,10 @@ remove: docker stack rm --detach=false $(docker-stack-name) clean: - @sleep 10 docker volume ls -q | grep $(docker-stack-name) | xargs docker volume rm -reset: remove clean deploy +reset: remove wait clean deploy + +wait: + @echo "Waiting for previous recipe to finish..." + @sleep 10 diff --git a/docker-stack/prometheus/docker-stack.yml b/docker-stack/prometheus/docker-stack.yml index daa1649..7aa9568 100644 --- a/docker-stack/prometheus/docker-stack.yml +++ b/docker-stack/prometheus/docker-stack.yml @@ -12,24 +12,6 @@ x-exporter-resources-constraints: &x-exporter-resources-constraints reservations: memory: 64M -volumes: - alertmanager-data: - alertmanager-configs: - - prometheus-data: - prometheus-configs: - -networks: - dockerswarm_ingress: - name: dockerswarm_ingress - external: true - dockerswarm_metrics: - name: dockerswarm_metrics - external: true - prometheus_exporters: - name: prometheus_exporters - external: true - services: # ==================================================== @@ -68,9 +50,9 @@ services: mode: host hostname: prometheus.svc.cluster.local networks: - dockerswarm_ingress: - dockerswarm_metrics: - prometheus_exporters: + prometheus_internal: + prometheus: + prometheus_gwnetwork: extra_hosts: - "host.docker.internal:host-gateway" volumes: @@ -99,6 +81,8 @@ services: labels: io.prometheus.role: "prometheus-configs-provider" logging: *x-default-logging + networks: + prometheus_internal: extra_hosts: - "host.docker.internal:host-gateway" volumes: @@ -115,8 +99,8 @@ services: command: - --listen-address=:8080 - --watched-dir=/prometheus-configs.d - - --reload-url=http://host.docker.internal:9090/-/reload - - --runtimeinfo-url=http://host.docker.internal:9090/api/v1/status/runtimeinfo + - --reload-url=http://prometheus:9090/-/reload + - --runtimeinfo-url=http://prometheus:9090/api/v1/status/runtimeinfo - --watch-interval=15s - --reload-timeout=10s deploy: @@ -134,9 +118,7 @@ services: io.prometheus.dockerswarm-services.should_be_probed: "false" logging: *x-default-logging networks: - dockerswarm_metrics: - extra_hosts: - - "host.docker.internal:host-gateway" + prometheus_internal: volumes: - type: volume source: prometheus-configs @@ -161,6 +143,27 @@ services: logging: *x-default-logging hostname: blackbox-exporter.svc.cluster.local networks: + prometheus_internal: + prometheus_gwnetwork: + prometheus: dockerswarm_ingress: - dockerswarm_metrics: - prometheus_exporters: + +volumes: + prometheus-data: + prometheus-configs: + +networks: + prometheus_internal: + internal: true + + prometheus: + name: prometheus + external: true + prometheus_gwnetwork: + name: prometheus_gwnetwork + external: true + + # Custom ingress network + dockerswarm_ingress: + name: dockerswarm_ingress + external: true