From b0afd5036849f09fb29395f3c9bb821c2b475c5f Mon Sep 17 00:00:00 2001 From: HyeonBin2379 Date: Thu, 14 May 2026 11:24:04 +0900 Subject: [PATCH 1/6] =?UTF-8?q?fix:=20=EB=AA=A8=EB=8B=88=ED=84=B0=EB=A7=81?= =?UTF-8?q?=20api=20=EC=B0=A8=EB=8B=A8=20=EB=AC=B8=EC=A0=9C=20=ED=95=B4?= =?UTF-8?q?=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - UserSecurityConfig의 설정 수정 --- .../auth/infrastructure/security/config/UserSecurityConfig.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/pgsg/user_service/auth/infrastructure/security/config/UserSecurityConfig.java b/src/main/java/org/pgsg/user_service/auth/infrastructure/security/config/UserSecurityConfig.java index 33778d4..8ad3adf 100644 --- a/src/main/java/org/pgsg/user_service/auth/infrastructure/security/config/UserSecurityConfig.java +++ b/src/main/java/org/pgsg/user_service/auth/infrastructure/security/config/UserSecurityConfig.java @@ -43,7 +43,7 @@ public SecurityFilterChain filterChain(HttpSecurity http, UserAuthenticator user .requestMatchers("/api/v1/auth/login", "/api/v1/auth/signup", "/api/v1/auth/reissue").permitAll() .requestMatchers("/internal/v1/**").permitAll() .requestMatchers("/favicon.ico", "/error").permitAll() - .requestMatchers("/actuator/health", "/actuator/info").permitAll() + .requestMatchers("/actuator/**").permitAll() .anyRequest().authenticated() ) // LoginFilter는 회원 아이디, 비밀번호 검증 이전에 먼저 실행 -> 이미 SecurityContext에 등록된 사용자 정보가 있으면 자동 통과 From 94d707712f91cc195076c5fcfe8fd5248287b347 Mon Sep 17 00:00:00 2001 From: HyeonBin2379 Date: Thu, 14 May 2026 11:47:53 +0900 Subject: [PATCH 2/6] =?UTF-8?q?chore:=20=EB=AA=A8=EB=8B=88=ED=84=B0?= =?UTF-8?q?=EB=A7=81=20=EA=B4=80=EB=A0=A8=20=EC=84=A4=EC=A0=95=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - prometheus 의존성 추가 및 zipkin 설정 추가 --- build.gradle | 3 ++- src/main/resources/application.yml | 9 +++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 9b425b2..fb89def 100644 --- a/build.gradle +++ b/build.gradle @@ -30,8 +30,9 @@ repositories { dependencies { - implementation 'org.pgsg:common:0.2.10-SNAPSHOT' + implementation 'org.pgsg:common:0.3.2-SNAPSHOT' implementation 'org.springframework.boot:spring-boot-starter-actuator' + implementation 'io.micrometer:micrometer-registry-prometheus' // postgres - UUID 네이티브 타입 지원 runtimeOnly 'org.postgresql:postgresql' diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 5bb6310..32fe00a 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -49,3 +49,12 @@ eureka: fetch-registry: true service-url: defaultZone: ${EUREKA_SERVER_URL:http://localhost:8761/eureka/} + + +management: + tracing: + sampling: + probability: 1.0 + zipkin: + tracing: + endpoint: http://xn--vm-3ip-z01x226e:9411/api/v2/spans From d9b27e6cde3304963ed03322ac44d9e38c1129ec Mon Sep 17 00:00:00 2001 From: HyeonBin2379 Date: Thu, 14 May 2026 11:48:30 +0900 Subject: [PATCH 3/6] =?UTF-8?q?chore:=20=EB=B9=8C=EB=93=9C=20=EB=B0=8F=20?= =?UTF-8?q?=EB=B0=B0=ED=8F=AC=20=EC=8B=9C=20=ED=97=AC=EC=8A=A4=EC=B2=B4?= =?UTF-8?q?=ED=81=AC=20=EC=A3=BC=EA=B8=B0=20=EC=A1=B0=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 배포 속도 개선을 위해 헬스체크 주기를 조정 --- .github/workflows/deploy.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/deploy.yaml b/.github/workflows/deploy.yaml index 210db4e..5c85eda 100644 --- a/.github/workflows/deploy.yaml +++ b/.github/workflows/deploy.yaml @@ -15,7 +15,7 @@ env: AR_IMAGE_PATH: ${{ vars.AR_IMAGE_PATH }} WORK_DIR: /opt/user-service HEALTH_RETRIES: 30 - HEALTH_INTERVAL: 10 + HEALTH_INTERVAL: 5 jobs: build-and-push: From cfd7f238d679f7f822acb41405cdb9142f21504d Mon Sep 17 00:00:00 2001 From: HyeonBin2379 Date: Thu, 14 May 2026 15:17:33 +0900 Subject: [PATCH 4/6] =?UTF-8?q?chore:=20zipkin=20=EC=84=9C=EB=B2=84=20?= =?UTF-8?q?=EC=97=B0=EB=8F=99=20=EA=B4=80=EB=A0=A8=20=EC=84=A4=EC=A0=95=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 - deploy/promtail-config.yml 추가 - application.yaml 및 deploy/docker-compose.prod.yaml 파일에 zipkin, promtail 관련 설정 추가 --- deploy/docker-compose.prod.yaml | 11 +++++++++++ deploy/promtail-config.yml | 14 ++++++++++++++ src/main/resources/application.yml | 2 +- 3 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 deploy/promtail-config.yml diff --git a/deploy/docker-compose.prod.yaml b/deploy/docker-compose.prod.yaml index 8fb7ae1..b2a0ded 100644 --- a/deploy/docker-compose.prod.yaml +++ b/deploy/docker-compose.prod.yaml @@ -12,6 +12,17 @@ services: networks: - pgsg-network + promtail: + image: grafana/promtail:2.9.1 + container_name: user-service-promtail + restart: always + volumes: + - /opt/user-service/promtail-config.yml:/etc/promtail/config.yml + - /opt/user-service/logs:/logs + command: run --config.format=promtail /etc/promtail/config.yml + networks: + - pgsg-network + networks: pgsg-network: external: true \ No newline at end of file diff --git a/deploy/promtail-config.yml b/deploy/promtail-config.yml new file mode 100644 index 0000000..37e6790 --- /dev/null +++ b/deploy/promtail-config.yml @@ -0,0 +1,14 @@ +server: + http_listen_port: 9080 + +clients: + - url: http://34.47.69.9:3100/loki/api/v1/push + +scrape_configs: + - job_name: user-service + static_configs: + - targets: + - localhost + labels: + job: user-service + __path__: /logs/*.log \ No newline at end of file diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 32fe00a..429461c 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -57,4 +57,4 @@ management: probability: 1.0 zipkin: tracing: - endpoint: http://xn--vm-3ip-z01x226e:9411/api/v2/spans + endpoint: http://34.47.69.9:9411/api/v2/spans From 3f0c37b612fbf26a7954a975d3a39631f2f86e2b Mon Sep 17 00:00:00 2001 From: HyeonBin2379 Date: Thu, 14 May 2026 15:32:10 +0900 Subject: [PATCH 5/6] =?UTF-8?q?chore:=20zipkin=20=EC=84=9C=EB=B2=84=20?= =?UTF-8?q?=EC=97=B0=EB=8F=99=20=EC=84=A4=EC=A0=95=20=EA=B4=80=EB=A0=A8=20?= =?UTF-8?q?=EB=B0=B0=ED=8F=AC=20=EC=98=A4=EB=A5=98=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - deploy.yaml에 promtail.yml 파일을 배포하기 위한 스크립트 추가 --- .github/workflows/deploy.yaml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.github/workflows/deploy.yaml b/.github/workflows/deploy.yaml index 5c85eda..ac8b290 100644 --- a/.github/workflows/deploy.yaml +++ b/.github/workflows/deploy.yaml @@ -165,6 +165,12 @@ jobs: --zone="${{ matrix.zone }}" \ --project="$GCP_PROJECT" \ --tunnel-through-iap + + gcloud compute scp deploy/promtail-config.yml \ + ${{ matrix.vm }}:/tmp/promtail-config.yml \ + --zone="${{ matrix.zone }}" \ + --project="$GCP_PROJECT" \ + --tunnel-through-iap - name: Deploy and verify on ${{ matrix.vm }} id: deploy_run @@ -186,6 +192,7 @@ jobs: sudo mkdir -p $WORK_DIR sudo mv /tmp/docker-compose.prod.yaml $WORK_DIR/docker-compose.prod.yaml + sudo mv /tmp/promtail-config.yml $WORK_DIR/promtail-config.yml cd $WORK_DIR test -f .env || { echo '.env not found in $WORK_DIR'; exit 1; } From e4a9ec17c160892d8d2ef52a2884f3240b77abfc Mon Sep 17 00:00:00 2001 From: HyeonBin2379 Date: Thu, 14 May 2026 15:57:18 +0900 Subject: [PATCH 6/6] =?UTF-8?q?fix:=20=EC=BD=94=EB=93=9C=EB=9E=98=EB=B9=97?= =?UTF-8?q?=20=EC=88=98=EC=A0=95=EC=82=AC=ED=95=AD=20=EB=B0=98=EC=98=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - deploy.yaml에서 헬스체크 주기 및 횟수가 하드코딩된 부분을 수정 - zipkin, loki 엔드포인트를 환경변수로 변경 및 원격 서버에 환경변수 등록 - docker-compose.prod.yaml 파일 promtail 관련 명령어 수정 --- .env.example | 2 ++ .github/workflows/deploy.yaml | 4 ++-- deploy/docker-compose.prod.yaml | 2 +- deploy/promtail-config.yml | 2 +- src/main/resources/application.yml | 4 ++-- 5 files changed, 8 insertions(+), 6 deletions(-) diff --git a/.env.example b/.env.example index 154313d..c4cb91d 100644 --- a/.env.example +++ b/.env.example @@ -40,3 +40,5 @@ KAFKA_BOOTSTRAP_SERVERS=kafka1:9092,kafka2:9092 # 주의: SSL 파일은 컨테이너 내 절대 경로(/app/ssl/...)로 지정해야 합니다. SPRING_KAFKA_SSL_TRUST_STORE_LOCATION=/app/ssl/kafka.server.truststore.jks TRUST_STORE_PASSWORD=your_truststore_password + +ZIPKIN_ENDPOINT=http://localhost:9411/api/v2/spans diff --git a/.github/workflows/deploy.yaml b/.github/workflows/deploy.yaml index ac8b290..1a4595c 100644 --- a/.github/workflows/deploy.yaml +++ b/.github/workflows/deploy.yaml @@ -262,13 +262,13 @@ jobs: sudo env IMAGE_TAG=\"$ROLLBACK_TAG\" AR_IMAGE_PATH=\"${{ env.AR_IMAGE_PATH }}\" docker compose -f docker-compose.prod.yaml pull sudo env IMAGE_TAG=\"$ROLLBACK_TAG\" AR_IMAGE_PATH=\"${{ env.AR_IMAGE_PATH }}\" docker compose -f docker-compose.prod.yaml up -d - for i in \$(seq 1 18); do + for i in \$(seq 1 $HEALTH_RETRIES); do if curl -sf http://localhost:8081/actuator/health \ | grep -q '\"status\":\"UP\"'; then echo \"Rollback container UP (attempt \$i)\" exit 0 fi - sleep 10 + sleep $HEALTH_INTERVAL done echo 'Rollback container did not become healthy.' diff --git a/deploy/docker-compose.prod.yaml b/deploy/docker-compose.prod.yaml index b2a0ded..6277fbc 100644 --- a/deploy/docker-compose.prod.yaml +++ b/deploy/docker-compose.prod.yaml @@ -19,7 +19,7 @@ services: volumes: - /opt/user-service/promtail-config.yml:/etc/promtail/config.yml - /opt/user-service/logs:/logs - command: run --config.format=promtail /etc/promtail/config.yml + command: -config.file=/etc/promtail/config.yml networks: - pgsg-network diff --git a/deploy/promtail-config.yml b/deploy/promtail-config.yml index 37e6790..d36242b 100644 --- a/deploy/promtail-config.yml +++ b/deploy/promtail-config.yml @@ -2,7 +2,7 @@ server: http_listen_port: 9080 clients: - - url: http://34.47.69.9:3100/loki/api/v1/push + - url: ${LOKI_URL:-http://loki:3100/loki/api/v1/push} scrape_configs: - job_name: user-service diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 429461c..6b49a02 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -54,7 +54,7 @@ eureka: management: tracing: sampling: - probability: 1.0 + probability: 0.1 zipkin: tracing: - endpoint: http://34.47.69.9:9411/api/v2/spans + endpoint: ${ZIPKIN_ENDPOINT:http://localhost:9411/api/v2/spans}