From d32ad1c43b3c359a7b72ac5ea123bc02483f244e Mon Sep 17 00:00:00 2001
From: evilimkova <evilimkova@onpointserv.com>
Date: Tue, 25 Apr 2023 16:29:16 +0200
Subject: [PATCH] Adding prometheus and grafan to docker-compose

---
 application/docker-compose.yml                | 30 ++++++++++++++++++-
 .../datasources/prometheus_ds.yml             |  6 ++++
 .../src/main/resources/application.properties |  2 +-
 .../src/main/resources/application.properties |  2 +-
 .../src/main/resources/application.properties |  2 +-
 .../src/main/resources/application.properties |  2 +-
 application/pom.xml                           |  5 ++++
 application/prometheus/prometheus.yml         | 25 ++++++++++++++++
 8 files changed, 69 insertions(+), 5 deletions(-)
 create mode 100644 application/grafana/provisioning/datasources/prometheus_ds.yml
 create mode 100644 application/prometheus/prometheus.yml

diff --git a/application/docker-compose.yml b/application/docker-compose.yml
index 41a6a0d3..6112e2d1 100644
--- a/application/docker-compose.yml
+++ b/application/docker-compose.yml
@@ -1,4 +1,7 @@
 version: '3'
+volumes:
+  prometheus_data:
+  grafana-data:
 
 services:
   certificate:
@@ -27,4 +30,29 @@ services:
     container_name: mail
     image: xpokorn8/sprachschulsystem:mail
     ports:
-      - "5003:5003"
\ No newline at end of file
+      - "5003:5003"
+
+  prometheus:
+    image: prom/prometheus:v2.43.0
+    container_name: prometheus
+    volumes:
+      - ./prometheus:/etc/prometheus
+      - prometheus_data:/prometheus
+    expose:
+      - 9090
+    ports:
+      - "9090:9090"
+    command:
+      - '--config.file=/etc/prometheus/prometheus.yml'
+
+  grafana:
+      image: grafana/grafana:7.5.7
+      ports:
+        - "3000:3000"
+      restart: unless-stopped
+      volumes:
+        - ./grafana/provisioning/datasources:/etc/grafana/provisioning/datasources
+        - grafana-data:/var/lib/grafana
+
+
+
diff --git a/application/grafana/provisioning/datasources/prometheus_ds.yml b/application/grafana/provisioning/datasources/prometheus_ds.yml
new file mode 100644
index 00000000..69fb2b04
--- /dev/null
+++ b/application/grafana/provisioning/datasources/prometheus_ds.yml
@@ -0,0 +1,6 @@
+datasources:
+  - name: Prometheus
+    access: proxy
+    type: prometheus
+    url: http://host.docker.internal:9090
+    isDefault: true
\ No newline at end of file
diff --git a/application/module-certificate/src/main/resources/application.properties b/application/module-certificate/src/main/resources/application.properties
index 56f47bd4..c773ad97 100644
--- a/application/module-certificate/src/main/resources/application.properties
+++ b/application/module-certificate/src/main/resources/application.properties
@@ -1,6 +1,6 @@
 server.port=5001
 
-management.endpoints.web.exposure.include=health, metrics
+management.endpoints.web.exposure.include=health,metrics,prometheus
 management.endpoint.health.show-details=always
 management.health.defaults.enabled=true
 management.endpoint.health.probes.enabled=true
diff --git a/application/module-exercise/src/main/resources/application.properties b/application/module-exercise/src/main/resources/application.properties
index 13d14764..dc2e9357 100644
--- a/application/module-exercise/src/main/resources/application.properties
+++ b/application/module-exercise/src/main/resources/application.properties
@@ -1,6 +1,6 @@
 server.port=5002
 
-management.endpoints.web.exposure.include=health, metrics
+management.endpoints.web.exposure.include=health,metrics,prometheus
 management.endpoint.health.show-details=always
 management.health.defaults.enabled=true
 management.endpoint.health.probes.enabled=true
diff --git a/application/module-language-school/src/main/resources/application.properties b/application/module-language-school/src/main/resources/application.properties
index db1fd4ab..0a43c652 100644
--- a/application/module-language-school/src/main/resources/application.properties
+++ b/application/module-language-school/src/main/resources/application.properties
@@ -1,6 +1,6 @@
 server.port=5000
 
-management.endpoints.web.exposure.include=health, metrics
+management.endpoints.web.exposure.include=health,metrics,prometheus
 management.endpoint.health.show-details=always
 management.health.defaults.enabled=true
 management.endpoint.health.probes.enabled=true
diff --git a/application/module-mail/src/main/resources/application.properties b/application/module-mail/src/main/resources/application.properties
index 44b7f743..6a14995d 100644
--- a/application/module-mail/src/main/resources/application.properties
+++ b/application/module-mail/src/main/resources/application.properties
@@ -1,6 +1,6 @@
 server.port=5003
 
-management.endpoints.web.exposure.include=health, metrics
+management.endpoints.web.exposure.include=health,metrics,prometheus
 management.endpoint.health.show-details=always
 management.health.defaults.enabled=true
 management.endpoint.health.probes.enabled=true
diff --git a/application/pom.xml b/application/pom.xml
index 81c06568..dd5ca994 100644
--- a/application/pom.xml
+++ b/application/pom.xml
@@ -99,6 +99,11 @@
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-actuator</artifactId>
         </dependency>
+
+        <dependency>
+            <groupId>io.micrometer</groupId>
+            <artifactId>micrometer-registry-prometheus</artifactId>
+        </dependency>
     </dependencies>
 
     <build>
diff --git a/application/prometheus/prometheus.yml b/application/prometheus/prometheus.yml
new file mode 100644
index 00000000..1fb0be13
--- /dev/null
+++ b/application/prometheus/prometheus.yml
@@ -0,0 +1,25 @@
+global:
+  scrape_interval: 1s
+  external_labels:
+    monitor: 'my-monitor'
+
+scrape_configs:
+  - job_name: 'prometheus'
+    static_configs:
+      - targets: ['localhost:9090']
+  - job_name: 'module-certificate'
+    metrics_path: /actuator/prometheus
+    static_configs:
+      - targets: ['host.docker.internal:5001']
+  - job_name: 'module-exercise'
+    metrics_path: /actuator/prometheus
+    static_configs:
+      - targets: ['host.docker.internal:5002']
+  - job_name: 'module-language-school'
+    metrics_path: /actuator/prometheus
+    static_configs:
+      - targets: ['host.docker.internal:5000']
+  - job_name: 'module-mail'
+    metrics_path: /actuator/prometheus
+    static_configs:
+      - targets: ['host.docker.internal:5003']
-- 
GitLab