Skip to content

# chore(observability): Prometheus/Grafana 모니터링 스택 + 공통 JSON 로깅 구성y - #14

Merged
NewEgoDoc merged 1 commit into
mainfrom
chore/observability-prometheus-grafana-logging
May 8, 2026
Merged

# chore(observability): Prometheus/Grafana 모니터링 스택 + 공통 JSON 로깅 구성y#14
NewEgoDoc merged 1 commit into
mainfrom
chore/observability-prometheus-grafana-logging

Conversation

@NewEgoDoc

Copy link
Copy Markdown
Owner

Summary

OpenRemit 전체 모듈(remittance-api, payout-worker, webhook-dispatcher, reconciler)에 Prometheus 메트릭 노출을 통일하고, docker-compose에 Prometheus/Grafana를 추가했습니다. 또한 common 모듈에 공통 logback-spring.xml을 추가해 local 프로필은 텍스트 로그, 그 외 프로필은 JSON 로그로 표준화했습니다.


Changes

1) docker-compose: Prometheus + Grafana 추가

  • docker-compose.yml
    • prometheus 서비스 추가 (9090)
    • grafana 서비스 추가 (3000)
    • host.docker.internal:host-gateway 설정으로 호스트 JVM scrape 지원
    • prometheus-data, grafana-data 볼륨 추가
  • docker/prometheus.yml (신규)
    • /actuator/prometheus scrape 설정
    • 대상:
      • host.docker.internal:8080 (remittance-api)
      • host.docker.internal:8081 (payout-worker)
      • host.docker.internal:8082 (webhook-dispatcher)
      • host.docker.internal:8084 (reconciler)

2) Grafana provisioning/대시보드 추가

  • docker/grafana/provisioning/datasources/prometheus.yml (신규)
    • datasource Prometheus (uid: prometheus) 자동 등록
  • docker/grafana/provisioning/dashboards/provider.yml (신규)
    • OpenRemit 폴더 dashboard provider 등록
  • docker/grafana/dashboards/openremit.json (신규)
    • OpenRemit — Service Overview 대시보드 추가
    • HTTP latency/throughput, JVM heap, Resilience4j 지표 패널 구성

3) 각 서비스 Prometheus 노출 설정 통일

  • remittance-api/src/main/resources/application.yaml
  • payout-worker/src/main/resources/application.yaml
  • webhook-dispatcher/src/main/resources/application.yaml
  • reconciler/src/main/resources/application.yaml
    • management.endpoints.web.exposure.includeprometheus 추가
    • management.prometheus.metrics.export.enabled=true
    • management.metrics.tags.application=${spring.application.name} 추가

4) 의존성 추가 (메트릭/JSON 로깅)

  • remittance-api/build.gradle.kts
  • payout-worker/build.gradle.kts
  • webhook-dispatcher/build.gradle.kts
  • reconciler/build.gradle.kts
    • io.micrometer:micrometer-registry-prometheus 추가
    • net.logstash.logback:logstash-logback-encoder:8.0 추가
    • reconciler는 scrape endpoint 노출 위해 spring-boot-starter-webmvc 추가

5) 공통 로그 포맷 추가

  • common/src/main/resources/logback-spring.xml (신규)
    • local 프로필: 콘솔 텍스트 로그
    • !local 프로필: Logstash JSON 한 줄 로그
    • app custom field 및 traceId/spanId MDC 포함

6) 문서 업데이트

  • README.md
    • mock-webhook/prometheus/grafana 서비스 설명 추가
    • 메트릭 확인 방법 및 포트/라벨 표 추가
    • 로그 프로필 동작(local vs default) 설명 추가

Checklist

  • Prometheus/Grafana docker-compose 구성 추가
  • Grafana datasource/dashboard provisioning 추가
  • 4개 서비스 /actuator/prometheus 노출 설정 통일
  • Prometheus registry 및 JSON 로깅 의존성 추가
  • 공통 logback-spring.xml 추가
  • README 관측성 가이드 반영

How to Test

# 1) 인프라 기동
docker compose up -d

# 2) 각 서비스 실행 (예시)
./gradlew :remittance-api:bootRun
./gradlew :payout-worker:bootRun
./gradlew :webhook-dispatcher:bootRun
./gradlew :reconciler:bootRun

# 3) 메트릭 확인
curl -s http://localhost:8080/actuator/prometheus | head
curl -s http://localhost:9090/api/v1/targets

