[파이썬] 리눅스 시스템 모니터링과 경고 자동화

==============================

리눅스 시스템의 안정적인 운영을 위해서는 시스템 상태를 모니터링하고, 필요한 경우 적시에 경고를 받을 수 있어야 합니다. 이를 위해 파이썬을 사용하여 리눅스 시스템의 모니터링과 경고 자동화를 구현할 수 있습니다. 이번 블로그 포스트에서는 파이썬을 사용한 주요 시스템 모니터링 기능과 경고 자동화에 대해 알아보겠습니다.

  1. 시스템 리소스 모니터링

리눅스 시스템의 가장 기본적인 모니터링은 CPU, 메모리, 디스크 사용량, 네트워크 트래픽 등의 시스템 리소스를 모니터링하는 것입니다. 파이썬에서는 psutil 라이브러리를 사용하여 시스템 리소스에 대한 정보를 수집할 수 있습니다. 다음은 psutil을 사용하여 CPU 사용량을 모니터링하는 예제 코드입니다.

import psutil

cpu_percent = psutil.cpu_percent(interval=1)
print(f"CPU 사용량: {cpu_percent}%")
  1. 프로세스 모니터링

시스템의 모니터링은 단순히 리소스 사용량을 확인하는 것 이상으로, 실행 중인 프로세스에 대한 정보도 수집할 수 있어야 합니다. 파이썬의 psutil 라이브러리를 사용하여 실행 중인 프로세스의 목록과 상세 정보를 가져올 수 있습니다. 다음은 psutil을 사용하여 실행 중인 프로세스를 모니터링하는 예제 코드입니다.

import psutil

for proc in psutil.process_iter():
    print(f"프로세스 이름: {proc.name()}")
    print(f"PID: {proc.pid}")
    print(f"스타트 시간: {proc.create_time()}")
    print(f"실행 상태: {proc.status()}")
    print("===================")
  1. 경고 자동화

시스템의 모니터링만으로는 중요한 이벤트나 문제를 놓치기 쉽습니다. 따라서 모니터링 시스템에 경고 기능을 추가하여 특정 조건이 발생할 때 알림을 받을 수 있도록 해야 합니다. 파이썬에서는 이를 위해 smtplib 라이브러리를 사용하여 이메일 알림을 보낼 수 있습니다. 다음은 smtplib를 사용하여 이메일 알림을 보내는 예제 코드입니다.

import smtplib
from email.message import EmailMessage

def send_email(subject, body):
    email = EmailMessage()
    email['Subject'] = subject
    email['From'] = 'sender@example.com'
    email['To'] = 'receiver@example.com'
    email.set_content(body)

    with smtplib.SMTP('smtp.gmail.com', 587) as smtp:
        smtp.starttls()
        smtp.login('sender@example.com', 'password')
        smtp.send_message(email)
        print("이메일 알림이 전송되었습니다.")

# 예시: CPU 사용량이 90% 이상일 경우 경고 이메일을 보냄
cpu_percent = psutil.cpu_percent(interval=1)
if cpu_percent > 90:
    send_email("경고: CPU 사용량이 높음", f"현재 CPU 사용량: {cpu_percent}%")

요약

파이썬을 사용하여 리눅스 시스템의 모니터링과 경고 자동화를 구현할 수 있습니다. psutil 라이브러리를 사용하여 시스템 리소스와 실행 중인 프로세스에 대한 정보를 수집하고, smtplib 라이브러리를 사용하여 경고 알림을 보낼 수 있습니다. 이를 통해 시스템의 안정성을 높이고 문제를 빠르게 대응할 수 있습니다.