Skip to content

feat: runtime-log-archive/#268 - #269

Merged
hjbin-25 merged 5 commits into
mainfrom
feat/runtime-log-archive/#268
Sep 23, 2026
Merged

hjbin-25 merged 5 commits into
mainfrom
feat/runtime-log-archive/#268

Conversation

@hjbin-25

@hjbin-25 hjbin-25 commented Sep 23, 2026 •

Copy link
Copy Markdown
Member

변경 내용

innolive-server의 전체 런타임 로그를 매일과 배포 재시작 직전에 서버의 보관 디스크로 날짜별 파일로 옮긴다. journald는 용량 상한에서 오래된 로그부터 지우므로, 장애 조사용 원본을 따로 남긴다.

  • deploy/log-archive.sh: journald → /srv/innolive-logs/innolive-server-YYYY-MM-DD.log.zst (하루 한 파일, root:adm 640)
    • 없는 날은 채우고 어제·오늘은 다시 쓴다(멱등). 첫 실행은 journald의 가장 오래된 날부터.
    • 스트림 키·토큰·비밀번호 마스킹. 사용자 IP(ICE 후보)는 장애 조사용으로 유지.
    • 보관 경로가 마운트 지점이 아니면 쓰지 않는다(루트 디스크에 잘못 쌓이는 사고 방지).
  • deploy/innolive-log-archive.{service,timer}: 매일 00:10, Persistent=true, 최저 CPU·IO 우선순위.
  • deploy/apply-release.sh: 세션 게이트·이미지 pull 뒤, 태그 교체·재시작 직전에 보관 실행. 실패해도 배포는 진행(원본은 journald에 남음), 출력은 상세 로그에만 — stdout 출력 계약 유지.
  • deploy/README.md: 보관 디스크 준비(미사용 sda에 파티션 생성), 설치, 확인·열람 절차.

확인 방법

  • 프로덕션 서버에서 hkit으로 스크립트 실행(보관 경로를 tmpfs /dev/shm로 지정):
    • 2026-08-05 ~ 09-23, 50개 날짜 파일, 합계 576KB
    • 같은 마스킹을 적용한 journald 원본과 diff 0줄(28,115줄 일치)
    • 비밀값 패턴 잔존 0, 일반 단어 과다 마스킹 0
    • 재실행 시 2개 파일(어제·오늘)만 갱신, 마운트 지점이 아닌 경로는 거부(exit 1, 파일 0)
    • 테스트 파일은 삭제함
  • apply-release.sh 추가 줄을 set -euo pipefail에서 단독 실행: 스크립트가 없어도 stdout 출력 없음, 실패는 상세 로그에만 기록되고 다음 단계 진행
  • bash -n 전 스크립트 통과
  • systemd-analyze verify(서버): 유닛 문법 오류 없음(미설치 스크립트 경로 경고만), 타이머 다음 실행 2026-09-24 00:10 KST
  • 머지 전 리뷰로 README 설치 절차 보강: 서버 업로드 단계 추가, fstab 수정 뒤 daemon-reload, 사전 보관본 복사를 첫 실행 앞으로 이동

⚠️ 머지만으로 반영되지 않음 (서버 수동 작업, root)

deploy/는 서버에 자동 동기화되지 않는다. 머지 후 deploy/README.md의 순서대로:

  1. 보관 디스크 준비 — 파티션 생성·포맷은 되돌릴 수 없으므로 확인 명령(sgdisk -p, wipefs -n)으로 빈 디스크인지 먼저 본다
  2. 스크립트·유닛 설치, timer 활성화, 첫 실행
  3. 서버의 apply-release.sh는 현재 레포와 md5 일치(drift 없음) 확인함 — 그대로 교체 가능

Closes #268

🤖 Generated with Claude Code

hjbin-25 and others added 5 commits September 23, 2026 10:18
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@hjbin-25
hjbin-25 marked this pull request as ready for review September 23, 2026 01:38
@hjbin-25
hjbin-25 requested a review from a team as a code owner September 23, 2026 01:38
@hjbin-25
hjbin-25 merged commit 657eeeb into main Sep 23, 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.

feat: 서버 런타임 로그를 매일·배포 전 파일로 보관한다

1 participant