Computer >> 컴퓨터 >  >> 시스템 >> Linux

Ubuntu 오류 로그 완벽 가이드: 로그 확인부터 모니터링까지 단계별 정리

Ubuntu 오류 로그 완벽 가이드: 로그 확인부터 모니터링까지 단계별 정리

게시일: 2023년 6월 11일 오후 2:45 EDT

필자 소개

하나(Hannah)는 CyberPatriot 대회에 참가하면서 Linux에 매력을 느끼게 되었습니다. 어린 시절부터 프로그래밍과 컴퓨터 수리 등 다양한 분야를 공부해 온 그녀는 좋은 문서가 지닌 가치, 그리고 경험이 없는 사람에게는 일부 문서가 전혀 도움이 되지 않는다는 사실을 깨달았습니다. 이러한 경험은 누구나 쉽게 이해할 수 있는 실용적인 문서를 만들고자 하는 열정으로 이어졌습니다. 현재 동부 뉴멕시코 주립대학교(Eastern New Mexico University)에서 컴퓨터 과학을 전공하며 프로그래밍과 Linux 등 세부 분야를 집중적으로 연구하고 있습니다.

하나는 2023년 4월부터 MakeUseOf에서 Linux, 프로그래밍, DIY, 구매 가이드 등 다양한 주제로 글을 기고하고 있습니다. ENMU의 교내 신문 'The Chase' 등 지역 언론에도 기고하는 그녀는 KENW News 3를 통해 뉴멕시코 지역 주민들에게 최신 뉴스를 전달하는 일에도 열정을 쏟고 있습니다.

컴퓨터가 제대로 작동하지 않는데 원인조차 알 수 없다면 정말 답답하기 그지없습니다. Ubuntu에서 마주치는 모든 문제에 손쉬운 해결책이 있는 것은 아니지만, Ubuntu 오류 로그 같은 자료를 활용하면 PC 문제를 진단하고 해결하는 데 큰 도움을 받을 수 있습니다.

Ubuntu 로그란 무엇인가?

Ubuntu 로그는 컴퓨터에서 발생하는 모든 이벤트를 기록해 두는 종합적인 파일입니다. 하드웨어, 운영체제, 심지어 일부 소프트웨어에 관한 정보까지 담겨 있습니다.

이런 로그는 문제 해결과 진단 과정에서 매우 귀중한 자료입니다. 타임스탬프, 맥락, 시스템 전반에서 발생한 이벤트에 대한 상세 정보를 제공합니다. 로그를 효과적으로 활용하려면 먼저 가장 중요한 로그 유형부터 파악해야 합니다.

Ubuntu 로그의 종류

모든 정보를 하나의 로그에 몰아 넣는 대신, Ubuntu는 용도별로 나뉜 여러 개의 로그에 정보를 기록합니다. 로그의 종류가 워낙 많아 전부 나열하기는 어렵지만, 문제 해결에 활용하기 전에 반드시 알아두어야 할 중요한 로그(및 로그 유형)들이 몇 가지 있습니다.

Ubuntu 오류 로그 완벽 가이드: 로그 확인부터 모니터링까지 단계별 정리

모든 로그 중 가장 대표적인 것은 systemd 저널(journal)입니다. systemd는 Linux에서 핵심적인 역할을 하는 서비스 관리자이므로, 다양한 운영체제 서비스의 문제가 systemd 저널에 기록됩니다. 이 로그는 journalctl 명령어로 확인할 수 있습니다.

시스템 로그 역시 매우 중요합니다. 이 로그들은 Ubuntu의 여러 부분과 직접 연관되어 있으며 시스템 메시지 같은 내용을 포함할 수 있습니다. 대표적인 시스템 로그는 다음과 같습니다.

  • 인증 로그(Authorization Log): sudo 명령 실행이나 사용자 로그인처럼 인증이 필요한 모든 프로세스가 이 로그에 기록됩니다.
  • 데몬 로그(Daemon Log): 블루투스, SSH 같은 백그라운드 서비스(데몬)와 관련된 내용이 담깁니다.
  • 디버그 로그(Debug Log): 시스템과 syslogd에 로그를 남기는 애플리케이션이 제공하는 디버깅 정보가 담깁니다.
  • 커널 로그(Kernel Log): Linux 커널과 관련된 활동 기록이 담깁니다.
  • 시스템 로그(System Log): 시스템에서 발생하는 대부분의 전역적 활동 기록이 저장됩니다.
  • 실패 로그(Fail Log): 로그인 실패 기록이 저장되며, 누군가 시스템 침입을 시도했는지 확인할 때 특히 유용합니다.

이 밖에도 /var/log 디렉터리에는 애플리케이션 로그(예: Apache 로그 파일, MySQL 로그 파일)가 저장되어 있을 수 있습니다. ls 명령어로 현재 컴퓨터에 저장된 모든 로그 파일을 확인할 수 있습니다.

ls /var/log

Ubuntu에서 로그 읽는 방법

시스템 로그의 다양한 유형을 파악했다면, 이제 로그에 담긴 정보를 본격적으로 살펴볼 차례입니다. 시작하기 전에 한 가지 유의할 점이 있습니다. 모든 시스템 로그가 같은 방식으로 작성되는 것은 아닙니다.

일부 로그는 일반 텍스트 파일로 저장되지만, 다른 로그는 바이너리 파일로 저장됩니다. 시스템의 기록을 효과적으로 분석하려면 두 파일 유형과 각각에 대응하는 명령줄 도구를 모두 익혀야 합니다.

일반 텍스트 로그는 RSYSLOG_TraditionalFileFormat이라는 템플릿을 사용하며, 타임스탬프, 호스트명, 애플리케이션, 메시지라는 네 가지 기본 필드로 구성됩니다. 예를 들어 커널 로그가 바로 이 템플릿을 따릅니다.

