From 1143c6cb9bc79371e23e80c862df9b2363291ce4 Mon Sep 17 00:00:00 2001 From: doohaaa Date: Tue, 12 Aug 2025 10:31:51 +0900 Subject: [PATCH 1/3] =?UTF-8?q?refactor(CICD):=20=EB=AA=A8=EB=8B=88?= =?UTF-8?q?=ED=84=B0=EB=A7=81=20=EA=B4=80=EB=A0=A8=20=ED=8C=8C=EC=9D=BC=20?= =?UTF-8?q?=ED=8F=B4=EB=8D=94=20=EB=B3=80=EA=B2=BD,=20docker-compose=20?= =?UTF-8?q?=EB=B6=84=EB=A6=AC,=20=EB=84=A4=ED=8A=B8=EC=9B=8C=ED=81=AC=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker-compose.yml | 63 ++---------------- monitoring/docker-compose.yml | 65 +++++++++++++++++++ loki-config.yml => monitoring/loki-config.yml | 0 .../prometheus-config.yml | 0 .../promtail-config.yml | 0 5 files changed, 70 insertions(+), 58 deletions(-) create mode 100644 monitoring/docker-compose.yml rename loki-config.yml => monitoring/loki-config.yml (100%) rename prometheus-config.yml => monitoring/prometheus-config.yml (100%) rename promtail-config.yml => monitoring/promtail-config.yml (100%) diff --git a/docker-compose.yml b/docker-compose.yml index 47ccf062..9fd5db50 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,3 +1,4 @@ +# service 용 docker-compose.yml version: '3.8' services: @@ -16,65 +17,11 @@ services: # docker 컨테이너가 중단되었을때 다시 자동으로 자동 재시작 하지 않음 restart: "no" volumes: - - /home/ubuntu/logs:/logs - - # promtail - promtail: - image: grafana/promtail:3.4.1 - container_name: promtail - restart: unless-stopped - volumes: - # Docker 로그 파일 경로 전체 접근 - - /var/lib/docker/containers:/var/lib/docker/containers:ro - # promtail 에 대한 환경 설정 파일 - - /home/ubuntu/promtail/promtail-config.yml:/etc/promtail/promtail-config.yml - # 로그 파일 어디까지 읽었는지 위치 저장하는 폴더 - - /home/ubuntu/promtail/positions:/tmp - # log - - /home/ubuntu/logs:/logs - command: - - --config.file=/etc/promtail/promtail-config.yml - - # Loki - loki: - image: grafana/loki:3.4.1 - container_name: loki - restart: unless-stopped - user: root - volumes: - - /home/ubuntu/loki/data:/loki - - /home/ubuntu/loki/loki-config.yml:/etc/loki/loki-config.yml - ports: - - "3100:3100" - command: - - --config.file=/etc/loki/loki-config.yml - - # Prometheus - prometheus: - image: prom/prometheus:v3.2.1 - container_name: prometheus - restart: unless-stopped - user: root - volumes: - - /home/ubuntu/prometheus/prometheus-config.yml:/etc/prometheus/prometheus.yml - - /home/ubuntu/prometheus/data:/prometheus - ports: - - "9090:9090" - command: - - --config.file=/etc/prometheus/prometheus.yml - - # Grafana - grafana: - image: grafana/grafana:11.6.0 - container_name: grafana - restart: unless-stopped - user: root - volumes: - - /home/ubuntu/grafana:/var/lib/grafana - ports: - - "3000:3000" + - /home/ubuntu/monitoring/logs:/logs networks: - spring-net: + default: + external: true + name: my-network # volume 설정이 필요없는 이유는 AWS RDS MYSQL 사용하기 때문 \ No newline at end of file diff --git a/monitoring/docker-compose.yml b/monitoring/docker-compose.yml new file mode 100644 index 00000000..d1280d65 --- /dev/null +++ b/monitoring/docker-compose.yml @@ -0,0 +1,65 @@ +# monitoring 용 docker-compose.yml + +version: '3.8' + +services: + # promtail + promtail: + image: grafana/promtail:3.4.1 + container_name: promtail + restart: unless-stopped + volumes: + # Docker 로그 파일 경로 전체 접근 + - /var/lib/docker/containers:/var/lib/docker/containers:ro + # promtail 에 대한 환경 설정 파일 + - /home/ubuntu/monitoring/promtail/promtail-config.yml:/etc/promtail/promtail-config.yml + # 로그 파일 어디까지 읽었는지 위치 저장하는 폴더 + - /home/ubuntu/monitoring/promtail/positions:/tmp + # log + - /home/ubuntu/monitoring/logs:/logs + command: + - --config.file=/etc/promtail/promtail-config.yml + + # Loki + loki: + image: grafana/loki:3.4.1 + container_name: loki + restart: unless-stopped + user: root + volumes: + - /home/ubuntu/monitoring/loki/data:/loki + - /home/ubuntu/monitoring/loki/loki-config.yml:/etc/loki/loki-config.yml + ports: + - "3100:3100" + command: + - --config.file=/etc/loki/loki-config.yml + + # Prometheus + prometheus: + image: prom/prometheus:v3.2.1 + container_name: prometheus + restart: unless-stopped + user: root + volumes: + - /home/ubuntu/monitoring/prometheus/prometheus-config.yml:/etc/prometheus/prometheus.yml + - /home/ubuntu/monitoring/prometheus/data:/prometheus + ports: + - "9090:9090" + command: + - --config.file=/etc/prometheus/prometheus.yml + + # Grafana + grafana: + image: grafana/grafana:11.6.0 + container_name: grafana + restart: unless-stopped + user: root + volumes: + - /home/ubuntu/monitoring/grafana:/var/lib/grafana + ports: + - "3000:3000" + +networks: + default: + external: true + name: my-network \ No newline at end of file diff --git a/loki-config.yml b/monitoring/loki-config.yml similarity index 100% rename from loki-config.yml rename to monitoring/loki-config.yml diff --git a/prometheus-config.yml b/monitoring/prometheus-config.yml similarity index 100% rename from prometheus-config.yml rename to monitoring/prometheus-config.yml diff --git a/promtail-config.yml b/monitoring/promtail-config.yml similarity index 100% rename from promtail-config.yml rename to monitoring/promtail-config.yml From b371a01f43a945cc2a988933246ade54fd13cbd3 Mon Sep 17 00:00:00 2001 From: doohaaa Date: Tue, 12 Aug 2025 10:33:05 +0900 Subject: [PATCH 2/3] =?UTF-8?q?refactor(CICD):=20workflow=20=EA=B2=BD?= =?UTF-8?q?=EB=9F=89=ED=99=94=20(monitoring=EA=B4=80=EB=A0=A8=20=EC=9E=91?= =?UTF-8?q?=EC=97=85=20=EC=82=AD=EC=A0=9C)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/cicd.yml | 49 ++------------------------------------ 1 file changed, 2 insertions(+), 47 deletions(-) diff --git a/.github/workflows/cicd.yml b/.github/workflows/cicd.yml index 79e9a914..2bacdef9 100644 --- a/.github/workflows/cicd.yml +++ b/.github/workflows/cicd.yml @@ -4,8 +4,8 @@ name: CI/CD Docker to EC2 # 언제 이 워크플로우를 실행할지 정하는 부분임. on: push: - # "feature/CICD" 브랜치에 코드가 push 될 때마다 실행될 거임. - branches: [ "feature/CICD" ] + # "refactor/deployment" 브랜치에 코드가 push 될 때마다 실행될 거임. + branches: [ "refactor/deployment" ] # 워크플로우가 해야 할 작업(job)들을 정의함. jobs: @@ -83,51 +83,6 @@ jobs: source: ".env,docker-compose.yml" target: "/home/ubuntu" - # 8.5 단계: promtail, loki, prometheus 폴더 생성 - - name: Prepare directories on EC2 - uses: appleboy/ssh-action@master - with: - host: ${{ secrets.EC2_HOST }} - username: ${{ secrets.EC2_USERNAME }} - key: ${{ secrets.EC2_SSH_KEY }} - script: | - mkdir -p /home/ubuntu/promtail - sudo chown -R ubuntu:ubuntu /home/ubuntu/promtail - mkdir -p /home/ubuntu/loki - sudo chown -R ubuntu:ubuntu /home/ubuntu/loki - mkdir -p /home/ubuntu/prometheus - sudo chown -R ubuntu:ubuntu /home/ubuntu/prometheus - - # 8.5 단계: promtail-config.yml 파일 EC2로 복사 - - name: Copy files to EC2 (1) - uses: appleboy/scp-action@master - with: - host: ${{ secrets.EC2_HOST }} - username: ${{ secrets.EC2_USERNAME }} - key: ${{ secrets.EC2_SSH_KEY }} - source: "promtail-config.yml" - target: "/home/ubuntu/promtail" - - # 8.5 단계: loki-config.yml 파일 EC2로 복사 - - name: Copy files to EC2 (2) - uses: appleboy/scp-action@master - with: - host: ${{ secrets.EC2_HOST }} - username: ${{ secrets.EC2_USERNAME }} - key: ${{ secrets.EC2_SSH_KEY }} - source: "loki-config.yml" - target: "/home/ubuntu/loki" - - # 8.5 단계: prometheus-config.yml 파일 EC2로 복사 - - name: Copy files to EC2 (3) - uses: appleboy/scp-action@master - with: - host: ${{ secrets.EC2_HOST }} - username: ${{ secrets.EC2_USERNAME }} - key: ${{ secrets.EC2_SSH_KEY }} - source: "prometheus-config.yml" - target: "/home/ubuntu/prometheus" - # 9단계: EC2 서버에 배포 - name: Deploy to EC2 # SSH를 통해 EC2에 접속해서 명령어를 실행하는 액션을 사용함. From 9575fe4fd04b1c89c32cbcf6324f046192f0ca72 Mon Sep 17 00:00:00 2001 From: doohaaa Date: Tue, 12 Aug 2025 10:49:55 +0900 Subject: [PATCH 3/3] =?UTF-8?q?fix(CICD):=20=EB=8F=84=EC=BB=A4=20=EC=BB=A8?= =?UTF-8?q?=ED=85=8C=EC=9D=B4=EB=84=88=20=EB=B6=84=EB=A6=AC=ED=95=98?= =?UTF-8?q?=EB=A9=B0=20=EB=B3=80=EA=B2=BD=EB=90=9C=20=EC=9D=B4=EB=A6=84=20?= =?UTF-8?q?=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- monitoring/prometheus-config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/monitoring/prometheus-config.yml b/monitoring/prometheus-config.yml index b3249e38..46c68440 100644 --- a/monitoring/prometheus-config.yml +++ b/monitoring/prometheus-config.yml @@ -16,7 +16,7 @@ scrape_configs: - job_name: 'spring-boot-app-metric' metrics_path: '/api/actuator/prometheus' static_configs: - - targets: [ 'app:8080' ] + - targets: [ 'springboot-container:8080' ] # grafana 와 같은 대시보드에서 메트릭을 식별하는 라벨 설정 labels: instance: 'spring-boot-app' \ No newline at end of file