From a5d346e7593868e8e70454fbfd1c84ffd39acadb Mon Sep 17 00:00:00 2001 From: adithya Sv Date: Thu, 3 Oct 2024 00:38:38 +0530 Subject: [PATCH 1/3] Prometheus setup --- docker-compose.yml | 22 +++++++++++++++++++++- pom.xml | 5 +++++ prometheus.yml | 7 +++++++ 3 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 prometheus.yml diff --git a/docker-compose.yml b/docker-compose.yml index 9d21f63..0f42cde 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -56,9 +56,29 @@ services: POSTGRES_PASSWORD: sonar volumes: - postgres_data:/var/lib/postgresql/data + + prometheus: + image: prom/prometheus:latest + container_name: prometheus + volumes: + - ./prometheus.yml:/etc/prometheus/prometheus.yml + - prometheus_data:/prometheus + ports: + - "9090:9090" + + grafana: + image: grafana/grafana:latest + container_name: grafana + ports: + - "3000:3000" + environment: + - GF_SECURITY_ADMIN_PASSWORD=admin + volumes: + - grafana-storage:/var/lib/grafana volumes: mongo-data: sonarqube_data: sonarqube_logs: sonarqube_extensions: - postgres_data: \ No newline at end of file + postgres_data: + grafana-storage: diff --git a/pom.xml b/pom.xml index 4f9f3b3..965f285 100644 --- a/pom.xml +++ b/pom.xml @@ -75,6 +75,11 @@ org.springframework.boot spring-boot-starter-data-mongodb-reactive + + + io.micrometer + micrometer-registry-prometheus + diff --git a/prometheus.yml b/prometheus.yml new file mode 100644 index 0000000..436aa77 --- /dev/null +++ b/prometheus.yml @@ -0,0 +1,7 @@ +global: + scrape_interval: 5s + +scrape_configs: + - job_name: 'Kafka-Study' + static_configs: + - targets: ['host.docker.internal:8080'] From 2c1aa60a91f77c107806dbd53a3f68e8b6db310e Mon Sep 17 00:00:00 2001 From: SVAdithya Date: Tue, 22 Oct 2024 13:34:40 +0530 Subject: [PATCH 2/3] minor fix and app dashboard --- docker-compose.yml | 1 + prometheus.yml | 1 + 2 files changed, 2 insertions(+) diff --git a/docker-compose.yml b/docker-compose.yml index 0f42cde..69ea4b5 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -82,3 +82,4 @@ volumes: sonarqube_extensions: postgres_data: grafana-storage: + prometheus_data: \ No newline at end of file diff --git a/prometheus.yml b/prometheus.yml index 436aa77..74a3bd9 100644 --- a/prometheus.yml +++ b/prometheus.yml @@ -3,5 +3,6 @@ global: scrape_configs: - job_name: 'Kafka-Study' + metrics_path: '/actuator/prometheus' static_configs: - targets: ['host.docker.internal:8080'] From 5c15dae2204092974642a4a5d84c047c870d6afd Mon Sep 17 00:00:00 2001 From: SVAdithya Date: Sat, 26 Oct 2024 00:05:03 +0530 Subject: [PATCH 3/3] Containerising App Verified mongo and Kafka and internally accessible from App --- Dockerfile | 4 +- docker-compose.yml | 46 +++++++++++++++++++++-- pom.xml | 12 ++++++ src/main/resources/application.properties | 4 +- 4 files changed, 58 insertions(+), 8 deletions(-) diff --git a/Dockerfile b/Dockerfile index 70cfe8d..0e4148f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -10,7 +10,7 @@ RUN apt-get update && apt-get install -y telnet WORKDIR /app # Copy the jar file -COPY target/kafkaStudy-0.0.1-SNAPSHOT.jar . +COPY target/kafkaStudy-0.0.1-SNAPSHOT.jar app.jar # Command to run the application -CMD ["java", "-jar", "kafkaStudy-0.0.1-SNAPSHOT.jar"] +CMD ["java", "-jar", "app.jar"] diff --git a/docker-compose.yml b/docker-compose.yml index 69ea4b5..8fe4a62 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,11 +1,33 @@ -version: '2' +version: '3.8' # Specify the version of the Compose file + +networks: + app-network: # Define the network here + driver: bridge services: + app: + build: + context: . # Build from the current directory, where Dockerfile is located + dockerfile: Dockerfile # Specify the Dockerfile + container_name: kafka-study-app + + ports: + - "8080:8080" # Expose the app on localhost:8080 + depends_on: + - kafka + - mongodb + command: ["java", "-jar", "/app/app.jar"] # Command to run the app + networks: + - app-network + zookeeper: image: wurstmeister/zookeeper:latest ports: - "2181:2181" container_name: zookeeper + networks: + - app-network + kafka: image: wurstmeister/kafka:latest ports: @@ -24,9 +46,12 @@ services: - zookeeper volumes: - /var/run/docker.sock:/var/run/docker.sock + networks: + - app-network + mongodb: image: mongo:latest - container_name: mongodb-container + container_name: mongodb ports: - "27017:27017" environment: @@ -34,7 +59,10 @@ services: MONGO_INITDB_ROOT_PASSWORD: example volumes: - mongo-data:/data/db -#sonar - code quality + networks: + - app-network + + # SonarQube for code quality sonarqube: image: sonarqube ports: @@ -47,7 +75,10 @@ services: - sonarqube_data:/opt/sonarqube/data - sonarqube_logs:/opt/sonarqube/logs - sonarqube_extensions:/opt/sonarqube/extensions -#Sonar-related postgres + networks: + - app-network + + # SonarQube-related PostgreSQL database postgres: image: postgres environment: @@ -56,6 +87,8 @@ services: POSTGRES_PASSWORD: sonar volumes: - postgres_data:/var/lib/postgresql/data + networks: + - app-network prometheus: image: prom/prometheus:latest @@ -65,6 +98,8 @@ services: - prometheus_data:/prometheus ports: - "9090:9090" + networks: + - app-network grafana: image: grafana/grafana:latest @@ -75,6 +110,9 @@ services: - GF_SECURITY_ADMIN_PASSWORD=admin volumes: - grafana-storage:/var/lib/grafana + networks: + - app-network + volumes: mongo-data: sonarqube_data: diff --git a/pom.xml b/pom.xml index 965f285..5c52c72 100644 --- a/pom.xml +++ b/pom.xml @@ -88,6 +88,18 @@ sonar-maven-plugin 4.0.0.4121 + + org.springframework.boot + spring-boot-maven-plugin + + + + repackage + + + + + diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 559c1a6..7f3b5fe 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -2,13 +2,13 @@ spring.application.name=KafkaStudy kafka.regular.topic=my-topic regular.kafka.autostart=false reactive.kafka.autostart=true -spring.kafka.consumer.bootstrap-servers=127.0.0.1:9092 +spring.kafka.consumer.bootstrap-servers=kafka:9092 spring.kafka.consumer.group-id=demo-3 spring.kafka.consumer.auto-offset-reset=earliest spring.kafka.consumer.key-deserializer=org.apache.kafka.common.serialization.StringDeserializer spring.kafka.consumer.value-deserializer=org.apache.kafka.common.serialization.StringDeserializer spring.kafka.consumer.properties.session.timeout.ms=30000 spring.kafka.consumer.properties.heartbeat.interval.ms=10000 -spring.data.mongodb.uri=mongodb://root:example@localhost:27017/testMongoDb?authSource=admin +spring.data.mongodb.uri=mongodb://root:example@mongodb:27017/testMongoDb?authSource=admin mask.headers.list=pwd,pass management.endpoints.web.exposure.include = *