From 12445e22e453ee4163388761bac3965962f49c64 Mon Sep 17 00:00:00 2001 From: adjoly Date: Tue, 22 Jul 2025 14:57:54 +0200 Subject: [PATCH] =?UTF-8?q?=E3=80=8C=F0=9F=8F=97=EF=B8=8F=E3=80=8D=20wip:?= =?UTF-8?q?=20prom=20added=20:D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 3 | 17 +++++++++++ docker/docker-compose.yml | 9 ++++-- docker/monitoring/alert-manager/Dockerfile | 0 docker/monitoring/alert-manager/compose.yml | 0 docker/monitoring/compose.yml | 6 ++++ docker/monitoring/graphana/Dockerfile | 3 ++ docker/monitoring/graphana/compose.yml | 10 +++++++ docker/monitoring/prometheus/Dockerfile | 11 +++++++ docker/monitoring/prometheus/compose.yml | 29 +++++++++++++++++++ .../prometheus/config/prometheus.yml | 17 +++++++++++ docker/monitoring/prometheus/config/rules.yml | 12 ++++++++ .../prometheus/config/web-config.yml | 2 ++ docker/volumes.yml | 2 ++ 13 files changed, 115 insertions(+), 3 deletions(-) create mode 100644 3 create mode 100644 docker/monitoring/alert-manager/Dockerfile create mode 100644 docker/monitoring/alert-manager/compose.yml create mode 100644 docker/monitoring/compose.yml create mode 100644 docker/monitoring/graphana/Dockerfile create mode 100644 docker/monitoring/graphana/compose.yml create mode 100644 docker/monitoring/prometheus/Dockerfile create mode 100644 docker/monitoring/prometheus/compose.yml create mode 100644 docker/monitoring/prometheus/config/prometheus.yml create mode 100644 docker/monitoring/prometheus/config/rules.yml create mode 100644 docker/monitoring/prometheus/config/web-config.yml create mode 100644 docker/volumes.yml diff --git a/3 b/3 new file mode 100644 index 0000000..cbe8524 --- /dev/null +++ b/3 @@ -0,0 +1,17 @@ +global: + scrape_interval: 30s + +# alerting: +# alertmanagers: +# - static_configs: +# - targets: +# - alertmanager:9093 + +scrape_configs: + - job_name: 'prometheus' + metrics_path: '/prometheus/metrics' + basic_auth: + username: admin + password: PROM_ADMIN_PASSWD + static_configs: + - targets: ['localhost:9090'] diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index 98d3b4d..da37536 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -1,5 +1,9 @@ name: ft_transcendence +include: + - ./volumes.yml + - ./monitoring/compose.yml + services: front: container_name: transcendence-front @@ -9,7 +13,8 @@ services: ports: - ${OUT_PORT}:443 environment: - SERVER_NAME: localhost + - SERVER_NAME=localhost + - TZ=Europe/Paris depends_on: user-api: condition: service_started @@ -17,8 +22,6 @@ services: condition: service_started networks: - front - environment: - - TZ=Europe/Paris restart: unless-stopped user-api: container_name: transcendence-api-user diff --git a/docker/monitoring/alert-manager/Dockerfile b/docker/monitoring/alert-manager/Dockerfile new file mode 100644 index 0000000..e69de29 diff --git a/docker/monitoring/alert-manager/compose.yml b/docker/monitoring/alert-manager/compose.yml new file mode 100644 index 0000000..e69de29 diff --git a/docker/monitoring/compose.yml b/docker/monitoring/compose.yml new file mode 100644 index 0000000..0531544 --- /dev/null +++ b/docker/monitoring/compose.yml @@ -0,0 +1,6 @@ +include: + - ./prometheus/compose.yml + +networks: + prom: + prom-exporter: diff --git a/docker/monitoring/graphana/Dockerfile b/docker/monitoring/graphana/Dockerfile new file mode 100644 index 0000000..eed4c8e --- /dev/null +++ b/docker/monitoring/graphana/Dockerfile @@ -0,0 +1,3 @@ +FROM grafana/grafana-oss + + diff --git a/docker/monitoring/graphana/compose.yml b/docker/monitoring/graphana/compose.yml new file mode 100644 index 0000000..c180bbb --- /dev/null +++ b/docker/monitoring/graphana/compose.yml @@ -0,0 +1,10 @@ +services: + graphana: + container_name: transcendence-graphana + build: + dockerfile: Dockerfile + context: . + environment: + - + networks: + - prom diff --git a/docker/monitoring/prometheus/Dockerfile b/docker/monitoring/prometheus/Dockerfile new file mode 100644 index 0000000..9d12155 --- /dev/null +++ b/docker/monitoring/prometheus/Dockerfile @@ -0,0 +1,11 @@ +FROM prom/prometheus + +ARG PROM_ADMIN_PASSWD +ARG PROM_ADMIN_PASSWD_HASH + +COPY ./config/prometheus.yml /etc/prometheus/prometheus.yml +COPY ./config/web-config.yml /etc/prometheus/web-config.yml +COPY ./config/rules.yml /etc/prometheus/rules.yml + +RUN sed -i "s/PROM_ADMIN_PASSWD/$(printf '%s\n' "$PROM_ADMIN_PASSWD" | sed -e 's/[\/&]/\\&/g')/g" /etc/prometheus/prometheus.yml +RUN sed -i "s/PROM_ADMIN_PASSWD_HASH/$(printf '%s\n' "$PROM_ADMIN_PASSWD_HASH" | sed -e 's/[\/&]/\\&/g')/g" /etc/prometheus/web-config.yml diff --git a/docker/monitoring/prometheus/compose.yml b/docker/monitoring/prometheus/compose.yml new file mode 100644 index 0000000..504a5b4 --- /dev/null +++ b/docker/monitoring/prometheus/compose.yml @@ -0,0 +1,29 @@ +services: + prometheus: + container_name: transcendence-prom + build: + dockerfile: Dockerfile + context: . + args: + PROM_ADMIN_PASSWD: ${PROM_PASS} + PROM_ADMIN_PASSWD_HASH: ${PROM_HASH} + environment: + - TZ=Europe/Paris + ports: + - 9090:9090 + volumes: + - prometheus_data:/prometheus + depends_on: + front: + condition: service_started + command: + - '--config.file=/etc/prometheus/prometheus.yml' + - '--storage.tsdb.path=/prometheus' + - '--web.config.file=/etc/prometheus/web-config.yml' + - '--web.external-url=/prometheus/' + - '--web.console.libraries=/etc/prometheus/console_libraries' + - '--web.console.templates=/etc/prometheus/consoles' + - '--web.enable-lifecycle' + networks: + - prom + restart: unless-stopped diff --git a/docker/monitoring/prometheus/config/prometheus.yml b/docker/monitoring/prometheus/config/prometheus.yml new file mode 100644 index 0000000..cbe8524 --- /dev/null +++ b/docker/monitoring/prometheus/config/prometheus.yml @@ -0,0 +1,17 @@ +global: + scrape_interval: 30s + +# alerting: +# alertmanagers: +# - static_configs: +# - targets: +# - alertmanager:9093 + +scrape_configs: + - job_name: 'prometheus' + metrics_path: '/prometheus/metrics' + basic_auth: + username: admin + password: PROM_ADMIN_PASSWD + static_configs: + - targets: ['localhost:9090'] diff --git a/docker/monitoring/prometheus/config/rules.yml b/docker/monitoring/prometheus/config/rules.yml new file mode 100644 index 0000000..904f513 --- /dev/null +++ b/docker/monitoring/prometheus/config/rules.yml @@ -0,0 +1,12 @@ +groups: +- name: AllInstances + rules: + - alert: InstanceDown + # Condition for alerting + expr: up == 0 + for: 20s + annotations: + title: 'Instance {{ $labels.instance }} down' + description: '{{ $labels.instance }} of job {{ $labels.job }} has been down for more than 20 seconds.' + labels: + severity: 'critical' diff --git a/docker/monitoring/prometheus/config/web-config.yml b/docker/monitoring/prometheus/config/web-config.yml new file mode 100644 index 0000000..34d914b --- /dev/null +++ b/docker/monitoring/prometheus/config/web-config.yml @@ -0,0 +1,2 @@ +basic_auth_users: + admin: PROM_ADMIN_PASSWD_HASH diff --git a/docker/volumes.yml b/docker/volumes.yml new file mode 100644 index 0000000..dd93e1d --- /dev/null +++ b/docker/volumes.yml @@ -0,0 +1,2 @@ +volumes: + prometheus_data: