문제 원인: 서버에서 용량이 가득차서 깃랩이 작동하지 않았습니다.
해결 방법: sh 파일을 작성 및 수정하여 1시간 마다 자동으로 Cron이 동작하여 Gitlab 컨테이너에 있는 로그 용량을 지우도록 함으로 해결하였습니다.
clear-docker-log.sh : Gitlab Docker 컨테이너의 로그 파일을 지우는 스크립트
clear-docker-log.sh 파일 정보는 다음과 같습니다.
#!/bin/bash
# Docker 컨테이너의 로그 파일을 비우는 스크립트
# gitlab 이미지가 포함된 모든 컨테이너의 ID를 가져오기
CONTAINER_IDS=$(docker ps --format '{{.ID}} {{.Image}}' | grep -i 'gitlab' | cut -d ' ' -f 1)
# 컨테이너가 없으면 종료
if [ -z "$CONTAINER_IDS" ]; then
echo "No running GitLab containers found."
exit 1
fi
# 각 컨테이너에 대해 로그 파일 비우기
for CONTAINER_ID in $CONTAINER_IDS; do
CONTAINER_FOLDER="/var/lib/docker/containers/"
# 해당 컨테이너 ID를 포함한 폴더를 찾기
CONTAINER_FOLDER_ID=$(ls "$CONTAINER_FOLDER" | grep -i "$CONTAINER_ID")
# 해당 폴더가 존재하는지 확인
if [ -n "$CONTAINER_FOLDER_ID" ]; then
# 컨테이너 폴더 경로 설정
CONTAINER_PATH="$CONTAINER_FOLDER$CONTAINER_FOLDER_ID"
LOG_FILE="$CONTAINER_PATH/$CONTAINER_FOLDER_ID-json.log"
# 로그 파일 크기 확인
if [ -f "$LOG_FILE" ]; then
LOG_SIZE=$(du -sh "$LOG_FILE" | cut -f1)
echo "Current log file size for container $CONTAINER_FOLDER_ID: $LOG_SIZE"
# 로그 파일 비우기
truncate -s 0 "$LOG_FILE"
echo "Log file for container $CONTAINER_FOLDER_ID has been cleared."
else
echo "Log file not found for container $CONTAINER_FOLDER_ID"
fi
else
echo "No folder found for container $CONTAINER_ID"
fi
done
Cron이 무엇을 동작 시키는지 확인 방법: crontab -e 명령어
crontab -e 명령어를 통해 매시 0분마다 실행하며 sh 파일을 동작시키게 하였습니다.
0 * * * * /home/cron/clear-docker-log.sh >> /home/cron/cron.log 2>&1
'DevOps > ubuntu' 카테고리의 다른 글
[Ubuntu] time zone 세팅(asia/seoul) (0) | 2024.10.25 |
---|---|
[Ubuntu] server 22.04.5 설치시 네트워크 세팅 문제 (1) | 2024.10.11 |
[ubuntu] 명령어: 현재 위치에서 파일 개수 찾기 (0) | 2023.06.15 |
[Ubuntu] 글자크기 변경(font-size change) CUI, Ubuntu Server (0) | 2023.01.19 |
[Ubuntu] 사용자에게 sudo 권한부여 (0) | 2023.01.19 |
댓글