서버에 문제가 생기면 가장 먼저 봐야 할 것이 로그입니다. 로그에는 무슨 일이 언제 일어났는지 기록되어 있어, 문제의 원인을 찾는 가장 확실한 단서가 됩니다. 하지만 처음에는 어디를 봐야 할지조차 막막합니다. 이 글에서 로그의 위치와 읽는 법을 정리했습니다.
1. 로그가 모이는 곳
리눅스의 대부분 로그는 /var/log 디렉터리에 모입니다. 먼저 어떤 로그 파일들이 있는지 확인해 봅니다.
ls -al /var/log
2. 주요 로그 파일
| 파일 | 내용 |
|---|---|
| /var/log/syslog | 시스템 전반의 동작 기록 |
| /var/log/auth.log | 로그인·인증·SSH 접속 기록 |
| /var/log/nginx/access.log | 웹 서버 접속 기록 |
| /var/log/nginx/error.log | 웹 서버 오류 기록 |
문제 유형에 맞는 로그를 골라 보는 것이 첫걸음입니다.
3. 로그 읽는 기본 명령어
파일 끝부분 보기 (가장 최근 기록이 중요할 때)
tail -n 50 /var/log/syslog
실시간으로 흐르는 로그 지켜보기
tail -f /var/log/nginx/access.log
-f 옵션을 쓰면 새 로그가 쌓일 때마다 화면에 바로 표시됩니다. 문제를 재현하면서 지켜볼 때 매우 유용합니다.
4. 특정 키워드만 찾기
방대한 로그에서 원하는 내용만 걸러내려면 grep을 함께 씁니다.
grep "error" /var/log/nginx/error.log
대소문자를 무시하려면 -i, 앞뒤 몇 줄을 함께 보려면 -C 3을 붙입니다.
grep -i "failed" /var/log/auth.log
5. journalctl로 보는 systemd 로그
요즘 우분투는 systemd가 로그를 관리합니다. journalctl로 서비스별 로그를 깔끔하게 볼 수 있습니다.
journalctl -u nginx
최근 것부터, 실시간으로 보려면:
journalctl -u nginx -f
특정 시간대만 보려면:
journalctl --since "1 hour ago"
6. 로그를 읽는 요령
로그를 볼 때는 **시간(timestamp)**과 오류 메시지의 첫 줄에 주목하세요. 보통 진짜 원인은 에러가 줄줄이 쏟아지기 직전, 가장 처음 등장한 메시지에 있습니다. 또한 문제가 발생한 정확한 시각을 알면, 그 시각 주변의 로그만 집중해서 볼 수 있어 훨씬 빠릅니다.
마무리
로그 읽기의 핵심은 올바른 파일을 골라, tail과 grep으로 필요한 부분만 좁혀 보는 것입니다. 처음엔 어렵게 느껴져도, 문제를 한두 번 직접 추적해 보면 로그가 가장 든든한 친구라는 걸 알게 됩니다. 평소에 tail -f로 로그가 흐르는 모습을 익혀두면 큰 도움이 됩니다.