From b9919f7cb63f1e8ae7f9e51b6bf7ec1a92a4b68d Mon Sep 17 00:00:00 2001 From: Carlos Bermudez Porto Date: Fri, 17 Oct 2025 13:54:03 -0400 Subject: [PATCH 1/2] feat: add node exporter addon service --- scripts/addons/alloy/compose.yaml | 2 +- scripts/addons/node-exporter/compose.yaml | 20 ++++++++++++++++++++ scripts/besu/docker-compose.yaml | 4 ++++ scripts/erigon/docker-compose.yaml | 4 ++++ scripts/ethrex/docker-compose.yaml | 15 +++++++++++++++ scripts/geth/docker-compose.yaml | 4 ++++ scripts/nethermind/docker-compose.yaml | 4 ++++ scripts/nimbus/docker-compose.yaml | 15 +++++++++++++++ scripts/reth/docker-compose.yaml | 4 ++++ 9 files changed, 71 insertions(+), 1 deletion(-) create mode 100644 scripts/addons/node-exporter/compose.yaml diff --git a/scripts/addons/alloy/compose.yaml b/scripts/addons/alloy/compose.yaml index 4b674396f..96f419aed 100644 --- a/scripts/addons/alloy/compose.yaml +++ b/scripts/addons/alloy/compose.yaml @@ -9,7 +9,7 @@ services: expose: - 12345 ports: - - 12345:12345 + - 127.0.0.1:12345:12345 volumes: - ./config.alloy:/etc/alloy/config.alloy - /var/run/docker.sock:/var/run/docker.sock diff --git a/scripts/addons/node-exporter/compose.yaml b/scripts/addons/node-exporter/compose.yaml new file mode 100644 index 000000000..d4b7622c9 --- /dev/null +++ b/scripts/addons/node-exporter/compose.yaml @@ -0,0 +1,20 @@ +services: + node-exporter: + image: prom/node-exporter:latest + restart: unless-stopped + networks: + - gas + expose: + - 9100 + ports: + - 127.0.0.1:9100:9100 + volumes: + - "/:/host:ro,rslave" + command: + - "--path.rootfs=/host" + - "--web.listen-address=0.0.0.0:9100" + labels: + metrics_enabled: "true" + metrics_port: "9100" + logs_enabled: "false" + instance: "${GA_METRICS_LABELS_INSTANCE}" diff --git a/scripts/besu/docker-compose.yaml b/scripts/besu/docker-compose.yaml index 4dd2ad7cc..626c38795 100644 --- a/scripts/besu/docker-compose.yaml +++ b/scripts/besu/docker-compose.yaml @@ -55,6 +55,10 @@ services: extends: file: ../addons/alloy/compose.yaml service: alloy + node-exporter: + extends: + file: ../addons/node-exporter/compose.yaml + service: node-exporter networks: gas: name: gas-network diff --git a/scripts/erigon/docker-compose.yaml b/scripts/erigon/docker-compose.yaml index 1c7539ee4..54c8f254d 100644 --- a/scripts/erigon/docker-compose.yaml +++ b/scripts/erigon/docker-compose.yaml @@ -70,6 +70,10 @@ services: extends: file: ../addons/alloy/compose.yaml service: alloy + node-exporter: + extends: + file: ../addons/node-exporter/compose.yaml + service: node-exporter networks: gas: name: gas-network diff --git a/scripts/ethrex/docker-compose.yaml b/scripts/ethrex/docker-compose.yaml index d477b2a87..e362d9504 100644 --- a/scripts/ethrex/docker-compose.yaml +++ b/scripts/ethrex/docker-compose.yaml @@ -34,6 +34,21 @@ services: options: max-size: 10m max-file: "10" + labels: + metrics_enabled: "true" + metrics_port: "8008" + logs_enabled: "false" + instance: "${GA_METRICS_LABELS_INSTANCE}" + alloy: + environment: + METRICS_LABELS_EXECUTION_CLIENT: "ethrex" + extends: + file: ../addons/alloy/compose.yaml + service: alloy + node-exporter: + extends: + file: ../addons/node-exporter/compose.yaml + service: node-exporter networks: gas: name: gas-network diff --git a/scripts/geth/docker-compose.yaml b/scripts/geth/docker-compose.yaml index 42ba29d9e..6db6239c2 100644 --- a/scripts/geth/docker-compose.yaml +++ b/scripts/geth/docker-compose.yaml @@ -73,6 +73,10 @@ services: extends: file: ../addons/alloy/compose.yaml service: alloy + node-exporter: + extends: + file: ../addons/node-exporter/compose.yaml + service: node-exporter networks: gas: name: gas-network diff --git a/scripts/nethermind/docker-compose.yaml b/scripts/nethermind/docker-compose.yaml index c81359c01..58a322ce7 100644 --- a/scripts/nethermind/docker-compose.yaml +++ b/scripts/nethermind/docker-compose.yaml @@ -60,6 +60,10 @@ services: extends: file: ../addons/alloy/compose.yaml service: alloy + node-exporter: + extends: + file: ../addons/node-exporter/compose.yaml + service: node-exporter networks: gas: name: gas-network diff --git a/scripts/nimbus/docker-compose.yaml b/scripts/nimbus/docker-compose.yaml index 62e67ad67..41921f77c 100644 --- a/scripts/nimbus/docker-compose.yaml +++ b/scripts/nimbus/docker-compose.yaml @@ -41,6 +41,21 @@ services: options: max-size: 10m max-file: "10" + labels: + metrics_enabled: "true" + metrics_port: "8008" + logs_enabled: "false" + instance: "${GA_METRICS_LABELS_INSTANCE}" + alloy: + environment: + METRICS_LABELS_EXECUTION_CLIENT: "nimbus-el" + extends: + file: ../addons/alloy/compose.yaml + service: alloy + node-exporter: + extends: + file: ../addons/node-exporter/compose.yaml + service: node-exporter networks: gas: name: gas-network diff --git a/scripts/reth/docker-compose.yaml b/scripts/reth/docker-compose.yaml index f92f67a88..02e1ea7ed 100644 --- a/scripts/reth/docker-compose.yaml +++ b/scripts/reth/docker-compose.yaml @@ -65,6 +65,10 @@ services: extends: file: ../addons/alloy/compose.yaml service: alloy + node-exporter: + extends: + file: ../addons/node-exporter/compose.yaml + service: node-exporter networks: gas: name: gas-network From 56b7091566af24a557225961a49afcf148ecacbe Mon Sep 17 00:00:00 2001 From: Carlos Bermudez Porto Date: Fri, 17 Oct 2025 14:08:43 -0400 Subject: [PATCH 2/2] feat: allow metric path specification per service --- scripts/addons/alloy/config.alloy | 7 ++++++- scripts/addons/node-exporter/compose.yaml | 1 + scripts/besu/docker-compose.yaml | 1 + scripts/erigon/docker-compose.yaml | 2 +- scripts/ethrex/docker-compose.yaml | 1 + scripts/geth/docker-compose.yaml | 2 +- scripts/nethermind/docker-compose.yaml | 1 + scripts/nimbus/docker-compose.yaml | 1 + scripts/reth/docker-compose.yaml | 2 +- 9 files changed, 14 insertions(+), 4 deletions(-) diff --git a/scripts/addons/alloy/config.alloy b/scripts/addons/alloy/config.alloy index 95ff7b360..a4b4ec9ca 100644 --- a/scripts/addons/alloy/config.alloy +++ b/scripts/addons/alloy/config.alloy @@ -34,6 +34,12 @@ discovery.relabel "filter_metrics_enabled" { action = "replace" } + rule { + source_labels = ["__meta_docker_container_label_metrics_path"] + target_label = "__metrics_path__" + action = "replace" + } + rule { source_labels = ["__meta_docker_container_label_com_docker_compose_service"] target_label = "app" @@ -88,7 +94,6 @@ prometheus.scrape "docker_containers" { forward_to = [prometheus.remote_write.remote.receiver] job_name = "docker_containers" scrape_interval = sys.env("METRICS_SCRAPE_INTERVAL") - metrics_path = sys.env("METRICS_ENDPOINT_PATH") } prometheus.remote_write "remote" { diff --git a/scripts/addons/node-exporter/compose.yaml b/scripts/addons/node-exporter/compose.yaml index d4b7622c9..60cbedf52 100644 --- a/scripts/addons/node-exporter/compose.yaml +++ b/scripts/addons/node-exporter/compose.yaml @@ -16,5 +16,6 @@ services: labels: metrics_enabled: "true" metrics_port: "9100" + metrics_path: "/metrics" logs_enabled: "false" instance: "${GA_METRICS_LABELS_INSTANCE}" diff --git a/scripts/besu/docker-compose.yaml b/scripts/besu/docker-compose.yaml index 626c38795..d77fddec4 100644 --- a/scripts/besu/docker-compose.yaml +++ b/scripts/besu/docker-compose.yaml @@ -47,6 +47,7 @@ services: labels: metrics_enabled: "true" metrics_port: "8008" + metrics_path: "/metrics" logs_enabled: "false" instance: "${GA_METRICS_LABELS_INSTANCE}" alloy: diff --git a/scripts/erigon/docker-compose.yaml b/scripts/erigon/docker-compose.yaml index 54c8f254d..f3405f63b 100644 --- a/scripts/erigon/docker-compose.yaml +++ b/scripts/erigon/docker-compose.yaml @@ -61,12 +61,12 @@ services: labels: metrics_enabled: "true" metrics_port: "8008" + metrics_path: "/debug/metrics/prometheus" logs_enabled: "false" instance: "${GA_METRICS_LABELS_INSTANCE}" alloy: environment: METRICS_LABELS_EXECUTION_CLIENT: "erigon" - METRICS_ENDPOINT_PATH: "/debug/metrics/prometheus" extends: file: ../addons/alloy/compose.yaml service: alloy diff --git a/scripts/ethrex/docker-compose.yaml b/scripts/ethrex/docker-compose.yaml index e362d9504..2eef67350 100644 --- a/scripts/ethrex/docker-compose.yaml +++ b/scripts/ethrex/docker-compose.yaml @@ -37,6 +37,7 @@ services: labels: metrics_enabled: "true" metrics_port: "8008" + metrics_path: "/metrics" logs_enabled: "false" instance: "${GA_METRICS_LABELS_INSTANCE}" alloy: diff --git a/scripts/geth/docker-compose.yaml b/scripts/geth/docker-compose.yaml index 6db6239c2..06d0c9330 100644 --- a/scripts/geth/docker-compose.yaml +++ b/scripts/geth/docker-compose.yaml @@ -64,12 +64,12 @@ services: labels: metrics_enabled: "true" metrics_port: "8008" + metrics_path: "/debug/metrics/prometheus" logs_enabled: "false" instance: "${GA_METRICS_LABELS_INSTANCE}" alloy: environment: METRICS_LABELS_EXECUTION_CLIENT: "geth" - METRICS_ENDPOINT_PATH: "/debug/metrics/prometheus" extends: file: ../addons/alloy/compose.yaml service: alloy diff --git a/scripts/nethermind/docker-compose.yaml b/scripts/nethermind/docker-compose.yaml index 58a322ce7..ac203e8da 100644 --- a/scripts/nethermind/docker-compose.yaml +++ b/scripts/nethermind/docker-compose.yaml @@ -52,6 +52,7 @@ services: labels: metrics_enabled: "true" metrics_port: "8008" + metrics_path: "/metrics" logs_enabled: "false" instance: "${GA_METRICS_LABELS_INSTANCE}" alloy: diff --git a/scripts/nimbus/docker-compose.yaml b/scripts/nimbus/docker-compose.yaml index 41921f77c..e3a875f40 100644 --- a/scripts/nimbus/docker-compose.yaml +++ b/scripts/nimbus/docker-compose.yaml @@ -44,6 +44,7 @@ services: labels: metrics_enabled: "true" metrics_port: "8008" + metrics_path: "/metrics" logs_enabled: "false" instance: "${GA_METRICS_LABELS_INSTANCE}" alloy: diff --git a/scripts/reth/docker-compose.yaml b/scripts/reth/docker-compose.yaml index 02e1ea7ed..8cf7c5077 100644 --- a/scripts/reth/docker-compose.yaml +++ b/scripts/reth/docker-compose.yaml @@ -56,12 +56,12 @@ services: labels: metrics_enabled: "true" metrics_port: "8008" + metrics_path: "/debug/metrics/prometheus" logs_enabled: "false" instance: "${GA_METRICS_LABELS_INSTANCE}" alloy: environment: METRICS_LABELS_EXECUTION_CLIENT: "reth" - METRICS_ENDPOINT_PATH: "/debug/metrics/prometheus" extends: file: ../addons/alloy/compose.yaml service: alloy