본문 바로가기
OS/Linux

[Linux]시스템 로그와 모니터링 이해하기

by 알 수 없는 사용자 2023. 6. 12.

안녕하세요. 이쁜이와 멋쟁이의 "BTC_준호" 입니다.

리눅스 시스템에서 로그와 모니터링은 시스템의 상태를 파악하고 문제를 진단하는 데 매우 중요합니다. 이번 글에서는 로그와 모니터링의 기본적인 개념과 사용법을 알아보겠습니다.

 


시스템 로그의 이해

리눅스 시스템 로그는 운영 체제, 애플리케이션, 서비스 등에서 발생하는 다양한 이벤트를 시간 순서대로 기록한 파일들을 말합니다. 이는 시스템이나 애플리케이션의 동작을 추적하고, 문제를 진단하고 해결하는데 근본적인 정보를 제공합니다. 또한, 시스템의 보안 상태를 파악하고, 보안 문제를 조사하는데 중요한 역할을 합니다.

리눅스에서는 주로 /var/log 디렉토리에 로그 파일들이 저장됩니다. 이 디렉토리 아래에는 다양한 로그 파일들이 위치해 있습니다. 예를 들어, 시스템 메시지가 기록되는 syslog, 인증 관련 로그가 기록되는 auth.log 또는 secure, 부팅 관련 로그가 기록되는 boot.log, 메일 서버 로그인 mail.log 등이 있습니다.

예를 들어, 웹 서버에서 알 수 없는 문제가 발생했다고 가정해봅시다. 이 경우 /var/log/apache2/error.log 파일을 확인하여 웹 서버에서 발생한 오류 메시지를 볼 수 있습니다. 이 로그를 통해 문제의 원인을 파악하고, 그에 따른 해결책을 찾을 수 있습니다.

 

또 다른 예로, 누군가 시스템에 반복적으로 로그인을 시도하고 실패하면 이는 해킹 시도의 신호일 수 있습니다. 이런 경우, /var/log/auth.log 또는 /var/log/secure를 확인하여 로그인 실패 이벤트와 관련된 IP 주소를 파악할 수 있습니다.

또한, 리눅스에서는 로그 파일을 관리하기 위한 다양한 시스템과 도구가 있습니다. 예를 들어, syslogd나 rsyslogd는 로그 메시지를 수집하고 분류하고 저장하는 역할을 합니다. logrotate는 로그 파일을 주기적으로 회전하고, 필요에 따라 압축하거나 삭제하여 로그 파일이 너무 크게 증가하는 것을 방지합니다.

이처럼 리눅스 시스템 로그는 시스템의 동작과 문제 해결, 보안 관리에 있어서 핵심적인 요소입니다. 로그를 잘 이해하고 관리하는 것은 리눅스 시스템 관리의 중요한 부분입니다.


상황 예시

메모리 부족: 시스템이 메모리 부족으로 인해 느려지거나 애플리케이션이 갑자기 종료된다면, 이런 현상의 원인을 파악하기 위해 /var/log/messages 또는 /var/log/syslog에서 Out of Memory (OOM) 메시지를 찾아 볼 수 있습니다.이 메시지를 통해 어떤 프로세스가 많은 메모리를 사용하고 있었는지 확인하고, 필요하다면 해당 프로세스를 최적화하거나, 시스템의 메모리를 늘리는 등의 조치를 취할 수 있습니다.

디스크 공간 부족: 시스템에 사용 가능한 디스크 공간이 부족하다면, 여러 애플리케이션에서 오류가 발생할 수 있습니다. /var/log/syslog 또는 /var/log/messages를 확인하여 disk full 메시지를 찾아볼 수 있습니다. 이 메시지를 통해 어떤 디렉토리나 파일이 많은 디스크 공간을 차지하고 있는지 파악하고, 필요하다면 이들을 삭제하거나 디스크 공간을 확장할 수 있습니다.

서비스 오류: 특정 서비스가 예상대로 동작하지 않거나 갑자기 종료된 경우, 해당 서비스의 로그를 확인해볼 수 있습니다. 예를 들어, MySQL 데이터베이스 서버에 문제가 있다면, /var/log/mysql/error.log를 확인하여 MySQL 서버에서 발생한 오류를 파악할 수 있습니다.

