서버 로그 읽는 법 – 오류가 났을 때 원인 찾는 방법

1. 로그는 서버의 블랙박스다

갑자기 서버에서 에러가 발생했을 때 “도대체 무슨 일이 일어난 건지” 알 수 없다면 매우 막막합니다. 코드도 수정하지 않았는데 갑자기 서비스가 500 에러를 뱉거나, 특정 사용자만 로그인이 안 된다거나, 밤 사이 서버가 재시작된 흔적이 있다면 어디서부터 확인해야 할까요?

이때 의지할 수 있는 것이 바로 로그(Log) 파일입니다. 로그는 서버와 서비스가 동작하면서 발생한 모든 이벤트를 시간 순서대로 기록한 파일입니다. 비행기 블랙박스처럼, 무슨 일이 있었는지 사후에 추적할 수 있게 해줍니다.

2. 리눅스 주요 로그 파일 위치

리눅스 시스템의 로그 파일은 대부분 /var/log 디렉토리 아래에 저장됩니다.

파일 경로기록 내용
/var/log/syslog시스템 전반적인 이벤트
/var/log/auth.log로그인 시도, SSH 접속 기록
/var/log/kern.log커널 관련 이벤트
/var/log/dpkg.log패키지 설치·제거 기록
/var/log/nginx/access.logNginx 접속 로그
/var/log/nginx/error.logNginx 오류 로그
/var/log/mysql/error.logMySQL 오류 로그

가장 먼저 확인해야 할 파일은 문제가 발생한 서비스의 error.log입니다. 시스템 전체 이벤트는 syslog에서, 보안 관련 이벤트는 auth.log에서 확인합니다.

3. Nginx 로그 파일 구조 이해하기

Nginx는 두 종류의 로그를 생성합니다.

access.log (접속 로그) 서버에 들어온 모든 HTTP 요청이 기록됩니다. 한 줄 예시를 보면 다음과 같습니다.

203.0.113.45 – – [03/Jun/2026:09:15:00 +0900] “GET /blog/post1 HTTP/1.1” 200 4523 “-” “Mozilla/5.0”

각 항목의 의미입니다. 203.0.113.45는 접속한 사용자의 IP 주소, [03/Jun/2026:09:15:00 +0900]은 접속 시간, GET /blog/post1은 요청 방식과 경로, 200은 HTTP 응답 코드(200은 정상), 4523은 전송된 바이트 수입니다.

error.log (오류 로그) 서버 처리 중 발생한 오류가 기록됩니다. 오류 수준은 debug, info, notice, warn, error, crit, alert, emerg 순으로 심각도가 높아집니다. 실제 문제가 되는 오류는 대부분 error 이상 수준에서 기록됩니다.

4. 로그에서 오류를 빠르게 찾는 방법

로그 파일은 내용이 많아 전체를 읽기 어렵습니다. 필요한 정보만 빠르게 찾는 방법을 알아봅니다.

최근 내용만 확인하기 방금 발생한 오류라면 로그 파일의 마지막 부분만 확인하면 됩니다.

tail -n 100 /var/log/nginx/error.log

키워드로 필터링하기 grep 명령어로 특정 키워드가 포함된 줄만 뽑아낼 수 있습니다.

grep “error” /var/log/nginx/error.log grep “404” /var/log/nginx/access.log

특정 날짜 기준으로 필터링하기 특정 날짜의 로그만 추출하고 싶다면 날짜 키워드를 사용합니다.

grep “03/Jun/2026” /var/log/nginx/access.log

여러 조건 조합하기 파이프(|)로 명령어를 연결하면 더 정밀한 검색이 가능합니다.

cat /var/log/nginx/error.log | grep “error” | tail -n 50

이 명령어는 error.log에서 “error” 키워드가 포함된 줄만 뽑아 마지막 50개를 보여줍니다.

5. 실시간 로그 모니터링 방법

서비스를 재시작하거나 특정 기능을 테스트하면서 그 순간의 로그를 바로 확인하고 싶을 때는 실시간 모니터링이 유용합니다.

tail -f 명령어는 파일에 새로운 내용이 추가될 때마다 실시간으로 화면에 출력합니다.

tail -f /var/log/nginx/error.log

이 명령어를 실행한 상태에서 브라우저에서 오류가 나는 페이지에 접속하면, 그 순간 발생하는 오류 로그가 바로 터미널에 출력됩니다. 원인 파악이 훨씬 빠릅니다. Ctrl + C로 모니터링을 종료합니다.

6. 로그가 너무 쌓일 때 – logrotate

서버를 오래 운영하면 로그 파일이 점점 커져 디스크 공간을 차지합니다. 이를 관리하기 위한 도구가 logrotate입니다.

logrotate는 Ubuntu에 기본 설치되어 있으며, 설정에 따라 로그 파일을 자동으로 압축하고 오래된 파일을 삭제해 줍니다.

Nginx 로그에 대한 logrotate 설정은 /etc/logrotate.d/nginx 파일에서 확인할 수 있습니다. 기본 설정으로도 주 단위로 로그를 압축하고 52주 분량을 보관하도록 되어 있습니다.

설정을 수정하고 싶다면 해당 파일에서 rotate 숫자로 보관 개수를, weekly 또는 daily로 교체 주기를 조정할 수 있습니다.

7. 정리 및 다음 단계

오늘 배운 핵심을 정리합니다.

  • 서버 로그는 모든 이벤트를 기록하는 블랙박스이며, /var/log 디렉토리에 저장됩니다.
  • 문제가 발생했을 때 가장 먼저 확인할 파일은 해당 서비스의 error.log입니다.
  • tail -n으로 최근 로그를, grep으로 키워드 필터링을 활용합니다.
  • tail -f로 실시간 로그를 모니터링하면 원인을 빠르게 찾을 수 있습니다.
  • logrotate로 오래된 로그를 자동 압축·삭제해 디스크 공간을 관리합니다.

다음 글에서는 서버를 재부팅하지 않고 서비스만 재시작하는 방법을 알아보겠습니다.

댓글 남기기

광고 차단 알림

광고 클릭 제한을 초과하여 광고가 차단되었습니다.

단시간에 반복적인 광고 클릭은 시스템에 의해 감지되며, IP가 수집되어 사이트 관리자가 확인 가능합니다.