diff --git a/Makefile b/Makefile index e320b73..98eb9ba 100644 --- a/Makefile +++ b/Makefile @@ -152,20 +152,35 @@ DOCKER_COMPOSE = docker compose --file $(DOCKER_COMPOSE_FILE) --env-fil PROXY_LEFT_CONFIG_TMPL = develop/docker-compose/develop.proxy-left.tmpl.yaml PROXY_RIGHT_CONFIG_TMPL = develop/docker-compose/develop.proxy-right.tmpl.yaml +PROMETHEUS_CONFIG_TMPL = develop/docker-compose/develop.prometheus.tmpl.yaml PROXY_LEFT_CONFIG = develop/docker-compose/tmp/develop.proxy-left.yaml PROXY_RIGHT_CONFIG = develop/docker-compose/tmp/develop.proxy-right.yaml +PROMETHEUS_CONFIG = develop/docker-compose/tmp/develop.prometheus.yaml .PHONY: generate-configs generate-configs: mkdir -p develop/docker-compose/tmp set -a && . $(DEVELOP_ENV_FILE) && set +a && \ - envsubst < $(PROXY_LEFT_CONFIG_TMPL) > $(PROXY_LEFT_CONFIG) && \ - envsubst < $(PROXY_RIGHT_CONFIG_TMPL) > $(PROXY_RIGHT_CONFIG) + envsubst < $(PROXY_LEFT_CONFIG_TMPL) > $(PROXY_LEFT_CONFIG) && \ + envsubst < $(PROXY_RIGHT_CONFIG_TMPL) > $(PROXY_RIGHT_CONFIG) && \ + envsubst < $(PROMETHEUS_CONFIG_TMPL) > $(PROMETHEUS_CONFIG) + +.PHONY: show-dependencies-ports +show-dependencies-ports: + @echo 'Exposed localhost ports:' + @grep '_EXTERNAL_PORT=' $(DEVELOP_ENV_FILE) | \ + awk -F= '{ \ + name = $$1; \ + gsub(/_EXTERNAL_PORT$$/, "", name); \ + gsub(/_/, "-", name); \ + printf " %-34s http://localhost:%s\n", tolower(name), $$2; \ + }' .PHONY: start-dependencies start-dependencies: generate-configs $(DOCKER_COMPOSE) up --detach --build --wait --wait-timeout 120 @echo >&2 'Dependencies ready!' + @$(MAKE) --no-print-directory show-dependencies-ports .PHONY: stop-dependencies stop-dependencies: diff --git a/develop/docker-compose/develop.docker-compose.yaml b/develop/docker-compose/develop.docker-compose.yaml index 38bf814..488ac80 100644 --- a/develop/docker-compose/develop.docker-compose.yaml +++ b/develop/docker-compose/develop.docker-compose.yaml @@ -11,13 +11,15 @@ services: - "${TEMPORAL_INTERNAL_PORT}" - --ip - "0.0.0.0" - - --headless + - --ui-port + - "${TEMPORAL_UI_INTERNAL_PORT}" - --namespace - default - --log-level - warn ports: - "${TEMPORAL_LEFT_EXTERNAL_PORT}:${TEMPORAL_INTERNAL_PORT}" + - "${TEMPORAL_LEFT_UI_EXTERNAL_PORT}:${TEMPORAL_UI_INTERNAL_PORT}" networks: - develop healthcheck: @@ -43,13 +45,15 @@ services: - "${TEMPORAL_INTERNAL_PORT}" - --ip - "0.0.0.0" - - --headless + - --ui-port + - "${TEMPORAL_UI_INTERNAL_PORT}" - --namespace - default - --log-level - warn ports: - "${TEMPORAL_RIGHT_EXTERNAL_PORT}:${TEMPORAL_INTERNAL_PORT}" + - "${TEMPORAL_RIGHT_UI_EXTERNAL_PORT}:${TEMPORAL_UI_INTERNAL_PORT}" networks: - develop healthcheck: @@ -75,6 +79,7 @@ services: volumes: *x-volumes ports: - "${PROXY_RIGHT_EXTERNAL_PORT}:${PROXY_RIGHT_INTERNAL_PORT}" + - "${PROXY_RIGHT_METRICS_EXTERNAL_PORT}:${PROXY_METRICS_INTERNAL_PORT}" networks: - develop depends_on: @@ -83,7 +88,7 @@ services: healthcheck: # TODO: Replace with healthcheck endpoint. test: - CMD-SHELL - - "wget -q -O /dev/null -T 3 http://localhost:6060/debug/pprof/ || exit 1" + - "wget -q -O /dev/null -T 3 http://localhost:${PROXY_PPROF_INTERNAL_PORT}/debug/pprof/ || exit 1" interval: 5s timeout: 5s retries: 30 @@ -98,6 +103,7 @@ services: volumes: *x-volumes ports: - "${PROXY_LEFT_EXTERNAL_PORT}:${PROXY_LEFT_INTERNAL_PORT}" + - "${PROXY_LEFT_METRICS_EXTERNAL_PORT}:${PROXY_METRICS_INTERNAL_PORT}" networks: - develop depends_on: @@ -108,12 +114,27 @@ services: healthcheck: # TODO: Replace with healthcheck endpoint. test: - CMD-SHELL - - "wget -q -O /dev/null -T 3 http://localhost:6060/debug/pprof/ || exit 1" + - "wget -q -O /dev/null -T 3 http://localhost:${PROXY_PPROF_INTERNAL_PORT}/debug/pprof/ || exit 1" interval: 5s timeout: 5s retries: 30 start_period: 10s + prometheus: + image: prom/prometheus:latest + command: + - --config.file=/etc/develop/docker-compose/tmp/develop.prometheus.yaml + volumes: *x-volumes + ports: + - "${PROMETHEUS_EXTERNAL_PORT}:${PROMETHEUS_INTERNAL_PORT}" + networks: + - develop + depends_on: + proxy-left: + condition: service_healthy + proxy-right: + condition: service_healthy + smoke-test: image: temporalio/temporal:1.5.0 entrypoint: /bin/sh diff --git a/develop/docker-compose/develop.env b/develop/docker-compose/develop.env index 4d2655a..74043ec 100644 --- a/develop/docker-compose/develop.env +++ b/develop/docker-compose/develop.env @@ -3,9 +3,18 @@ TEMPORAL_LEFT_EXTERNAL_PORT=4000 TEMPORAL_RIGHT_EXTERNAL_PORT=5000 PROXY_LEFT_EXTERNAL_PORT=4001 PROXY_RIGHT_EXTERNAL_PORT=5001 +PROXY_LEFT_METRICS_EXTERNAL_PORT=4091 +PROXY_RIGHT_METRICS_EXTERNAL_PORT=5091 +PROMETHEUS_EXTERNAL_PORT=9090 +TEMPORAL_LEFT_UI_EXTERNAL_PORT=4233 +TEMPORAL_RIGHT_UI_EXTERNAL_PORT=5233 # Internal Ports (exposed on containers in docker network) TEMPORAL_INTERNAL_PORT=7233 +TEMPORAL_UI_INTERNAL_PORT=8233 PROXY_LEFT_INTERNAL_PORT=6233 PROXY_RIGHT_INTERNAL_PORT=6333 PROXY_MUX_INTERNAL_PORT=6334 +PROXY_PPROF_INTERNAL_PORT=6060 +PROXY_METRICS_INTERNAL_PORT=9091 +PROMETHEUS_INTERNAL_PORT=9090 diff --git a/develop/docker-compose/develop.prometheus.tmpl.yaml b/develop/docker-compose/develop.prometheus.tmpl.yaml new file mode 100644 index 0000000..6d2ce1f --- /dev/null +++ b/develop/docker-compose/develop.prometheus.tmpl.yaml @@ -0,0 +1,11 @@ +global: + scrape_interval: 15s + +scrape_configs: + - job_name: proxy-left + static_configs: + - targets: ["proxy-left:${PROXY_METRICS_INTERNAL_PORT}"] + + - job_name: proxy-right + static_configs: + - targets: ["proxy-right:${PROXY_METRICS_INTERNAL_PORT}"] diff --git a/develop/docker-compose/develop.proxy-left.tmpl.yaml b/develop/docker-compose/develop.proxy-left.tmpl.yaml index c235578..4178cdf 100644 --- a/develop/docker-compose/develop.proxy-left.tmpl.yaml +++ b/develop/docker-compose/develop.proxy-left.tmpl.yaml @@ -12,4 +12,7 @@ clusterConnections: muxAddressInfo: address: "proxy-right:${PROXY_MUX_INTERNAL_PORT}" profiling: - pprofAddress: "0.0.0.0:6060" + pprofAddress: "0.0.0.0:${PROXY_PPROF_INTERNAL_PORT}" +metrics: + prometheus: + listenAddress: "0.0.0.0:${PROXY_METRICS_INTERNAL_PORT}" diff --git a/develop/docker-compose/develop.proxy-right.tmpl.yaml b/develop/docker-compose/develop.proxy-right.tmpl.yaml index d723078..1d34ad3 100644 --- a/develop/docker-compose/develop.proxy-right.tmpl.yaml +++ b/develop/docker-compose/develop.proxy-right.tmpl.yaml @@ -12,4 +12,7 @@ clusterConnections: muxAddressInfo: address: "0.0.0.0:${PROXY_MUX_INTERNAL_PORT}" profiling: - pprofAddress: "0.0.0.0:6060" + pprofAddress: "0.0.0.0:${PROXY_PPROF_INTERNAL_PORT}" +metrics: + prometheus: + listenAddress: "0.0.0.0:${PROXY_METRICS_INTERNAL_PORT}"