Repository navigation
[feat] Loki·Alloy 로그 파이프라인 및 Grafana logs↔Trace 연결 (4/4) - #264
Conversation
|
Important Review skippedAuto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Advanced Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
48aa10a to
5301df5
Compare
5301df5 to
2ef5d04
Compare
geonusp
left a comment
There was a problem hiding this comment.
pr 리뷰 결과 지금 규모에서 운영 상에 큰 문제가 생길만한 부분은 없어 보이므로 Approve하겠습니다. 밑에 코멘트에 답만 달아주시면 머지하겠습니다.
🔗 이슈 링크
🧩 이 PR의 변경사항
현재 관측 구성에는 Loki와 앱 측 로그 수집기가 없어 Grafana에서 backend 로그를 조회하거나 해당 Trace로 이동할 수 없다. 앱 서버의 Docker 로그를 Alloy로 수집해 관측 서버의 Loki에 저장하고, Grafana에서 로그와 Trace를 양방향으로 조회하도록 구성한다.
전체 중 위치
이 PR에서 변경한 것
beach.logs=backend인 로그만 수집한다. Docker 소켓은 사용하지 않는다.app,env,service,host만 유지한다.✅ 이 PR이 커버하는 AC
Covers — 코드 및 로컬 검증
Not covered — 서버 적용 후 #233에서 확인
합성 데이터와 로컬 Docker 볼륨으로 검증했으며, #233의 서버 AC 전체가 완료된 것은 아니다. SLI/SLO·알림·대시보드·S3 원격 상태 저장소·24시간 운영 검증은 상위 이슈에서 분리한 후속 범위다.
🧪 테스트 결과
로컬
build/reports/observability/log-pipeline.json— CI artifact에도 보관CI
2ef5d045: Observability IaC Validation, Backend Build & Test (Unit + Integration) 모두 통과Smoke 테스트
🧭 영향 범위 체크
기존
user_data_replace_on_change = true때문에 실제 apply 시 관측 EC2가 교체될 수 있다. 적용 전에 실제 state 기준 plan과 EBS 보존 여부를 확인해야 한다. 앱 로그 속성은 컨테이너 재생성 시 적용되며, 지속 배포에 사용하는 Compose에도 유지해야 한다.💬 리뷰 포인트
app-agent/alloy/config.alloy: 회전 파일 읽기 순서, 파일 지문, 컨테이너·출력 스트림별 재조립, 라벨 제한scripts/verify-log-pipeline.py: 실제 Docker 회전·분할 기록을 사용한 회귀 테스트와 전송 카운터 검증compose/loki/local-config.yaml, Grafana provisioning, Terraform/cloud-init: 저장 경로·보존 기간·SG·로그와 Trace 연결Alloy v1.19.2의 filelog receiver와 file storage는 공개 미리보기 기능이다. 버전을 고정하고 실행·검증에 해당 옵션을 명시했다. 이 버전의 정렬 옵션 매핑 문제 때문에 내부
file_input연산자에 정렬을 직접 설정한다. 배경과 제거 조건은 README와 설정 주석에 기록했다.재조립 중인 조각은 메모리에만 있다. 첫 조각을 읽은 뒤 5초 안에 한 줄이 완성되지 않거나 재조립 도중 수집기가 종료되면 원문 보존을 보장하지 않는다. 읽기 위치 저장과 Loki 전송 완료도 원자적으로 묶이지 않으므로 무손실·exactly-once 전송을 보장하지 않는다. 로그 한 줄은 256KiB 이내로 유지하고 Docker는 압축 없이 최대 5개 파일을 보존한다.