부팅 문제: 시스템이 정상적으로 부팅되지 않는다면, /var/log/boot.log 또는 /var/log/dmesg를 확인하여 부팅 과정에서 발생한 이벤트를 파악할 수 있습니다.

 

시스템 충돌: 리눅스 시스템이 갑자기 충돌했다면, /var/log/kern.log 파일을 확인해 보세요. 이 파일에는 커널 관련 메시지가 기록되어 있으며, 하드웨어 문제, 드라이버 오류, 커널 패닉 등과 같은 문제의 원인을 찾을 수 있습니다.

네트워크 문제: 네트워크 연결에 문제가 생겼다면, /var/log/syslog 또는 /var/log/messages를 확인해 볼 수 있습니다. 이 파일들에는 네트워크 인터페이스 카드(NIC)에서 발생하는 메시지, DHCP나 DNS 관련 이벤트 등이 기록됩니다.

보안 위협: 보안 문제가 의심된다면, /var/log/auth.log 또는 /var/log/secure 파일을 확인해 보세요. 이 로그 파일에는 시스템에 대한 로그인 시도와 같은 인증 관련 이벤트가 기록되어 있습니다. 누군가 비정상적인 시간에 로그인을 시도했거나, 반복적으로 비밀번호를 틀리는 등의 상황을 파악할 수 있습니다.

크론 작업: cron 작업이 실패했거나 예상대로 동작하지 않는다면, /var/log/cron 파일을 확인하세요. 이 로그 파일에는 시스템의 스케줄링된 작업들에 대한 실행 기록이 있습니다.

 

시스템 성능 저하: 시스템의 성능이 저하되었거나, 특정 서비스가 응답하지 않는 경우에는 /var/log/syslog 또는 /var/log/messages를 살펴볼 수 있습니다. 이러한 로그 파일에는 서비스 실패, 메모리 부족, CPU 과부하 등과 같은 성능 문제와 관련된 다양한 메시지가 기록될 수 있습니다.

하드웨어 문제: 하드웨어 문제(예: 디스크 오류, 메모리 오류)를 파악하는데는 /var/log/kern.log 파일이 도움이 될 수 있습니다. 이 파일에는 리눅스 커널로부터 발생하는 메시지가 기록되며, 하드웨어 관련 문제에 대한 중요한 정보를 제공할 수 있습니다.

메일 서비스 문제: 만약 메일 서비스에 문제가 있다면, /var/log/mail.log 또는 /var/log/maillog 파일을 살펴볼 수 있습니다. 이 파일에는 메일 서버의 모든 활동, 포함하여 성공적인 메일 전송, 실패한 전송, 스팸 필터 활동 등이 기록됩니다.

파일 시스템 오류: 파일 시스템에 문제가 생긴 경우, /var/log/fsck/ 디렉토리 아래의 로그 파일을 확인해 볼 수 있습니다. 이 로그 파일에는 파일 시스템 검사 도구(fsck)가 실행될 때의 메시지가 기록됩니다.

 

Daemon 오류: 시스템에서 실행되는 데몬 프로세스가 예상치 못한 방식으로 작동하거나 종료된 경우, 해당 데몬의 로그를 확인해 볼 수 있습니다. /var/log/daemon.log에는 시스템 데몬들의 로그가 포함되어 있습니다. 이를 통해 문제가 발생한 데몬의 상세한 오류 메시지를 확인하고 문제를 해결할 수 있습니다.

프린터 문제: 프린터 문제가 발생한 경우, /var/log/cups/ 디렉토리 아래의 error_log 또는 access_log 파일을 확인해 볼 수 있습니다. CUPS(Common Unix Printing System) 로그에는 프린터와 관련된 에러 메시지나 접근 로그가 포함되어 있어 문제의 원인을 찾는 데 도움이 될 수 있습니다.

FTP 접속 문제: FTP 서버에 문제가 발생하거나, 접속이 실패한 경우 /var/log/vsftpd.log 또는 /var/log/proftpd/ 디렉토리 아래의 로그 파일을 확인해 볼 수 있습니다. 이 로그 파일들에는 FTP 접속 시도, 성공한 접속, 실패한 접속 등에 대한 상세한 정보가 기록됩니다.

