Linux 환경에서 로그 파일을 작성하고 분석하는 것은 시스템 모니터링 및 디버깅에 매우 중요합니다. 이번 포스팅에서는 Bash 스크립트를 사용하여 로그 파일을 생성하고 이를 분석하는 방법을 알아보겠습니다.
1. 로그 파일 작성하기
로그 파일은 시스템에서 발생하는 이벤트를 기록한 파일로, Bash 스크립트로 손쉽게 생성할 수 있습니다. 다음은 로그 파일에 정보를 기록하는 간단한 예제입니다.
기본 로그 작성 스크립트
#!/bin/bash
# 로그 파일 경로 설정
LOG_FILE="/var/log/my_script.log"
# 로그 작성 함수
echo_log() {
local message="$1"
local timestamp=$(date "+%Y-%m-%d %H:%M:%S")
echo "$timestamp - $message" >> "$LOG_FILE"
}
# 로그 파일 초기화
echo "Initializing log file: $LOG_FILE" > "$LOG_FILE"
# 샘플 로그 기록
echo_log "Script started."
sleep 1
echo_log "Processing data."
sleep 1
echo_log "Script completed."
# 로그 파일 출력
echo "Log file content:"
cat "$LOG_FILE"
위 스크립트를 실행하면 /var/log/my_script.log
파일에 로그가 기록됩니다. date
명령어를 사용해 타임스탬프를 추가하고, >>
를 사용해 로그를 파일에 추가합니다.
2. 로그 파일 분석하기
로그 파일을 분석하면 문제 해결과 성능 최적화에 필요한 정보를 얻을 수 있습니다. 다음은 몇 가지 로그 분석 스크립트 예제입니다.
특정 문자열 검색
#!/bin/bash
# 로그 파일 경로 설정
LOG_FILE="/var/log/my_script.log"
# 검색할 문자열 설정
SEARCH_TERM="Processing"
# 특정 문자열 검색
echo "Lines containing '$SEARCH_TERM':"
grep "$SEARCH_TERM" "$LOG_FILE"
grep
명령어를 사용해 특정 문자열이 포함된 로그 라인을 쉽게 검색할 수 있습니다.
시간대별 로그 분석
#!/bin/bash
# 로그 파일 경로 설정
LOG_FILE="/var/log/my_script.log"
# 시간대별 로그 수 계산
echo "Log entries per hour:"
awk '{print substr($2, 1, 2)}' "$LOG_FILE" | sort | uniq -c
awk
를 사용해 타임스탬프의 시간 부분만 추출하고, uniq -c
로 각 시간대의 로그 수를 계산합니다.
에러 로그 필터링
#!/bin/bash
# 로그 파일 경로 설정
LOG_FILE="/var/log/my_script.log"
# 에러 패턴 설정
ERROR_PATTERN="ERROR"
# 에러 로그 필터링
echo "Error log entries:"
grep "$ERROR_PATTERN" "$LOG_FILE"
grep
명령어를 사용해 에러 메시지를 포함한 로그를 필터링합니다. 에러 패턴은 필요에 따라 변경할 수 있습니다.
3. 자동화된 로그 관리
로그 파일은 시간이 지나면 크기가 커질 수 있으므로, 주기적으로 관리해야 합니다.
로그 파일 압축 및 백업
#!/bin/bash
# 로그 파일 경로 설정
LOG_FILE="/var/log/my_script.log"
BACKUP_DIR="/var/log/backup"
# 백업 디렉토리 생성
mkdir -p "$BACKUP_DIR"
# 로그 파일 압축 및 이동
TIMESTAMP=$(date "+%Y%m%d_%H%M%S")
BACKUP_FILE="$BACKUP_DIR/my_script_$TIMESTAMP.log.gz"
gzip -c "$LOG_FILE" > "$BACKUP_FILE"
# 로그 파일 초기화
> "$LOG_FILE"
echo "Log file backed up to $BACKUP_FILE and original log cleared."
gzip
명령어를 사용해 로그 파일을 압축하고, 백업 디렉토리로 이동한 후 원본 로그 파일을 초기화합니다.
오래된 로그 삭제
#!/bin/bash
# 백업 디렉토리 경로 설정
BACKUP_DIR="/var/log/backup"
# 보관 기간 설정 (7일)
RETENTION_DAYS=7
# 오래된 로그 파일 삭제
find "$BACKUP_DIR" -type f -mtime +$RETENTION_DAYS -exec rm -f {} \;
echo "Old backup logs older than $RETENTION_DAYS days have been removed."
find
명령어를 사용해 설정된 보관 기간을 초과한 파일을 자동으로 삭제합니다.
4. 결론
Bash 스크립트를 사용해 로그 파일을 작성하고 분석하는 방법을 알아보았습니다. 이러한 기술은 시스템 관리, 디버깅, 성능 최적화에 유용합니다. 위의 예제들을 활용해 효율적인 로그 관리 및 분석을 시작해 보세요.
'Linux Bash shell script' 카테고리의 다른 글
awk와 sed를 활용한 데이터 처리 (0) | 2025.02.06 |
---|---|
Bash Shell Script - 정규표현식과 grep (0) | 2025.02.05 |
Bash 디버깅 옵션: `set -x`와 `set -e` 사용법 (0) | 2025.02.03 |
Bash Shell Script 파이프라인(Pipeline)을 활용한 명령어 조합 (0) | 2025.02.02 |
Bash Shell Script 파일 입출력 (cat, tee, >) (0) | 2025.02.01 |