서버 모니터링 및 로깅, 시스템 로그 관리 (리눅스 `syslog`, `journalctl`; 윈도우 이벤트 뷰어)

들어가며

서버 관리에 있어 로그 관리는 매우 중요한 역할을 합니다. 로그는 시스템의 상태를 모니터링하고, 문제가 발생했을 때 이를 진단하는 데 필요한 정보를 제공합니다. 본 글에서는 리눅스와 윈도우에서의 시스템 로그 관리 방법에 대해 자세히 알아보겠습니다.

리눅스에서의 로그 관리

1. syslog란?

syslog는 리눅스 시스템에서 로그 메시지를 송출하고 저장하는 표준 프로토콜입니다. 다양한 애플리케이션, 데몬 및 커널 메시지를 수집하여 중앙 집중식으로 관리할 수 있습니다. 시스템의 모든 로그를 /var/log 디렉토리에 저장하며, 여기서 다양한 로그 파일을 확인할 수 있습니다.

2. syslog 설정 및 사용법

일반적으로 syslog는 /etc/rsyslog.conf 파일에서 설정됩니다. 기본적으로 다음과 같은 규칙들이 설정되어 있습니다:

# /etc/rsyslog.conf
    *.*;auth,authpriv.none          -/var/log/syslog
    auth,authpriv.*                 /var/log/auth.log
    mail.*                           -/var/log/mail.log
    user.*                           /var/log/user.log
    

이 설정을 통해 모든 로그 메시지는 /var/log/syslog 파일에 기록되고, 인증 관련 로그는 /var/log/auth.log에 저장됩니다. 추가로 메일 관련 로그는 /var/log/mail.log, 사용자 로그는 /var/log/user.log로 나눠 관리됩니다.

로그 레벨 설정 (ex. debug, info, notice 등)에 따라 출력되는 로그의 종류를 조정할 수 있으며, 이를 통해 필요한 정보만을 관리하는 것이 가능합니다. 설정을 변경한 후에는 rsyslog 서비스를 재시작해야 합니다:

sudo systemctl restart rsyslog

3. journalctl을 통한 로그 관리

journalctl은 systemd의 로그 관리 도구로, 보다 정교하게 로그를 관리할 수 있습니다. 기본적으로 /var/log/journal에 바이너리 형식으로 로그를 저장하며, 다음과 같은 명령어로 로그를 조회할 수 있습니다.

기본 사용법

journalctl

위 명령은 모든 로그를 출력합니다.

특정 기간의 로그 조회

journalctl --since "2023-01-01" --until "2023-01-02"

부팅 시점 관련 로그 조회

journalctl -b

에러 로그만 필터링

journalctl -p err

4. 로그 파일 관리 및 보존

로그 파일은 시간이 지나면서 용량이 커질 수 있으며, 이는 시스템 성능에 영향을 줄 수 있습니다. 이를 해결하기 위해 로그 로테이션(log rotation) 기능을 사용할 수 있습니다. 로그 로테이션은 /etc/logrotate.conf 파일에서 설정할 수 있으며, 일반적으로 다음과 같은 형식으로 설정합니다:

/var/log/syslog {
        weekly
        rotate 4
        compress
        missingok
        notifempty
        create 0640 syslog adm
    }

여기서 weekly는 로그를 주 단위로 로테이션하겠다는 의미이며, rotate 4는 4개의 이전 로그 파일을 보존하겠다는 의미입니다. compress는 로테이션 된 로그 파일을 압축하겠다는 의미입니다.

윈도우에서의 로그 관리

1. 이벤트 뷰어 소개

윈도우는 이벤트 뷰어(Event Viewer)라는 시스템 로그 관리 도구를 제공합니다. 이벤트 뷰어는 시스템, 보안, 응용 프로그램 로그를 쉽게 볼 수 있도록 해 주며, 문제 해결 및 서버 모니터링에 유용합니다.

2. 이벤트 뷰어 사용법

이벤트 뷰어를 열려면 아래의 경로를 따라가거나 Win + R 키를 눌러 eventvwr를 입력합니다.

이벤트 뷰어 열기

Win + R -> eventvwr

로그 확인

이벤트 뷰어는 다음과 같은 로그 카테고리를 제공합니다:

  • Windows 로그: 응용프로그램, 보안, 설치, 시스템 및 전송 로그를 포함
  • 응용프로그램 로그: 사용자 정의 애플리케이션의 로그
  • 서비스 로그: 특정 서비스와 관련된 로그

3. 이벤트 로그 관리

이벤트 로그의 크기와 보존 기간은 그룹 정책 또는 로컬 보안 정책을 통해 설정할 수 있습니다. 이를 통해 중요성이 낮은 로그를 자동으로 삭제하게 하여 필요한 저장 공간을 확보할 수 있습니다.

이벤트 로그 크기 조정


    1. 이벤트 뷰어를 열고, 좌측에서 'Windows 로그'를 선택합니다.
    2. 로그를 마우스 오른쪽 클릭 후, '속성'을 선택합니다.
    3. 로그 크기와 신속성을 설정합니다.
    

4. PowerShell을 활용한 로그 관리

Windows PowerShell을 사용하면 이벤트 로그를 프로그래밍적으로 접근하고 관리할 수 있습니다. 다음은 이벤트 로그를 조회하는 간단한 PowerShell 예제입니다:

Get-EventLog -LogName Application -Newest 10

위의 명령어는 응용 프로그램 로그에서 최신 10개의 이벤트를 조회합니다.

5. 이벤트 로그 필터링 및 내보내기

특정 조건에 맞는 로그를 필터링하여 내보내는 것도 가능합니다. 이벤트 뷰어 GUI(그래픽 사용자 인터페이스)를 통해 필터를 설정할 수 있으며, PowerShell을 이용하면 프로그래밍적으로 필터를 구체화할 수 있습니다.

Get-EventLog -LogName Security | Where-Object {$_.EventID -eq 4624}

위 명령어는 보안 로그에서 이벤트 ID가 4624인 로그인 이벤트만 조회하는 예시입니다.

결론

서버의 안정성과 보안을 위해 로그 관리는 필수적입니다. 리눅스에서는 syslogjournalctl을 활용하여 로그를 효율적으로 관리할 수 있으며, 윈도우에서는 이벤트 뷰어와 PowerShell을 통해 시스템 로그를 효과적으로 분석하고 운영할 수 있습니다. 이 가이드를 통해 시스템 로그 관리의 중요성을 이해하고, 실제 운영 환경에서 어떻게 활용할 수 있는지를 충분히 배웠기를 바랍니다.

서버 운영 중 발생할 수 있는 여러 문제를 사전에 예방하고, 신속하게 대처하기 위해 항상 로그를 주의 깊게 모니터링하시는 것이 중요합니다.