로그 관리
로그가 필요한 이유
장애 발생 시 언제, 어떤 상태에서 문제가 생겼는지 추적하기 위해서다. 로그가 없으면 재현이 어렵고 원인 분석이 불가능하다.
로그 작성 기본
bash
TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S')
LOG_FILE=/var/log/agent-app/monitor.log
echo "[$TIMESTAMP] PID:$PID CPU:${CPU}% MEM:${MEM}% DISK_USED:${DISK}%" >> $LOG_FILE>> 는 기존 파일에 이어 쓴다. > 는 기존 내용을 덮어쓴다.
로그 용량 관리 (logrotate)
로그를 방치하면 디스크를 가득 채운다. logrotate로 자동 관리한다.
bash
# 설정 파일 생성
vi /etc/logrotate.d/agent-app
# 내용
/var/log/agent-app/monitor.log {
size 10M # 10MB 초과 시 rotate
rotate 10 # 최대 10개 파일 유지
compress # 이전 파일 gzip 압축
missingok # 파일 없어도 오류 없이 진행
notifempty # 파일이 비어 있으면 rotate 안 함
}스크립트 내 직접 구현 방식
bash
LOG_FILE=/var/log/agent-app/monitor.log
MAX_SIZE=$((10 * 1024 * 1024)) # 10MB
if [ -f "$LOG_FILE" ] && [ $(stat -c%s "$LOG_FILE") -ge $MAX_SIZE ]; then
mv "$LOG_FILE" "${LOG_FILE}.$(date '+%Y%m%d%H%M%S')"
fi출처: Codyssey-B1/B4-1