리눅스 정보실

리눅스 에러 로그 확인과 문제 해결

고지존 2025. 9. 12. 18:03

리눅스 서버를 운영하다 보면 다양한 문제와 에러가 발생합니다. 웹 서버가 느려지거나 접속이 안 되고, 데이터베이스 연결 오류가 나타나기도 합니다. 이 글에서는 **실시간 로그 확인**, 단계별 분석, 판단 방법, 실제 예시까지 모두 포함해 누구나 따라할 수 있는 실무 가이드를 제공합니다.

1. 로그 파일 확인: 어디서 무엇을 볼까?

문제 해결의 첫 단계는 로그 파일을 아는 것입니다. 주요 로그 파일과 역할은 다음과 같습니다:

  • /var/log/syslog: 시스템 전반 메시지
  • /var/log/messages: 커널 및 일반 시스템 메시지
  • /var/log/auth.log: 인증 및 권한 문제
  • /var/log/nginx/error.log 또는 /var/log/httpd/error_log: 웹 서버 에러
  • /var/log/mysql/error.log: 데이터베이스 오류

**실무 확인 예시:**

ls /var/log
tail -n 20 /var/log/nginx/error.log

이 단계에서 확인할 점:

  • 문제가 발생한 서비스에 맞는 로그 파일 선택
  • 최근 기록과 에러 패턴 확인

예시:

[error] connect() failed (111: Connection refused) while connecting to upstream

2. 실시간 로그 확인: 문제 발생 순간 파악

문제가 발생했을 때 실시간으로 로그를 확인하면 원인을 바로 잡는 데 큰 도움이 됩니다.

**방법:**

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

**확인 포인트:**

  • 실시간 에러 메시지 발생 여부
  • 서비스 요청 시 발생하는 에러 패턴

예시:

2025-09-12 17:05:12 [error] upstream timed out (110: Connection timed out)

→ 웹 요청 시 백엔드 서버 연결이 지연됨

messages 실시간 로그

3. 에러 발생 시간 및 패턴 분석

문제가 특정 시간에 반복되는지, 지속적으로 나타나는지 확인하는 단계입니다.

grep "2025-09-12 17:" /var/log/nginx/error.log

**파악 정보:**

  • 문제 발생 시간
  • 반복 여부
  • 특정 요청 또는 이벤트와 연관 여부

판단 기준:

  • 특정 시간대만 발생 → 스케줄링 문제 가능
  • 지속적으로 발생 → 설정 오류 가능

4. 서비스 상태 점검

로그만으로 문제를 파악하기 어려운 경우 서비스 상태를 직접 확인합니다.

systemctl status nginx
systemctl status mysql

**파악 정보:**

  • 서비스가 실행 중인지 여부
  • 최근 재시작 기록
  • 실패 원인

판단 기준:

  • Active: running → 정상
  • Active: failed → 즉시 재시작 및 로그 확인 필요

예시:

Active: failed (Result: exit-code)

5. 문제 원인 분석

실제 로그와 서버 환경을 확인하며 문제 원인을 분석합니다.

  • 로그 메시지 분석
  • 설정 파일 확인: /etc/nginx/nginx.conf, /etc/my.cnf
  • 포트 및 연결 상태 확인: netstat -tulnp
  • 권한 문제 확인: ls -l, sudo 권한 체크

판단 기준:

  • Permission denied → 권한 문제
  • Connection refused → 포트 차단 또는 서비스 종료
  • upstream timed out → 백엔드 연결 지연
  • config error → 설정 파일 검토 필요

예시:

Permission denied while connecting to upstream

6. 문제 해결 후 모니터링

문제를 해결한 뒤에는 동일한 에러가 반복되지 않는지 모니터링해야 합니다.

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

확인 내용:

  • 동일 에러 반복 여부
  • 서비스 정상 동작 여부

판단:

  • 동일 에러 반복 → 원인 미해결, 다시 분석 필요
  • 에러 사라짐 → 문제 해결 완료

7. 정기 점검과 자동화

서버 안정성을 위해 반복되는 문제를 예방할 수 있습니다.

  • Cron을 사용해 정기적으로 로그 확인
  • 에러 발생 시 이메일 알림 설정
  • 서비스 재시작이 필요한 경우 스크립트로 자동화

예시 스크립트:

#!/bin/bash
if grep -i "error" /var/log/nginx/error.log | tail -n 20; then
    echo "에러 발생! 확인 필요" | mail -s "서버 로그 알림" admin@example.com
fi

8. 추가 팁: 실무에서 자주 만나는 에러 예시

  • 502 Bad Gateway → 백엔드 서버 연결 실패, 설정 오류
  • 403 Forbidden → 권한 문제, Nginx 설정 확인
  • MySQL 연결 실패 → 계정 권한, 포트 확인
  • systemd 서비스 비정상 종료 → 로그 확인 후 재시작 필요

리눅스 서버 운영에서 로그 확인은 문제 해결의 핵심입니다. 이 글을 따라하면 단계별로 로그를 확인하고 실시간 모니터링하며, 문제 원인을 분석하고 해결까지 수행할 수 있습니다. 실제 예시와 판단 기준을 포함했으므로 누구나 바로 적용할 수 있는 실무 가이드입니다.