서버에 문제가 생겼다면 어디부터 볼까? 로그 확인과 활용법

서버에 문제가 생겼다면 어디부터 볼까? 로그 확인과 활용법

작성자

카테고리:

웹사이트를 운영하다 보면 갑자기 페이지가 열리지 않거나 서버 접속이 느려지는 문제가 발생할 수 있습니다.

이럴 때 무작정 서버를 재시작하거나 설정을 변경하기보다 먼저 확인하면 좋은 것이 서버 로그입니다.

로그에는 서버에서 발생한 여러 작업과 오류가 기록됩니다. 언제 문제가 발생했는지, 어떤 요청에서 오류가 나타났는지 확인하는 데 중요한 단서가 될 수 있습니다.

처음에는 복잡한 문자와 숫자가 가득해 어렵게 느껴지지만 자주 사용하는 로그의 위치와 기본 명령어만 알아두면 서버 문제를 파악하는 데 도움이 됩니다.

서버 로그란 무엇일까?

서버 로그는 서버에서 발생한 여러 작업을 일정한 형식으로 기록한 자료입니다.

사용자가 웹사이트에 접속한 기록부터 프로그램에서 발생한 오류, 로그인 시도, 시스템 동작 상태 등 다양한 정보가 남을 수 있습니다.

어떤 내용이 기록되는지는 운영체제와 설치된 프로그램, 서버 설정에 따라 달라집니다.

로그를 확인하면 문제가 발생한 시간과 원인을 추적할 때 필요한 정보를 얻을 수 있습니다.

로그 파일은 어디에 있을까?

리눅스 서버에서는 많은 로그가 /var/log 디렉터리에 저장됩니다.

다음 명령어로 해당 위치로 이동할 수 있습니다.

cd /var/log

파일 목록을 확인하려면 다음과 같이 입력합니다.

ls

다만 모든 서버에서 동일한 파일이 만들어지는 것은 아닙니다.

사용하는 리눅스 배포판이나 Apache, Nginx 같은 프로그램의 설치 및 설정 방법에 따라 로그 파일의 이름과 위치가 달라질 수 있습니다.

로그 파일을 간단하게 확인하는 방법

텍스트 형태의 로그 파일은 cat 명령어로 내용을 확인할 수 있습니다.

cat 파일명

하지만 로그 파일은 내용이 매우 길어질 수 있기 때문에 전체 내용을 한꺼번에 출력하면 원하는 정보를 찾기 어려울 수 있습니다.

이럴 때는 tail이나 less 같은 명령어를 활용하면 편리합니다.

최근 기록만 확인하는 tail

서버에서 방금 발생한 문제를 확인하고 싶다면 로그 파일의 마지막 부분부터 살펴보는 것이 효율적입니다.

이때 tail 명령어를 사용할 수 있습니다.

tail 파일명

마지막 부분의 기록을 더 많이 확인하려면 옵션을 추가할 수 있습니다.

tail -n 50 파일명

위 명령어는 파일의 마지막 50줄을 보여줍니다.

실시간으로 로그 확인하기

현재 서버에서 어떤 기록이 새롭게 추가되는지 계속 확인하고 싶다면 다음과 같이 사용할 수 있습니다.

tail -f 파일명

명령어를 실행해두면 새로운 로그가 기록될 때마다 화면에 표시됩니다.

웹사이트 오류를 재현하면서 동시에 로그를 살펴볼 때 유용합니다.

실시간 확인을 종료할 때는 일반적으로 Ctrl+C를 사용할 수 있습니다.

긴 로그는 less로 확인하기

내용이 긴 로그 파일을 한 번에 살펴볼 때는 less 명령어를 사용할 수 있습니다.

less 파일명

화면을 이동하면서 내용을 확인할 수 있어 큰 로그 파일을 살펴볼 때 편리합니다.

전체 파일을 화면에 한꺼번에 출력하는 것보다 필요한 부분을 찾기가 쉽습니다.

Apache 로그 확인하기

Apache 웹서버에서는 방문자의 요청을 기록하는 접근 로그와 서버 오류를 기록하는 오류 로그를 확인할 수 있습니다.

리눅스 배포판과 설정에 따라 로그 위치는 달라질 수 있습니다.

예를 들어 일부 환경에서는 다음과 같은 디렉터리가 사용됩니다.

/var/log/apache2/

이 안에서 access.log와 error.log 같은 파일을 볼 수 있습니다.

access.log에는 웹서버로 들어온 요청에 대한 정보가 기록되고 error.log에는 웹서버에서 발생한 오류와 관련된 정보가 기록될 수 있습니다.

Nginx 로그 확인하기

Nginx 역시 접근 로그와 오류 로그를 기록할 수 있습니다.

일반적인 환경에서는 다음과 같은 경로를 사용하는 경우가 있습니다.

/var/log/nginx/

대표적인 파일은 다음과 같습니다.

access.log
error.log

access.log를 통해 어떤 요청이 서버로 들어왔는지 확인할 수 있고 error.log에서는 웹서버 처리 과정에서 발생한 문제를 살펴볼 수 있습니다.

다만 실제 위치는 서버의 Nginx 설정에 따라 달라질 수 있습니다.

접근 로그에서는 무엇을 확인할까?

웹서버의 접근 로그에는 방문자의 요청과 관련된 여러 정보가 기록될 수 있습니다.

