본문 바로가기
카테고리 없음

트러블 슈팅 - 서버 로그 분석 가이드

by 서버의달인 2025. 6. 12.

 

웹사이트나 애플리케이션 운영 중 오류가 발생했을 때, 로그를 가장 먼저 확인해야 합니다. 로그는 서버 내부 모든 이벤트를 기록한 곳으로, 오류의 원인을 파악하고, 보안 이슈를 추적할 수 있으며, 성능 문제를 분석하는 등 다양한 문제 해결에 기반이 됩니다. 이 글에서는 서버 운영자가 알아야 할 로그 분석 방법을 단계별로 설명해보겠습니다.

 

1. 서버 로그란 무엇인가요?

서버 로그는 서버에서 발생한 이벤트, 요청, 에러, 시스템 활동 등을 시간 순으로 기록한 파일입니다. 로그는 운영체제, 웹서버, 데이터베이스, 애플리케이션 등 다양한 영역에서 생성되며, 이 데이터를 분석하면 문제가 발생한 위치와 원인을 빠르게 파악할 수 있습니다.

주요 로그 파일 위치 (Ubuntu 기준)

  • /var/log/syslog – 시스템 전반 로그
  • /var/log/auth.log – 로그인/보안 관련 기록
  • /var/log/nginx/error.log – Nginx 에러 로그
  • /var/log/apache2/error.log – Apache 에러 로그
  • /var/log/mysql/error.log – MySQL 에러 로그

로그 파일은 일반적으로 텍스트 형식으로 저장되며, cat, less, grep 등의 명령어를 통해 분석할 수 있습니다.

2. 서버 문제 분석을 위한 기본 명령어

서버 로그를 효율적으로 분석하기 위해서는 몇 가지 기본 리눅스 명령어를 알아두는 것이 중요합니다.

  • tail -f : 실시간 로그 모니터링
  • grep "에러" : 특정 키워드 필터링
  • less /var/log/syslog : 스크롤 가능한 로그 확인
  • journalctl : systemd 기반 로그 확인
  • awk, sed : 로그 내용 가공/분석

예시: Nginx 오류 확인

tail -n 100 /var/log/nginx/error.log
grep "404" /var/log/nginx/access.log
  

위 명령어는 최근 100줄의 에러 로그를 확인한다는 뜻입니다. 더 많은 로그가 필요한 경우 숫자를 늘려서 확인하시면 됩니다. 아래 명령어로는 404 오류가 발생한 요청을 필터링하는 데 사용합니다.

 

3. 웹서버 로그 분석 (Apache & Nginx)

웹서버에서 가장 자주 발생하는 문제는 페이지 오류(404), 서버 오류(500), 과도한 요청(DDOS) 등입니다. 이를 분석하기 위해서는 Access 로그Error 로그를 함께 확인해야 합니다.

Nginx 로그 분석 예시

# 에러 로그 확인
less /var/log/nginx/error.log

# 특정 시간대 오류 검색
grep "2025/05/26" /var/log/nginx/error.log
  

Apache 로그 분석 예시

# 500 오류 탐색
grep "500" /var/log/apache2/access.log

# 요청이 많은 IP 상위 10개 출력
awk '{print $1}' /var/log/apache2/access.log | sort | uniq -c | sort -nr | head
  

이 분석을 통해 특정 IP에서 비정상적인 요청이 많은 경우, 보안 조치(IP 차단 등)를 검토해야 합니다.

 

4. 시스템 로그를 통한 서버 상태 진단

웹서버 외에도 시스템 자체에 문제가 발생할 수 있습니다. 디스크 용량 부족, 메모리 오류, 재부팅 기록 등은 시스템 로그에서 확인할 수 있습니다.

디스크 공간 문제 탐지

df -h
tail /var/log/syslog | grep "disk"
  

메모리/프로세스 이슈 확인

dmesg | grep -i "oom"
journalctl -k | grep "memory"
  

로그인 시도 추적 (보안 로그)

grep "Failed password" /var/log/auth.log
grep "Accepted password" /var/log/auth.log
  

이 정보는 무차별 로그인 시도나 비정상적인 SSH 접근을 탐지하는 데 사용하며, 필수적으로 모니터링해야 하는 요소입니다.

 

5. 로그 분석 자동화 및 시각화 툴 활용

로그가 많아질수록 수동 분석이 불가하며, 특히 서버 대수가 많은 경우에는 더더욱 일일이 서버별로 로그 확인이 어렵습니다. 이 때 로그분석 툴을 많이 사용합니다.

대표적인 로그 분석 도구

  • GoAccess: 실시간 웹 로그 분석 CLI 도구
  • ELK Stack (Elasticsearch + Logstash + Kibana): 강력한 시각화 및 검색 기능 제공
  • Graylog: 대규모 로그 수집 및 분석에 적합
  • Grafana + Loki: 경량화된 로그 시각화 대시보드

GoAccess 설치 예시 (Ubuntu)

sudo apt install goaccess
goaccess /var/log/nginx/access.log -o report.html --log-format=COMBINED
  

위 명령을 통해 웹 브라우저로 확인 가능한 HTML 리포트를 생성할 수 있습니다.

 

Kibana를 이용한 로그 시각화

ELK 스택을 구성하면 로그를 실시간으로 검색하고 시각화할 수 있으며, 필터, 알림, 대시보드 기능을 함께 제공하여 대규모 서버 운영에 적합합니다.

 

 

 

서버에 이슈 발생 시 가장 먼저 확인해야할 것 중 하나는 바로 로그를 확인하고 분석하는 것입니다. 단순한 오류뿐만 아니라, 보안 위협, 트래픽 과부하, 성능 병목 등도 로그 분석을 통해 사전에 감지하고 대응할 수 있습니다. 운영 초기에는 수동 분석부터 시작하되, 서비스 규모가 커질수록 로그 수집 → 자동화 → 시각화 → 알림 체계로 확장해나가는 것이 중요합니다.

 

앞서 알려드린 명령어를 활용하여 tailgrep 을 덧붙여 로그를 분석을 해보시는 것을 권장합니다.