Computer >> 컴퓨터 >  >> 문제 해결 >> Mac

Linux와 Mac에서 로그 파일을 효과적으로 분석하는 방법

Linux 시스템에 문제가 생기면 원인을 찾는 과정이 악몽처럼 느껴질 수 있습니다. 특히 문제가 간헐적으로 발생하고 원인을 전혀 알 수 없다면 그 어려움은 배가 됩니다.

물론 Stack Overflow를 몇 시간씩 뒤지거나 Reddit에 도움을 요청할 수도 있습니다. 하지만 스스로 문제를 해결하고 싶다면, 시스템의 로그 파일을 직접 들여다보며 원인을 추적해 보는 것이 가장 확실한 방법입니다.

로그 파일이란 무엇일까요?

Windows, Mac, Linux용 프로그램은 물론 Android까지, 대부분의 프로그램은 실행되는 동안 로그 파일을 생성합니다. 로그 파일은 프로그램이 어떻게 작동하고 있는지 기록한 일반 텍스트(plain-text) 파일입니다. 각 이벤트는 별도의 줄에 기록되며, 초 단위까지 타임스탬프가 찍히기 때문에 언제 무슨 일이 일어났는지 정확하게 파악할 수 있습니다.

모든 애플리케이션에 적용되는 것은 아니지만, 로그 파일은 대체로 /var/log 디렉터리에 저장됩니다.

로그 파일에 담긴 데이터 대부분은 평범한 내용입니다. 반드시 문제를 나타내는 것은 아니며, 단순히 특정 시점에 프로그램이 무엇을 했는지 알려주는 업데이트 기록일 뿐입니다.

하지만 문제가 발생하면 그에 대한 정보는 반드시 로그 파일에 남습니다. 이 정보를 활용하면 문제를 직접 해결하거나, 전문가에게 구체적인 질문을 던져 도움을 받을 수 있습니다.

그렇다면 방대한 로그 파일 속에서 내가 필요한 정보만 골라내려면 어떻게 해야 할까요?

표준 Linux 유틸리티 활용하기

로그 파일은 특정 플랫폼에 국한된 것이 아닙니다. 다만 이 글에서는 Linux와 OS X(macOS)에 초점을 맞춥니다. 두 운영체제 모두 로그 파일을 분석하는 데 필수적인 UNIX 명령줄 도구를 기본으로 제공하기 때문입니다.

로그 파일은 일반 텍스트 파일이므로, 텍스트 파일을 다루는 어떤 도구든 자유롭게 사용할 수 있습니다. 그중 grep은 배우기는 가장 어렵지만 가장 유용한 도구입니다. grep을 사용하면 특정 파일 안에서 원하는 문구나 용어를 검색할 수 있으며, 기본 문법은 다음과 같습니다.

grep [검색어] [파일명]

좀 더 고급 기법으로 정규 표현식(RegEx)을 사용하면 원하는 항목을 레이저처럼 정밀하게 검색할 수 있습니다. RegEx는 겉보기에는 마법처럼 보이지만, 사실 익숙해지면 생각보다 간단합니다.

다음으로 headtail 명령어가 있습니다. 이름에서 짐작할 수 있듯이, head는 파일의 처음 10줄을, tail은 마지막 10줄을 각각 보여줍니다. 따라서 로그 파일의 최신 기록을 확인하려면 다음과 같이 입력하면 됩니다.

tail [파일명]

-n 옵션을 사용하면 표시되는 줄 수를 조절할 수 있습니다. 예를 들어 파일의 첫 20줄을 보고 싶다면 다음과 같이 실행합니다.

head -n 20 [파일명]

파일 전체 내용을 확인하려면 cat 유틸리티를 사용할 수 있습니다. 하지만 로그 파일은 수십만 줄에 달하는 경우가 많아 cat만으로는 다루기 번거로울 수 있습니다. 이럴 때는 less 유틸리티에 연결(pipe)해서 한 페이지씩 넘겨 보는 것이 좋습니다.

cat [파일명] | less

그 외에도 sedawk를 활용하면 텍스트 파일을 처리하는 간단한 스크립트를 작성할 수 있습니다. 마지막으로, vim 편집기에 능숙하다면 vim도 좋은 선택입니다. vim에는 로그 파일을 쉽게 탐색할 수 있는 다양한 내장 명령이 포함되어 있습니다. 참고로 32비트 버전 vim은 최대 2GB 크기의 파일까지 열 수 있지만, 성능상의 이유로 그렇게 큰 파일을 여는 것은 권장하지 않습니다.

로그 관리 소프트웨어 활용하기

명령줄 작업이 부담스럽거나 좀 더 시각적인 도구를 선호한다면, 로그 관리 애플리케이션(SIEM, 즉 Security Information and Event Management와 혼동되곤 하는)을 고려해 볼 만합니다.

이런 도구의 장점은 어려운 작업을 대신 처리해 준다는 점입니다. 많은 솔루션이 로그를 자동으로 분석해 문제를 식별하고, 다양한 그래프와 차트로 로그를 시각화하여 애플리케이션이 얼마나 안정적으로 작동하는지 한눈에 파악할 수 있게 해줍니다.

가장 잘 알려진 로그 관리 프로그램 중 하나가 바로 Splunk입니다. Splunk는 웹 인터페이스를 통해 파일을 탐색할 수 있으며, 강력하고 범용적인 자체 검색 처리 언어를 갖추고 있어 결과를 프로그래밍 방식으로 깊이 있게 분석할 수 있습니다.

Splunk는 수많은 대기업에서 사용하고 있으며, Mac, Windows, Linux를 모두 지원합니다. 또한 개인 사용자와 소규모 비즈니스를 위한 무료 버전도 제공합니다.

무료 버전인 Splunk Light는 엔터프라이즈 버전과 상당 부분 공통점이 있습니다. 로그를 탐색하고, 파일을 모니터링하며, 문제가 감지되면 알림을 보낼 수 있습니다.

다만 Splunk Light에는 합리적인 수준의 몇 가지 제한이 있습니다. 첫째, 하루에 처리할 수 있는 데이터량이 500MB로 제한됩니다. 이것으로 부족하다면 하루 20GB의 로그를 처리할 수 있는 유료 버전으로 업그레이드할 수 있지만, 현실적으로 대부분의 사용자는 그 용량에 근접하기조차 어렵습니다.

또한 최대 5명의 사용자만 지원하지만, 가정용 웹 서버나 파일 서버에서 운영하는 수준이라면 큰 문제가 되지 않습니다.

Splunk는 클라우드 버전도 제공합니다. 클라이언트를 직접 설치하고 싶지 않거나 원격 서버가 여러 대 있는 환경에 적합합니다. 단점은 비용인데, 가장 저렴한 요금제도 월 $125부터 시작합니다.

결코 저렴한 가격은 아니죠.

여러분은 로그 파일을 어떻게 관리하시나요?

지금까지 로그 파일을 분석해 문제 해결에 필요한 정보를 찾는 방법을 살펴봤습니다. 물론 직접 확인할 수도 있고, 원격 지원을 받을 때 활용할 수도 있습니다.

더 좋은 방법을 알고 계신가요? 로그 관리 소프트웨어를 사용하시나요, 아니면 표준 Linux 유틸리티를 활용하시나요?

여러분의 경험을 댓글로 들려주세요!