2024. 5. 13. 16:18ㆍ프로젝트/[EATceed] 몸무게 증량 어플
모니터링 서비스에 접속하니 "페이지가 작동하지 않고, 리다이렉션 횟수가 너무 많다 ~ " 이런 페이지가 나오며 접속이 되지 않고 있었습니다.
뭐가 문제지 이것저것 찾아보던 디스크의 용량을 확인하게 되었습니다.
디스크의 용량을 확인해보니..??
dh -h
디스크의 용량이 꽉 차있었습니다.
더 자세한 원인을 확인해보기 위해서 아래와 같이 디스크 용량을 많이 차지하는 순서대로 조회를 해보았습니다.
확인 해보니, docker container에서 디스크의 용량을 대부분 차지하고 있는 것으로 확인이 되었습니다.
참고 : docker 미사용 리소스 삭제하여 디스크 용량 줄이기
도커를 사용하며, 사용하지 않는 임시 파일이나 이미지 컨테이너 파일이 누적되면 용량이 커지는 문제가 발생한다.
이 때 아래 명령어를 사용하며 용량을 확보할 수 있다.
docker system prune -a -f
최근에, docker를 사용하여 프로메테우스와 그라파나 서버를 올렸습니다. 지금까지는 이런 일이 없었고, 모니터링 서비스를 올린 뒤에 이런 일이 발생하였기 때문에 원인은 모니터링 서비스와 관련이 있을 가능성이 높다고 생각을 하였습니다.
원인 - 1
원인은 로깅에 있었습니다.
모니터링을 하기 위해서는 프로메테우스에 스프링의 Actuator에서 만들어낸 Metric 데이터를 보내야합니다.
현재 LogginFilter에서는 프로메테우스와 스프링과 Metric을 주고 받는 요청로그를 제외시키지 않았고 그 결과 log.txt 파일이 무수히 많이 생겨 디스크의 용량이 가득 차 디스크 용량이 부족한 이슈가 발생하였습니다.
따라서, Metic 데이터를 주고 받는 경로를 로깅 설정에서 제외하였고 docker 프로세스들을 down 시키기고 디스크 이슈를 해결하려고 했습니다.
원인 - 2
하지만, 도커 데몬 재실행이 되지 않는 이슈가 있어서 docker 관련 명령어가 실행이 되지 않고 있었습니다.
아래 명령어를 사용하여 도커를 재실행하려고 했는 데, 실패하였습니다.
sudo systemctl start docker
원인을 살펴보니 docker.service를 실행하는 작업이 실패한 건데 너무 빠르게 재시작 되어서 실패가 계속 되고 있었습니다.
× docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Mon 2024-05-13 13:25:17 KST; 4s ago
TriggeredBy: × docker.socket
Docs: https://docs.docker.com
Process: 990 ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock (code=exited, status=1/FAILURE)
Main PID: 990 (code=exited, status=1/FAILURE)
CPU: 155ms
...
docker.service: Start request repeated too quickly.
...
따라서, docker.service의 설정을 Restart=always에서 Restart=no로 수정하고, 이후에 비 정상적으로 종료된 docker daemon을 kill해주고 docker daemon을 재실행해주어서 해결해주었습니다.
참고)
필자는 docker.service의 파일을 수정해주려고 했을 때, 디스크 용량이 부족해서 overwrite 자체도 되지 않았다.
따라서, Ec2 볼륨을 조금 늘려준 후에 docker.service의 설정을 Restart=no로 수정 후에 docker daemon 프로세스를 kill 해주고 다시 docker daemon 프로세스를 실행 시켜 주어 해결하였다.
배운 점
AWS EC2를 사용하면서 주로 메모리 최적화에 집중했었는데, 이번에 로깅 파일 저장 문제를 겪으면서 EC2의 디스크 관리의 중요성을 새삼 깨닫게 되었습니다. 그동안은 디스크 관리를 크게 신경 쓰지 않았지만, 로깅 파일이 EC2 인스턴스의 디스크에 저장되므로, 이 부분에 대한 관리가 필수적임을 이해하였습니다.
추후에 로깅 파일 관리 전략에 대해서도 공부를 해봐야겠습니다..
'프로젝트 > [EATceed] 몸무게 증량 어플' 카테고리의 다른 글
전략 패턴을 이용해서 요구사항 대응하기 (0) | 2024.06.01 |
---|---|
CI/CD 파이프라인 구축 (0) | 2024.05.26 |
@ColumnDefault에 대한 오해 (0) | 2024.05.07 |
Grafana와 Prometheus를 이용한 모니터링 (0) | 2024.05.04 |
개발용 인프라 구축 (2) | 2024.03.08 |