Linux 로그 분석 - journalctl, tail, grep



Linux 시스템에서 로그 파일을 분석하고 문제를 진단하는 방법입니다.



주요 명령어


tail -f /var/log/syslog    # 실시간 로그 모니터링
journalctl -xe # systemd 로그 확인
zgrep "error" *.gz # 압축 로그 검색


tail - 실시간 로그 모니터링


# 마지막 10줄 (기본)
tail /var/log/syslog

# 마지막 N줄
tail -n 50 /var/log/syslog

# 실시간 모니터링 (follow)
tail -f /var/log/syslog

# 여러 파일 동시 모니터링
tail -f /var/log/syslog /var/log/auth.log

# 특정 키워드 필터링하며 모니터링
tail -f /var/log/syslog | grep --line-buffered "error"

# 로그 로테이션 추적
tail -F /var/log/myapp.log


journalctl - systemd 로그


# 전체 로그
journalctl

# 오류와 설명 함께 보기
journalctl -xe

# 특정 서비스 로그
journalctl -u nginx
journalctl -u tomcat

# 실시간 추적
journalctl -f

# 오늘 로그만
journalctl --since today

# 특정 기간
journalctl --since "2024-01-01" --until "2024-01-02"
journalctl --since "1 hour ago"

# 부팅 이후 로그
journalctl -b

# 이전 부팅 로그
journalctl -b -1

# 우선순위별 (에러만)
journalctl -p err

# 커널 로그
journalctl -k

# JSON 형식 출력
journalctl -o json-pretty


grep - 로그 검색


# 기본 검색
grep "error" /var/log/syslog

# 대소문자 무시
grep -i "error" /var/log/syslog

# 줄 번호 표시
grep -n "error" /var/log/syslog

# 전후 컨텍스트
grep -B 3 -A 3 "error" /var/log/syslog

# 재귀 검색
grep -r "error" /var/log/

# 파일명만 출력
grep -l "error" /var/log/*.log

# 정규표현식
grep -E "error|fail|warn" /var/log/syslog

# 제외 검색
grep -v "DEBUG" /var/log/myapp.log


압축 로그 검색


# gzip 압축 파일 검색
zgrep "error" /var/log/syslog.*.gz

# 모든 압축 로그에서 검색
zcat /var/log/syslog.*.gz | grep "error"

# bzip2 압축 파일
bzgrep "error" file.bz2


주요 로그 파일 위치









/var/log/syslog시스템 로그 (Debian계열)
/var/log/messages시스템 로그 (RHEL계열)
/var/log/auth.log인증 로그
/var/log/kern.log커널 로그
/var/log/nginx/Nginx 로그
/var/log/httpd/Apache 로그


실전 활용


# 최근 에러 찾기
journalctl -p err --since "10 min ago"

# 특정 시간대 로그
awk "/^Jan 14 10:/ {print}" /var/log/syslog

# 로그 통계
grep -c "error" /var/log/syslog
cat /var/log/access.log | cut -d" " -f1 | sort | uniq -c | sort -rn | head

# SSH 접속 실패 확인
grep "Failed password" /var/log/auth.log