# 4) Grafana 확인
# http://localhost:3000 접속 → Dashboards → OpenRemit — Service Overview

### Summary

OpenRemit 전체 모듈(`remittance-api`, `payout-worker`, `webhook-dispatcher`, `reconciler`)에 Prometheus 메트릭 노출을 통일하고, `docker-compose`에 Prometheus/Grafana를 추가했습니다.
또한 `common` 모듈에 공통 `logback-spring.xml`을 추가해 `local` 프로필은 텍스트 로그, 그 외 프로필은 JSON 로그로 표준화했습니다.

---

### Changes

#### 1) docker-compose: Prometheus + Grafana 추가

- `docker-compose.yml`
  - `prometheus` 서비스 추가 (`9090`)
  - `grafana` 서비스 추가 (`3000`)
  - `host.docker.internal:host-gateway` 설정으로 호스트 JVM scrape 지원
  - `prometheus-data`, `grafana-data` 볼륨 추가
- `docker/prometheus.yml` (신규)
  - `/actuator/prometheus` scrape 설정
  - 대상:
    - `host.docker.internal:8080` (`remittance-api`)
    - `host.docker.internal:8081` (`payout-worker`)
    - `host.docker.internal:8082` (`webhook-dispatcher`)
    - `host.docker.internal:8084` (`reconciler`)

#### 2) Grafana provisioning/대시보드 추가

- `docker/grafana/provisioning/datasources/prometheus.yml` (신규)
  - datasource `Prometheus` (`uid: prometheus`) 자동 등록
- `docker/grafana/provisioning/dashboards/provider.yml` (신규)
  - `OpenRemit` 폴더 dashboard provider 등록
- `docker/grafana/dashboards/openremit.json` (신규)
  - `OpenRemit — Service Overview` 대시보드 추가
  - HTTP latency/throughput, JVM heap, Resilience4j 지표 패널 구성

#### 3) 각 서비스 Prometheus 노출 설정 통일

- `remittance-api/src/main/resources/application.yaml`
- `payout-worker/src/main/resources/application.yaml`
- `webhook-dispatcher/src/main/resources/application.yaml`
- `reconciler/src/main/resources/application.yaml`
  - `management.endpoints.web.exposure.include`에 `prometheus` 추가
  - `management.prometheus.metrics.export.enabled=true`
  - `management.metrics.tags.application=${spring.application.name}` 추가

#### 4) 의존성 추가 (메트릭/JSON 로깅)

- `remittance-api/build.gradle.kts`
- `payout-worker/build.gradle.kts`
- `webhook-dispatcher/build.gradle.kts`
- `reconciler/build.gradle.kts`
  - `io.micrometer:micrometer-registry-prometheus` 추가
  - `net.logstash.logback:logstash-logback-encoder:8.0` 추가
  - `reconciler`는 scrape endpoint 노출 위해 `spring-boot-starter-webmvc` 추가

#### 5) 공통 로그 포맷 추가

- `common/src/main/resources/logback-spring.xml` (신규)
  - `local` 프로필: 콘솔 텍스트 로그
  - `!local` 프로필: Logstash JSON 한 줄 로그
  - `app` custom field 및 `traceId/spanId` MDC 포함

#### 6) 문서 업데이트

- `README.md`
  - mock-webhook/prometheus/grafana 서비스 설명 추가
  - 메트릭 확인 방법 및 포트/라벨 표 추가
  - 로그 프로필 동작(local vs default) 설명 추가

---

### Checklist

- [x] Prometheus/Grafana docker-compose 구성 추가
- [x] Grafana datasource/dashboard provisioning 추가
- [x] 4개 서비스 `/actuator/prometheus` 노출 설정 통일
- [x] Prometheus registry 및 JSON 로깅 의존성 추가
- [x] 공통 `logback-spring.xml` 추가
- [x] README 관측성 가이드 반영

---

### How to Test

```bash
# 1) 인프라 기동
docker compose up -d

# 2) 각 서비스 실행 (예시)
./gradlew :remittance-api:bootRun
./gradlew :payout-worker:bootRun
./gradlew :webhook-dispatcher:bootRun
./gradlew :reconciler:bootRun

# 3) 메트릭 확인
curl -s http://localhost:8080/actuator/prometheus | head
curl -s http://localhost:9090/api/v1/targets

# 4) Grafana 확인
# http://localhost:3000 접속 → Dashboards → OpenRemit — Service Overview
@NewEgoDoc
NewEgoDoc merged commit 069998d into main May 8, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant