From 17fa8eb0562e2a204708103f4db37b4467292d71 Mon Sep 17 00:00:00 2001 From: alex Date: Mon, 24 Nov 2025 22:18:51 +0100 Subject: [PATCH] feat: Add Prometheus Unix exporter to Alloy for host metrics collection, update Docker Compose volumes, and enable Keepalived daemon mode. --- vm1/alloy-config.alloy | 20 ++++++++++++++++++++ vm1/docker-compose.yml | 19 +++++++++++-------- vm2/alloy-config.alloy | 20 ++++++++++++++++++++ vm2/docker-compose.yml | 19 +++++++++++-------- 4 files changed, 62 insertions(+), 16 deletions(-) diff --git a/vm1/alloy-config.alloy b/vm1/alloy-config.alloy index 20d0a96..9eca462 100644 --- a/vm1/alloy-config.alloy +++ b/vm1/alloy-config.alloy @@ -55,3 +55,23 @@ loki.write "loki" { url = "http://192.168.1.200:3100/loki/api/v1/push" } } + +// Collect system metrics +prometheus.exporter.unix "host" { + procfs_path = "/host/proc" + sysfs_path = "/host/sys" + rootfs_path = "/host/root" +} + +// Scrape metrics from the unix exporter +prometheus.scrape "host" { + targets = prometheus.exporter.unix.host.targets + forward_to = [prometheus.remote_write.mimir.receiver] +} + +// Write metrics to Mimir/Prometheus +prometheus.remote_write "mimir" { + endpoint { + url = "http://192.168.1.200:9090/api/v1/write" + } +} diff --git a/vm1/docker-compose.yml b/vm1/docker-compose.yml index 0571a84..edb330a 100644 --- a/vm1/docker-compose.yml +++ b/vm1/docker-compose.yml @@ -18,7 +18,7 @@ services: ports: - "3306:3306" healthcheck: - test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-p${MYSQL_ROOT_PASSWORD:-Ase@2025}"] + test: [ "CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-p${MYSQL_ROOT_PASSWORD:-Ase@2025}" ] interval: 10s timeout: 5s retries: 3 @@ -29,7 +29,7 @@ services: build: . container_name: orchestrator-1-load restart: unless-stopped - command: ["python", "-m", "src.load_orchestrator"] + command: [ "python", "-m", "src.load_orchestrator" ] environment: DB_HOST: ${VIP:-192.168.1.210} ORCHESTRATOR_ID: 1 @@ -46,7 +46,7 @@ services: build: . container_name: orchestrator-2-elab restart: unless-stopped - command: ["python", "-m", "src.elab_orchestrator"] + command: [ "python", "-m", "src.elab_orchestrator" ] environment: DB_HOST: ${VIP:-192.168.1.210} ORCHESTRATOR_ID: 2 @@ -63,7 +63,7 @@ services: build: . container_name: orchestrator-3-send restart: unless-stopped - command: ["python", "-m", "src.send_orchestrator"] + command: [ "python", "-m", "src.send_orchestrator" ] environment: DB_HOST: ${VIP:-192.168.1.210} ORCHESTRATOR_ID: 3 @@ -80,7 +80,7 @@ services: build: . container_name: ftp-server-1 restart: unless-stopped - command: ["python", "-m", "src.ftp_csv_receiver"] + command: [ "python", "-m", "src.ftp_csv_receiver" ] environment: DB_HOST: ${VIP:-192.168.1.210} FTP_INSTANCE_ID: 1 @@ -107,7 +107,7 @@ services: build: . container_name: sftp-server-1 restart: unless-stopped - command: ["python", "-m", "src.ftp_csv_receiver"] + command: [ "python", "-m", "src.ftp_csv_receiver" ] environment: DB_HOST: ${VIP:-192.168.1.210} FTP_INSTANCE_ID: 11 @@ -153,7 +153,7 @@ services: network_mode: host volumes: - ./keepalived-master.conf:/etc/keepalived/keepalived.conf:ro - command: sh -c "apk add --no-cache keepalived && keepalived -n -l -f /etc/keepalived/keepalived.conf" + command: sh -c "apk add --no-cache keepalived && keepalived -n -D -l -f /etc/keepalived/keepalived.conf" alloy: image: grafana/alloy:latest container_name: alloy @@ -165,13 +165,16 @@ services: - /var/run/docker.sock:/var/run/docker.sock:ro - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro + - /proc:/host/proc:ro + - /sys:/host/sys:ro + - /:/host/root:ro command: - run - --server.http.listen-addr=0.0.0.0:12345 - --storage.path=/var/lib/alloy/data - /etc/alloy/config.alloy ports: - - "12345:12345" # Alloy UI + - "12345:12345" # Alloy UI networks: - app-network networks: diff --git a/vm2/alloy-config.alloy b/vm2/alloy-config.alloy index 57fc912..b998f9e 100644 --- a/vm2/alloy-config.alloy +++ b/vm2/alloy-config.alloy @@ -55,3 +55,23 @@ loki.write "loki" { url = "http://192.168.1.200:3100/loki/api/v1/push" } } + +// Collect system metrics +prometheus.exporter.unix "host" { + procfs_path = "/host/proc" + sysfs_path = "/host/sys" + rootfs_path = "/host/root" +} + +// Scrape metrics from the unix exporter +prometheus.scrape "host" { + targets = prometheus.exporter.unix.host.targets + forward_to = [prometheus.remote_write.mimir.receiver] +} + +// Write metrics to Mimir/Prometheus +prometheus.remote_write "mimir" { + endpoint { + url = "http://192.168.1.200:9090/api/v1/write" + } +} diff --git a/vm2/docker-compose.yml b/vm2/docker-compose.yml index 8d2f1ea..d7b2254 100644 --- a/vm2/docker-compose.yml +++ b/vm2/docker-compose.yml @@ -3,7 +3,7 @@ services: build: . container_name: orchestrator-4-load restart: unless-stopped - command: ["python", "-m", "src.load_orchestrator"] + command: [ "python", "-m", "src.load_orchestrator" ] environment: DB_HOST: ${VIP:-192.168.1.210} ORCHESTRATOR_ID: 4 @@ -20,7 +20,7 @@ services: build: . container_name: orchestrator-5-elab restart: unless-stopped - command: ["python", "-m", "src.elab_orchestrator"] + command: [ "python", "-m", "src.elab_orchestrator" ] environment: DB_HOST: ${VIP:-192.168.1.210} ORCHESTRATOR_ID: 5 @@ -37,7 +37,7 @@ services: build: . container_name: orchestrator-6-send restart: unless-stopped - command: ["python", "-m", "src.send_orchestrator"] + command: [ "python", "-m", "src.send_orchestrator" ] environment: DB_HOST: ${VIP:-192.168.1.210} ORCHESTRATOR_ID: 6 @@ -54,7 +54,7 @@ services: build: . container_name: ftp-server-2 restart: unless-stopped - command: ["python", "-m", "src.ftp_csv_receiver"] + command: [ "python", "-m", "src.ftp_csv_receiver" ] environment: DB_HOST: ${VIP:-192.168.1.210} FTP_INSTANCE_ID: 2 @@ -81,7 +81,7 @@ services: build: . container_name: sftp-server-2 restart: unless-stopped - command: ["python", "-m", "src.ftp_csv_receiver"] + command: [ "python", "-m", "src.ftp_csv_receiver" ] environment: DB_HOST: ${VIP:-192.168.1.210} FTP_INSTANCE_ID: 12 @@ -102,7 +102,7 @@ services: - "22:22" labels: logging: "alloy" - + haproxy: image: haproxy:2.8-alpine container_name: haproxy @@ -127,7 +127,7 @@ services: network_mode: host volumes: - ./keepalived-backup.conf:/etc/keepalived/keepalived.conf:ro - command: sh -c "apk add --no-cache keepalived && keepalived -n -l -f /etc/keepalived/keepalived.conf" + command: sh -c "apk add --no-cache keepalived && keepalived -n -D -l -f /etc/keepalived/keepalived.conf" alloy: image: grafana/alloy:latest container_name: alloy @@ -139,13 +139,16 @@ services: - /var/run/docker.sock:/var/run/docker.sock:ro - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro + - /proc:/host/proc:ro + - /sys:/host/sys:ro + - /:/host/root:ro command: - run - --server.http.listen-addr=0.0.0.0:12345 - --storage.path=/var/lib/alloy/data - /etc/alloy/config.alloy ports: - - "12345:12345" # Alloy UI + - "12345:12345" # Alloy UI networks: - app-network networks: