From bc5e156a9d69299e2a0dc80cdf077c41ea158fe4 Mon Sep 17 00:00:00 2001 From: vimal-tech-starter Date: Thu, 5 Mar 2026 01:01:06 +0530 Subject: [PATCH] Phase 9: Add Micrometer + Prometheus metrics support + Grafana visual dashboards Signed-off-by: vimal-tech-starter --- .gitignore | 2 +- docker-compose.yml | 29 ++++++++++++++++++++----- pom.xml | 10 +++++++++ prometheus/prometheus.yml | 10 +++++++++ src/main/resources/application-prod.yml | 16 +++++++++++++- 5 files changed, 60 insertions(+), 7 deletions(-) create mode 100644 prometheus/prometheus.yml diff --git a/.gitignore b/.gitignore index 38fb279..2775fa6 100644 --- a/.gitignore +++ b/.gitignore @@ -23,7 +23,7 @@ logs/ ############################################ # Environment / Secrets ############################################ -.env +.env.dev .env.* *.env *.key diff --git a/docker-compose.yml b/docker-compose.yml index 6f81612..91e1838 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,5 +1,3 @@ -version: "3.9" - services: postgres: @@ -15,7 +13,7 @@ services: volumes: - vimaltech_pgdata:/var/lib/postgresql/data healthcheck: - test: [ "CMD-SHELL", "pg_isready -U contactuser -d contactdb" ] + test: ["CMD-SHELL", "pg_isready -U contactuser -d contactdb"] interval: 10s timeout: 5s retries: 5 @@ -28,9 +26,30 @@ services: condition: service_healthy ports: - "8080:8080" + env_file: + - .env.prod environment: - SPRING_PROFILES_ACTIVE: dev + SPRING_PROFILES_ACTIVE: prod + restart: unless-stopped + + prometheus: + image: prom/prometheus + container_name: vimaltech-prometheus + volumes: + - ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml + ports: + - "9090:9090" + restart: unless-stopped + + grafana: + image: grafana/grafana + container_name: vimaltech-grafana + ports: + - "3000:3000" + volumes: + - grafana_data:/var/lib/grafana restart: unless-stopped volumes: - vimaltech_pgdata: \ No newline at end of file + vimaltech_pgdata: + grafana_data: \ No newline at end of file diff --git a/pom.xml b/pom.xml index 086208a..3bc10eb 100644 --- a/pom.xml +++ b/pom.xml @@ -110,6 +110,16 @@ org.springframework.boot spring-boot-starter-data-redis + + + org.springframework.boot + spring-boot-starter-actuator + + + + io.micrometer + micrometer-registry-prometheus + diff --git a/prometheus/prometheus.yml b/prometheus/prometheus.yml new file mode 100644 index 0000000..76ed345 --- /dev/null +++ b/prometheus/prometheus.yml @@ -0,0 +1,10 @@ +global: + scrape_interval: 15s + +scrape_configs: + - job_name: 'contact-api' + + metrics_path: /actuator/prometheus + + static_configs: + - targets: ['contact-api:8080'] \ No newline at end of file diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml index a6335c0..d0b95f3 100644 --- a/src/main/resources/application-prod.yml +++ b/src/main/resources/application-prod.yml @@ -35,4 +35,18 @@ logging: root: WARN com.vimaltech.contactapi: INFO org.springframework: WARN - org.hibernate: WARN \ No newline at end of file + org.hibernate: WARN + +management: + endpoints: + web: + exposure: + include: health,info,prometheus + + endpoint: + health: + show-details: never + + metrics: + tags: + application: contact-api \ No newline at end of file