웹사이트나 애플리케이션 운영 중 오류가 발생했을 때, 로그를 가장 먼저 확인해야 합니다. 로그는 서버 내부 모든 이벤트를 기록한 곳으로, 오류의 원인을 파악하고, 보안 이슈를 추적할 수 있으며, 성능 문제를 분석하는 등 다양한 문제 해결에 기반이 됩니다. 이 글에서는 서버 운영자가 알아야 할 로그 분석 방법을 단계별로 설명해보겠습니다.
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 스택을 구성하면 로그를 실시간으로 검색하고 시각화할 수 있으며, 필터, 알림, 대시보드 기능을 함께 제공하여 대규모 서버 운영에 적합합니다.
서버에 이슈 발생 시 가장 먼저 확인해야할 것 중 하나는 바로 로그를 확인하고 분석하는 것입니다. 단순한 오류뿐만 아니라, 보안 위협, 트래픽 과부하, 성능 병목 등도 로그 분석을 통해 사전에 감지하고 대응할 수 있습니다. 운영 초기에는 수동 분석부터 시작하되, 서비스 규모가 커질수록 로그 수집 → 자동화 → 시각화 → 알림 체계로 확장해나가는 것이 중요합니다.
앞서 알려드린 명령어를 활용하여 tail
과 grep
을 덧붙여 로그를 분석을 해보시는 것을 권장합니다.