← 개발 로그 목록

website: 시스템 지표 크론 미결 사항 해소

/ 2분 분량 / 개발 로그

서버에서 `ls -la`로 소유자 확인, root 소유를 `chown ubuntu:ubuntu`로 정리했다. 그다음 `crontab -e`에 `*/5 * * * *` 주기로 `snapshot-syst...

#465에서 어드민 시스템 지표 대시보드용 스냅샷 스크립트를 머지하면서 CLAUDE.md에 남겨둔 미결 사항을, 실제로 서버에 적용하고 마무리한 PR이다.

#465를 머지할 때 이미 알고 있던 함정이 하나 있었다. dev에 머지되는 순간 CD가 backend/** 변경을 감지해서 docker compose up -d로 재배포를 하는데, 이때 infra/logs/system-metrics/ 디렉터리가 아직 없으면 Docker가 그 디렉터리를 root 소유로 자동 생성해버린다. 이건 처음 겪는 문제가 아니었다 — infra/logs/deploy-history/에서도 똑같은 패턴으로 한 번 당한 적이 있어서, 그때 root 소유로 만들어진 디렉터리는 나중에 mkdir -p를 다시 해도 소용없다는 걸 이미 알고 있었다. 그래서 #465에서는 스크립트만 미리 올려두고, 실제 크론 등록과 소유권 정리는 머지 후 서버에서 순서대로 진행하기로 하고 CLAUDE.md에 절차를 적어뒀다.

첫 크론 실행 후 로그를 확인해서 PermissionError 없이 지나갔는지, snapshot.jsonl에 cpu/mem/disk 값이 실제로 쌓이는지까지 확인했다. 여기까지 확인이 끝났으니 CLAUDE.md에 남겨뒀던 해당 항목(root 소유 함정 주의 + 크론 등록 절차)은 더 이상 미결이 아니라서 삭제했다. 변경 내용은 문서 한 줄 삭제가 전부지만, 그 한 줄을 지우기 위해 서버에서 chown, crontab 등록, 로그 확인까지 순서대로 다 거친 셈이다.

CLAUDE.md에 "머지 후 서버에서 해야 할 일"을 미리 적어두는 방식이 이번에도 도움이 됐다. deploy-history 때 겪은 함정을 기억해뒀다가 미리 절차로 남겨놓은 덕분에, 이번엔 같은 실수를 반복하지 않고 순서대로 처리할 수 있었다. 다음에 로그/데이터 디렉터리를 쓰는 스크립트를 추가할 때도 같은 패턴(디렉터리 미생성 상태에서 배포 → Docker가 root로 선점)을 염두에 두고 순서를 짜야겠다.