파이어월 문제: 네트워크 연결 문제가 발생하거나, 특정 트래픽이 차단된 경우 /var/log/kern.log 또는 /var/log/messages 파일에서 iptables이나 ufw와 같은 파이어월에 관련된 메시지를 확인해 볼 수 있습니다.


시스템 모니터링이란?

시스템 모니터링은 컴퓨터 시스템의 성능이나 상태를 실시간으로 확인하고 분석하는 것을 의미합니다. 시스템의 정상적인 운영 상태를 유지하기 위해, 이상 징후를 조기에 감지하고 문제를 해결하는데 필수적입니다. 다양한 도구를 사용하여 CPU 사용률, 메모리 사용량, 디스크 사용량, 네트워크 트래픽 등 다양한 정보를 확인하고, 필요에 따라 이를 기록하여 향후 참조할 수 있습니다.

 


리눅스에서는 다양한 명령어와 도구를 이용하여 시스템 모니터링을 수행할 수 있습니다. 
top, htop, vmstat, iostat 이외에도, 네트워크 관련 모니터링을 위한 netstat 등의 도구가 있습니다.

netstat
netstat은 네트워크 연결, 라우팅 테이블, 인터페이스 상태 등을 보여주는 명령어입니다. 이를 통해 TCP/IP 네트워크와 관련된 통계를 확인할 수 있습니다. 예를 들어, 어떤 포트가 열려 있는지, 어떤 서비스가 어떤 포트를 사용하고 있는지, 어떤 IP 주소에서 시스템으로의 연결이 많이 일어나고 있는지 등을 파악할 수 있습니다.

다음은 netstat의 주요 옵션들입니다:

-a : 모든 연결과 리스닝 소켓을 보여줍니다.
-n : 주소, 포트 번호 등을 숫자로 보여줍니다.
-t : TCP 연결만 보여줍니다.
-u : UDP 연결만 보여줍니다.
-l : 리스닝 소켓만 보여줍니다.
-p : 연결된 프로세스 ID와 프로그램 이름을 보여줍니다.

시스템의 네트워크 상태를 실시간으로 모니터링하려면, netstat과 같은 도구를 활용하는 것이 중요합니다. 이를 통해 네트워크 문제를 신속하게 감지하고 대응할 수 있습니다.


문제 해결을 위한 로그와 모니터링 활용

그렇다면 이러한 로그와 모니터링 도구를 어떻게 활용하여 문제를 해결할 수 있을까요?

예를 들어, 시스템이 느려진다면 top 또는 htop을 통해 CPU와 메모리 사용량을 확인해볼 수 있습니다. 만약 특정 프로세스가 과도한 자원을 사용하고 있다면, 해당 프로세스를 종료하거나 조사하여 문제를 해결할 수 있습니다.

또한, 시스템에 알 수 없는 문제가 발생했다면 로그 파일을 확인해볼 수 있습니다. 예를 들어, 서버에서 특정 서비스가 갑자기 중지되었다면, 해당 서비스의 로그 파일을 확인하여 왜 중지되었는지 원인을 찾을 수 있습니다.


끝으로...

시스템 로그와 모니터링은 리눅스 시스템 관리의 핵심적인 부분입니다. 이러한 도구들을 이해하고 잘 활용하면, 시스템의 상태를 정확하게 파악하고 문제를 빠르게 해결할 수 있습니다. 각 도구의 사용법과 특징을 이해하고, 실제로 사용해보면서 리눅스 시스템 관리의 실력을 키워나가는 것이 중요합니다.


이해가 어려운 부분이 있거나 추가로 알아보고 싶은 내용이 있다면 댓글로 언제든 질문해주세요.

감사합니다.

'OS > Linux' 카테고리의 다른 글

[Linux] Swap Memory  (0) 2023.07.07
[Linux]포트 이해하기  (0) 2023.06.26
[Linux] Apache Nifi 사용법  (0) 2023.06.07
Web - Was Mod_jk 연동  (0) 2023.06.07
Mod_proxy_ajp를 통한 web-was 연동  (0) 2023.05.31

댓글