접속 시간, 요청한 주소, HTTP 상태 코드, 요청을 보낸 IP 주소 등의 정보를 확인할 수 있습니다.

예를 들어 특정 페이지에 요청이 지나치게 집중되고 있는지 살펴보거나 오류 응답이 반복적으로 발생하는지 확인할 때 활용할 수 있습니다.

오류 로그가 중요한 이유

웹사이트에 문제가 발생했다면 오류 로그를 확인하는 것이 중요합니다.

프로그램이나 웹서버가 정상적으로 처리하지 못한 작업에 대한 정보가 남을 수 있기 때문입니다.

웹페이지가 정상적으로 표시되지 않거나 서버 설정을 변경한 뒤 문제가 발생했다면 오류가 발생한 시간대의 로그부터 살펴볼 수 있습니다.

오류 메시지에 파일 경로나 프로그램 이름 등이 나타난다면 문제의 원인을 찾는 단서가 될 수 있습니다.

HTTP 상태 코드도 확인해보자

접근 로그에서는 HTTP 상태 코드를 볼 수 있는 경우가 많습니다.

200은 요청이 정상적으로 처리되었음을 의미합니다.

404는 요청한 페이지나 파일을 찾지 못했을 때 나타날 수 있습니다.

403은 접근이 허용되지 않은 경우에 나타날 수 있습니다.

500번대 상태 코드는 서버 측에서 요청을 처리하는 과정에 문제가 발생했을 가능성을 나타냅니다.

같은 상태 코드가 반복된다면 해당 요청과 관련된 서버 설정이나 프로그램을 확인해볼 필요가 있습니다.

원하는 내용만 검색하기

로그 파일이 크다면 모든 내용을 직접 읽는 것보다 특정 단어나 오류 코드만 검색하는 것이 효율적입니다.

grep 명령어를 이용할 수 있습니다.

grep “error” 파일명

특정 상태 코드를 찾고 싶다면 다음과 같은 방식으로 검색할 수도 있습니다.

grep “404” 파일명

다만 단순 문자열 검색이기 때문에 검색 결과가 모두 같은 원인의 오류라고 단정해서는 안 됩니다.

로그 파일이 너무 커지는 이유

서버를 오래 운영하면 로그가 계속 쌓이면서 파일 크기가 커질 수 있습니다.

방문자가 많은 웹사이트라면 접근 로그도 빠르게 증가할 수 있습니다.

로그 파일이 지나치게 커지면 저장 공간을 많이 차지할 수 있기 때문에 오래된 로그를 별도의 파일로 분리하거나 정리하는 로그 로테이션 기능이 사용됩니다.

리눅스에서는 logrotate 같은 도구를 이용해 로그 파일을 일정한 기준에 따라 관리하는 경우가 있습니다.

로그를 무조건 삭제하면 안 되는 이유

저장 공간이 부족하다고 해서 로그 파일을 바로 삭제하는 것은 주의해야 합니다.

로그에는 서버 장애나 보안 문제를 분석할 때 필요한 기록이 포함되어 있을 수 있습니다.

특히 문제가 발생한 직후에는 관련 로그가 원인을 찾는 중요한 자료가 됩니다.

먼저 어떤 로그인지 확인하고 필요한 기록을 보관한 뒤 서버 환경에 맞는 방법으로 관리하는 것이 좋습니다.

서버 보안 점검에도 활용할 수 있다

로그는 단순히 웹사이트 오류를 확인할 때만 사용하는 것이 아닙니다.

반복적인 로그인 실패나 특정 주소에 대한 비정상적으로 많은 요청 등 평소와 다른 움직임을 확인하는 데도 활용할 수 있습니다.

다만 로그 한 줄만 보고 공격이나 보안 사고라고 단정하기보다는 여러 기록과 서버 상태를 함께 확인하는 것이 중요합니다.

문제가 발생한 시간부터 확인하자

서버 로그를 처음 보면 너무 많은 내용 때문에 어디부터 확인해야 할지 막막할 수 있습니다.

가장 쉬운 방법은 문제가 발생한 시간을 먼저 확인하는 것입니다.

예를 들어 오후 3시부터 웹사이트가 열리지 않았다면 그 시간 전후의 오류 로그와 접근 로그를 살펴보는 방식입니다.

최근에 플러그인을 설치했거나 서버 설정을 변경했다면 변경 시점과 오류 발생 시간이 비슷한지도 확인해볼 수 있습니다.

로그는 서버 문제를 찾는 기록이다

서버에 문제가 생겼을 때 로그를 확인하지 않고 설정부터 변경하면 오히려 원인을 찾기 어려워질 수 있습니다.

먼저 문제가 발생한 시간을 확인하고 웹서버의 접근 로그와 오류 로그, 시스템 관련 기록을 살펴보는 것이 좋습니다.

처음부터 모든 로그 내용을 이해할 필요는 없습니다.

tail로 최근 기록을 확인하고 grep으로 필요한 오류를 검색하는 기본적인 방법부터 익히면 됩니다.

서버 운영 경험이 쌓이면 로그에 기록된 상태 코드와 오류 메시지를 통해 어떤 부분을 먼저 확인해야 하는지도 조금씩 파악할 수 있습니다.

로그는 서버에서 이미 발생한 일을 기록해둔 자료이기 때문에 장애 원인을 찾고 같은 문제가 반복되는 것을 줄이는 데 중요한 역할을 합니다.

코멘트

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다