From 210e3868f28c71255f4ff5cfa1aff9b3361421fd Mon Sep 17 00:00:00 2001
From: schnarkus <markus.simianer@yahoo.de>
Date: Thu, 29 Aug 2024 16:04:37 +0200
Subject: [PATCH] add prometheus dev

---
 local-environment/prometheus.yml | 13 ++++++++
 local-environment/setup-local.sh | 56 ++++++++++++++++++++++++--------
 2 files changed, 56 insertions(+), 13 deletions(-)
 create mode 100644 local-environment/prometheus.yml

diff --git a/local-environment/prometheus.yml b/local-environment/prometheus.yml
new file mode 100644
index 0000000..5afeba5
--- /dev/null
+++ b/local-environment/prometheus.yml
@@ -0,0 +1,13 @@
+global:
+  scrape_interval: 15s
+
+scrape_configs:
+  - job_name: "prometheus"
+    scrape_interval: 5s
+    static_configs:
+      - targets: ["localhost:9090"]
+
+  - job_name: "webservice"
+    scrape_interval: 15s
+    static_configs:
+      - targets: ["10.89.0.2:8080"]
diff --git a/local-environment/setup-local.sh b/local-environment/setup-local.sh
index 6e987f1..8be2e01 100755
--- a/local-environment/setup-local.sh
+++ b/local-environment/setup-local.sh
@@ -1,22 +1,42 @@
 #!/bin/bash
 
+# webservice container
 IMAGE_NAME="registry.bht-berlin.de:443/masi9606/webservice:dev"
 CONTAINER_NAME="webservice_container"
 CONTAINER_HTTP_PORT="8080"
 CONTAINER_HTTPS_PORT="8443"
 NGINX_CONF="/etc/nginx/sites-available/default"
 CERT_DIR="/etc/nginx/certs"
-DOMAIN_NAME="webservice.local"
+WEB_SERVICE_DOMAIN="webservice.local" 
+
+# prometheus container
+PROMETHEUS_IMAGE="prom/prometheus:latest"
+PROMETHEUS_CONTAINER_NAME="prometheus_monitor"
+PROMETHEUS_PORT="9090"
+PROMETHEUS_DOMAIN="monitoring.local" 
+PROMETHEUS_CONFIG_FILE="prometheus.yml"
+
+# local network
+NETWORK_NAME="dev_network"
 
 # Stop old containers
 podman stop $CONTAINER_NAME
 podman rm -f $CONTAINER_NAME
+podman stop $PROMETHEUS_CONTAINER_NAME
+podman rm -f $PROMETHEUS_CONTAINER_NAME
 
-# Pull image
+# Pull images
 podman pull $IMAGE_NAME
+podman pull $PROMETHEUS_IMAGE
 
-# Run container on both ports
-podman run -d -p $CONTAINER_HTTP_PORT:$CONTAINER_HTTP_PORT -p $CONTAINER_HTTPS_PORT:$CONTAINER_HTTPS_PORT --name $CONTAINER_NAME $IMAGE_NAME
+# Run webservice container
+podman run -d \
+  --name "$CONTAINER_NAME" \
+  --network "$NETWORK_NAME" \
+  --ip "10.89.0.2" \
+  -p "$CONTAINER_HTTP_PORT:$CONTAINER_HTTP_PORT" \
+  -p "$CONTAINER_HTTPS_PORT:$CONTAINER_HTTPS_PORT" \
+  "$IMAGE_NAME"
 
 # Install packages
 podman exec -it $CONTAINER_NAME apt-get update
@@ -26,7 +46,7 @@ podman exec -it $CONTAINER_NAME apt-get install -y openssl nginx systemctl curl
 podman exec -it $CONTAINER_NAME bash -c "mkdir -p $CERT_DIR && \
     openssl req -x509 -nodes -days 365 -newkey rsa:4096 \
     -keyout $CERT_DIR/nginx.key -out $CERT_DIR/nginx.crt \
-    -subj '/CN=$DOMAIN_NAME'"
+    -subj '/CN=$WEB_SERVICE_DOMAIN'"
 
 podman cp default.conf $CONTAINER_NAME:$NGINX_CONF
 
@@ -37,19 +57,29 @@ podman exec -it $CONTAINER_NAME systemctl restart nginx
 podman exec -it $CONTAINER_NAME sleep 5
 
 # Add entry to /etc/hosts
-podman exec -it $CONTAINER_NAME bash -c "echo '127.0.0.1       webservice.local' >> /etc/hosts"
-
-echo "Setup complete..."
+podman exec -it $CONTAINER_NAME bash -c "echo '127.0.0.1 $WEB_SERVICE_DOMAIN' >> /etc/hosts"
 
 echo "Testing from inside..."
-podman exec -it $CONTAINER_NAME curl -k https://$DOMAIN_NAME:$CONTAINER_HTTPS_PORT/
+podman exec -it $CONTAINER_NAME curl -k https://$WEB_SERVICE_DOMAIN:$CONTAINER_HTTPS_PORT/
 
 echo "Testing from outside..."
-sudo bash -c "echo '127.0.0.1 webservice.local' >> /etc/hosts"
-curl -k https://$DOMAIN_NAME:$CONTAINER_HTTPS_PORT/
+sudo bash -c "echo '127.0.0.1 $WEB_SERVICE_DOMAIN' >> /etc/hosts"
+curl -k https://$WEB_SERVICE_DOMAIN:$CONTAINER_HTTPS_PORT/
 
 echo "Testing Redis..."
-curl -k -X PUT --header 'Content-Type: text/plain; charset=utf-8' --data 'foo' https://$DOMAIN_NAME:$CONTAINER_HTTPS_PORT/state/bar
+curl -k -X PUT --header 'Content-Type: text/plain; charset=utf-8' --data 'foo' https://$WEB_SERVICE_DOMAIN:$CONTAINER_HTTPS_PORT/state/bar
 
 # Check the value in the database
-podman exec -it $CONTAINER_NAME redis-cli KEYS '*'
\ No newline at end of file
+podman exec -it $CONTAINER_NAME redis-cli KEYS '*'
+
+# Run Prometheus container
+podman run -d \
+  --name $PROMETHEUS_CONTAINER_NAME \
+  --network $NETWORK_NAME --ip "10.89.0.3" \
+  -p $PROMETHEUS_PORT:$PROMETHEUS_PORT \
+  -v $PWD/$PROMETHEUS_CONFIG_FILE:/etc/prometheus/prometheus.yml:Z \
+  $PROMETHEUS_IMAGE --config.file=/etc/prometheus/prometheus.yml
+
+# Test Prometheus
+sudo bash -c "echo '127.0.0.1 $PROMETHEUS_DOMAIN' >> /etc/hosts"
+curl http://$PROMETHEUS_DOMAIN:$PROMETHEUS_PORT/
\ No newline at end of file
-- 
GitLab