From bf241435be4de45c428afd2ea7991459423c9c0f Mon Sep 17 00:00:00 2001 From: Alexandre Chevalier Date: Sat, 14 Feb 2026 20:20:17 +0100 Subject: [PATCH] prometheus et munin fonctionnent dans le compose --- .../files/dockercompose/docker-compose.yml | 192 +++++++++--------- ansible/files/dockerfiles/grafana/Dockerfile | 5 +- ansible/playbook.yml | 30 ++- 3 files changed, 121 insertions(+), 106 deletions(-) diff --git a/ansible/files/dockercompose/docker-compose.yml b/ansible/files/dockercompose/docker-compose.yml index 978135c..3095654 100644 --- a/ansible/files/dockercompose/docker-compose.yml +++ b/ansible/files/dockercompose/docker-compose.yml @@ -1,56 +1,103 @@ services: + + etherpad: + image: etherpad/etherpad:1.9.7 + ports: + - "9001:9001" + volumes: + - ../doodlestudent/api/APIKEY.txt:/opt/etherpad-lite/APIKEY.txt + networks: + - app-network + healthcheck: + test: [ "CMD-SHELL", "node -e \"require('http').get('http://127.0.0.1:9001', res => { process.exit(res.statusCode===200?0:1) }).on('error', ()=>process.exit(1))\"" ] + interval: 30s + timeout: 10s + start_period: 15s + retries: 5 + + mail: + image: bytemark/smtp:latest + restart: always + ports: + - "2525:25" + networks: + - app-network + + db: + image: mysql:8.4 + ports: + - "3306:3306" + environment: + - MYSQL_ROOT_PASSWORD=root + - MYSQL_DATABASE=tlc + - MYSQL_USER=tlc + - MYSQL_PASSWORD=tlc + healthcheck: + test: [ "CMD", "mysqladmin", "ping", "-h", "localhost", "-uroot", "-proot" ] + interval: 10s + timeout: 1m + retries: 5 + networks: + - app-network + + back: + image: benarbause/doodleback-with-quarkus:latest + ports: + - "8080:8080" + volumes: + - ../doodlestudent/api:/app + depends_on: + db: + condition: service_healthy + etherpad: + condition: service_healthy + networks: + - app-network + restart: + unless-stopped + #https://dev.to/rafi021/how-to-set-up-a-monitoring-stack-with-prometheus-grafana-and-node-exporter-using-docker-compose-17cc #https://belginux.com/monitoring-docker-grafana-prometheus-cadvisor/ #https://github.com/Einsteinish/Docker-Compose-Prometheus-and-Grafana/tree/master -# prometheus: -# image: prom/prometheus:latest -# container_name: prometheus -# restart: unless-stopped -# ports: -# - "9090:9090" -# volumes: -# - ../prometheus/prometheus.yml:/etc/prometheus/prometheus.yml:ro -# command: -# - "--config.file=/etc/prometheus/prometheus.yml" -# depends_on: -# - back -# - db -# networks: -# - app-network + prometheus: + image: prom/prometheus:latest + container_name: prometheus + restart: unless-stopped + ports: + - "9090:9090" + volumes: + - ../prometheus/prometheus.yml:/etc/prometheus/prometheus.yml:ro + command: + - "--config.file=/etc/prometheus/prometheus.yml" + depends_on: + - back + - db + networks: + - app-network -# grafana: + grafana: # build: # context: .. # dockerfile: dockerfiles/grafana/Dockerfile -# container_name: grafana -# restart: unless-stopped -# volumes: -# - grafana-data:/var/lib/grafana -# - ../grafana/provisioning:/etc/grafana/provisioning -# depends_on: -# - prometheus -# environment: -# - GF_SECURITY_ADMIN_USER=tlc -# - GF_SECURITY_ADMIN_PASSWORD=tlc -# networks: -# - app-network - - # https://stackoverflow.com/questions/57591868/how-correctly-install-ssl-certificate-using-certbot-in-docker -# certbot: -# image: certbot/certbot:v5.3.1 -# container_name: certbot -# depends_on: -# - front -# volumes: -# - ../certbot/www/:/var/www/certbot/:rw -# - ../certbot/conf/:/etc/letsencrypt/:rw - + image: grafana/grafana:12.3 + container_name: grafana + restart: unless-stopped + volumes: + - grafana-data:/var/lib/grafana + - ../grafana/provisioning:/etc/grafana/provisioning + depends_on: + - prometheus + environment: + - GF_SECURITY_ADMIN_USER=tlc + - GF_SECURITY_ADMIN_PASSWORD=tlc + - GF_INSTALL_PLUGINS=grafana-munin-datasource # Telechargement du plugin via var d'env + networks: + - app-network front: build: context: .. dockerfile: dockerfiles/front/Dockerfile - ports: - "80:80" volumes: @@ -67,64 +114,21 @@ services: networks: - app-network - - back: - image : benarbause/doodleback-with-quarkus:latest - ports: - - "8080:8080" - volumes: - - ../doodlestudent/api:/app + # https://stackoverflow.com/questions/57591868/how-correctly-install-ssl-certificate-using-certbot-in-docker + certbot: + image: certbot/certbot:v5.3.1 + container_name: certbot depends_on: - db: - condition: service_healthy - etherpad: - condition: service_healthy - networks: - - app-network - restart: - unless-stopped - - db: - image: mysql:8.4 - ports: - - "3306:3306" - environment: - - MYSQL_ROOT_PASSWORD=root - - MYSQL_DATABASE=tlc - - MYSQL_USER=tlc - - MYSQL_PASSWORD=tlc - healthcheck: - test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-uroot", "-proot"] - interval: 10s - timeout: 1m - retries: 5 - networks: - - app-network - - etherpad: - image: etherpad/etherpad:1.9.7 - ports: - - "9001:9001" + - front volumes: - - ../doodlestudent/api/APIKEY.txt:/opt/etherpad-lite/APIKEY.txt - networks: - - app-network - healthcheck: - test: ["CMD-SHELL", "node -e \"require('http').get('http://127.0.0.1:9001', res => { process.exit(res.statusCode===200?0:1) }).on('error', ()=>process.exit(1))\""] - interval: 30s - timeout: 10s - start_period: 15s - retries: 5 + - ../certbot/www/:/var/www/certbot/:rw + - ../certbot/conf/:/etc/letsencrypt/:rw - mail: - image: bytemark/smtp:latest - restart: always - ports: - - "2525:25" - networks: - - app-network networks: # Declare the network to be used by the services app-network: # Is a user-defined network #external: false # If true, Docker Compose will look for an existing network with the same name and use it. If false or not specified, Docker Compose will create a new network. - name: app-network #Name of the network (optional, Docker Compose will generate one if not provided) \ No newline at end of file + name: app-network #Name of the network (optional, Docker Compose will generate one if not provided) + +volumes : + grafana-data: \ No newline at end of file diff --git a/ansible/files/dockerfiles/grafana/Dockerfile b/ansible/files/dockerfiles/grafana/Dockerfile index a952e24..a90c6df 100644 --- a/ansible/files/dockerfiles/grafana/Dockerfile +++ b/ansible/files/dockerfiles/grafana/Dockerfile @@ -1,2 +1,5 @@ FROM grafana/grafana:12.3 -RUN grafana-cli plugins install grafana-munin-datasource \ No newline at end of file + +USER root +RUN grafana-cli plugins install grafana-munin-datasource +USER grafana \ No newline at end of file diff --git a/ansible/playbook.yml b/ansible/playbook.yml index 96a28bd..8488ce2 100755 --- a/ansible/playbook.yml +++ b/ansible/playbook.yml @@ -53,19 +53,27 @@ port: "{{ http_port }}" proto: tcp + + - name: Install munin + apt: + name: + - munin-node + state: present + + # TODO : d'ou est ajoute le fichier /etc/muning/munin-node.conf ? # Munin Configuration #https://stackoverflow.com/questions/77941169/ansible-add-line-update-etc-hosts-when-outdated -# - name: Install Munin Node -# ansible.builtin.lineinfile: -# path: /etc/munin/munin-node.conf -# regexp: '^allow' -# line: "allow ^127\\.0\\.0\\.1$" -# -# - name: Restart munin-node -# systemd: -# name: munin-node -# state: restarted -# enabled: yes + - name: Install Munin Node + ansible.builtin.lineinfile: + path: /etc/munin/munin-node.conf + regexp: '^allow' + line: "allow ^127\\.0\\.0\\.1$" + + - name: Restart munin-node + systemd: + name: munin-node + state: restarted + enabled: yes - name: Install Docker plugins apt: