소개

문제점

글 작성자가 업로드 한 이미지

EB(Elastic Beanstalk) 이벤트 로그나 eb 명령을 통한 배포 요청에는 모두 배포됨으로 표시되고, 실제로 서버 동작에 이상이 없으나 새로운 버전 배포 시 해당 버전이 반영되지 않는 문제가 있었다.

EB의 애플리케이션 버전 파일을 다운로드 받아 확인해도 문제가 없었기에, 해당 EC2 인스턴스로 직접 접속하여 확인했더니 실제로는 배포가 되지 않았던 것이다.

EB의 모든 로그는 /var/log에 모인다. 해당 디렉터리에서 우선 EB의 배포 및 관리를 담당하는 eb-engine.log 를 확인해보았더니…

2025/04/24 16:22:10.565661 [INFO] Download successfullbytes downloaded
2025/04/24 16:22:10.565692 [ERROR] failed to populate deployment meta data with error failed to generate App version manifest file with error write /opt/elasticbeanstalk/deployment/app_version manifest. json: no space left on device

엥? no space left on device? 바로 df -h 를 통해 디스크 사용량을 확인했다.

글 작성자가 업로드 한 이미지

10기가의 용량이 꽉 차있었다. 하지만 내가 배포한 것은 nest.js 기반 백엔드 서버라서, 앱 용량이 커봤자 2기가를 넘지 않는다.

해결

디렉터리 별 용량을 조회하는 법은 다음과 같다.

du -h --max-depth=1 (디렉터리) | sort -hr | head -n 10
글 작성자가 업로드 한 이미지

설마 했지만 역시나… 로그가 문제였다. /var/log로 가서 ls -l 을 통해 용량이 큰 파일을 확인하고 정리해줬다.

근본적인 해결

왜 이런 문제가 생기나, 그리고 eb가 왜 자동으로 관리를 안해주나에 대해 찾아보다 다음 serverfault 질문을 발견했다.

실제 앱 로그는 web.stdout.log 에서 쌓이는데, 이를 rsyslog 데몬이 /var/log/messages에 기록하는 역할을 한다고 한다.

/etc/rsyslog.d/web.conf 파일을 수정해서 stdout 로그 기록을 하지 않도록 설정할 수 있다고 한다.

if $programname == 'web' then {
*.=warning;*.=err;*.=crit;*.=alert;*.=emerg /var/log/web.stderr.log
*.=info;*.=notice /var/log/web.stdout.log
stop
}

나는 무슨 영향이 있을지 몰라서 일단은 급한 불만 끄고 두었다. eb에 어떤 영향을 줄지 모르니 완전히 끄는 것보단 로테이션을 설정 하는게 나을 것 같기도 하다.

태그
aws
반응과 댓글 시스템은 Giscus에 의해 호스팅되며, 모든 대화는 GitHub에 저장됩니다.

출처가 명확하지 않은 내용을 신뢰하지 마세요. 글 작성자는 이로 인해 발생하는 책임을 지지 않습니다.

피드백 무엇이든 환영합니다 🤗

doda.devlicensegithubmade with ☕️