Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
49 changes: 2 additions & 47 deletions .github/workflows/cicd.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down Expand Up @@ -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에 접속해서 명령어를 실행하는 액션을 사용함.
Expand Down
63 changes: 5 additions & 58 deletions docker-compose.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
# service 용 docker-compose.yml
version: '3.8'

services:
Expand All @@ -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 사용하기 때문
65 changes: 65 additions & 0 deletions monitoring/docker-compose.yml
Original file line number Diff line number Diff line change
@@ -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
File renamed without changes.
2 changes: 1 addition & 1 deletion prometheus-config.yml → monitoring/prometheus-config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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'
File renamed without changes.