Ubuntu 오류 로그 완벽 가이드: 로그 확인부터 모니터링까지 단계별 정리

일반 텍스트 로그와 달리 바이너리 파일 로그는 그렇게 쉽게 읽을 수 없습니다. utmp, wtmp, btmp 같은 로그를 읽으려면 각각 who, last, lastb 같은 명령줄 유틸리티를 사용해야 합니다. utmp 계열 로그에는 utmpdump, journald에는 systemctl 같은 명령어 역시 바이너리 로그 정보를 사람이 읽기 좋은 형태로 출력하도록 설계되어 있습니다.

대부분의 경우 터미널에서 로그를 효율적으로 걸러 보는 방법을 아는 것이 중요합니다. grep이나 tail 같은 명령어를 활용하면 방대한 시스템 로그를 일일이 끝까지 읽지 않고도 필요한 정보만 골라낼 수 있습니다.

특히 유용한 명령어는 다음과 같습니다.

  • grep: 파일에서 특정 문자열을 검색합니다.
  • tail: 파일 끝에서 10줄을 출력합니다.
  • head: 파일 처음에서 10줄을 출력합니다.
  • sort: 파일 내용을 지정한 기준으로 재정렬하여 출력합니다.

utmpdump, systemctl 같은 명령줄 도구에도 터미널 작업 시 알아두면 좋은 유용한 플래그(flag)가 있습니다. 플래그를 사용하면 명령의 동작을 조정해 터미널에 출력되는 내용을 더 세밀하게 제어할 수 있습니다.

journalctl 명령어에서 특히 유용한 플래그는 다음과 같습니다.

  • -b: 마지막 재부팅 이후 수집된 항목만 출력합니다.
  • --since "YYYY-MM-DD HH:MM:SS" --until "YYYY-MM-DD HH:MM:SS": 지정한 날짜·시간 이전 또는 이후의 항목만 출력합니다.
  • -p NUM: syslog 우선순위 수준(0/emerg ~ 7/debug)으로 항목을 필터링합니다.

Ubuntu 로그로 오류 해결하기

시스템 로그의 종류와 효과적으로 읽는 방법을 익혔다면, 이제 남은 일은 습득한 정보를 실제 문제 해결 과정에 적용하는 것입니다. 이 과정에는 어느 정도 창의성이 필요합니다.

문제 해결은 겪고 있는 문제의 두드러진 특징부터 생각하는 것이 좋습니다. 특정 애플리케이션을 열 때만 문제가 발생하나요? 문제가 생길 때마다 시스템이 강제로 재부팅되나요?

문제의 특징을 고민하다 보면 자연스럽게 해당 정보를 얻기에 가장 적합한 로그로 안내받게 됩니다. 예를 들어 부팅 과정에서 시스템에 문제가 있다면 journald의 부팅 기록을 참조하는 것이 도움이 될 수 있습니다.

다음 명령어를 입력하면 journald에 기록된 모든 부팅 목록이 출력됩니다.

journalctl --list-boots

터미널에 부팅 기록 목록이 출력되며, 가장 최근의 부팅 기록은 목록 맨 아래에 위치합니다. 각 부팅 기록의 날짜와 시간을 살펴 오류가 발생한 부팅 세션을 찾아냅니다.

목록에서 가장 왼쪽 열의 숫자를 NUM으로 삼아 다음 명령어를 입력하면 해당 부팅에 대한 자세한 정보를 확인할 수 있습니다.

journalctl -b -NUM -n

해당 부팅에 대한 포괄적인 정보 기록이 화면에 표시됩니다. 부팅 과정에서 비정상적인 오류가 있었다면, 이 기록의 정보를 바탕으로 문제 해결에 한 걸음 더 다가설 수 있습니다.

Ubuntu 오류 로그 완벽 가이드: 로그 확인부터 모니터링까지 단계별 정리

같은 원리는 다른 많은 문제에도 적용됩니다. 하지만 컴퓨터에 어떤 문제가 생겼는지 잘 모르겠다면 어디서부터 시작해야 할지 막막할 수 있습니다. 다행히 Ubuntu 시스템의 폭넓은 문제에 두루 유용한 로그 몇 가지가 있습니다.

문제 해결을 시작할 때 가장 좋은 출발점은 syslog입니다. 사실상 전역(global) 로그 역할을 하기 때문에 겪고 있는 문제와 관련된 정보가 상당히 높은 확률로 들어 있습니다. 인증 문제(예: sudo 비밀번호가 작동하지 않는 오류)나 부팅 문제라면 auth.log 또는 boot.log를 확인하세요.

가장 관련성 높은 로그를 문제와 관련된 키워드로 검색해 보세요. 예를 들어 인증에 문제가 있다면 다음 명령어로 auth.log에서 기록을 추출할 수 있습니다.

cat /var/log/auth.log | grep 'Authentication failure'

이렇게 탐색하다 보면 결국 문제 해결의 실마리가 되는 정보를 반드시 찾게 됩니다. 오류 로그에서 얻은 정보와 웹 검색 결과를 함께 활용하면 시스템 문제를 빠르게 해결하는 데 필요한 자료를 손쉽게 찾을 가능성이 높습니다.

온라인 자료를 참고해 Linux 오류 해결하기

문제 해결 과정을 혼자 감당할 필요는 없습니다. 컴퓨터 문제에 대한 정보를 수집하는 동안 Ask Ubuntu나 MakeUseOf의 상세한 가이드 같은 온라인 자료를 함께 활용하면 PC 진단과 수리에 한층 가까워질 수 있습니다.