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: