[파이썬] 시스템 모니터링 및 보고 자동화

시스템 모니터링은 운영 중인 시스템의 상태를 지속적으로 감시하고, 이상 상태를 식별하여 대응하는 중요한 작업입니다. 이를 효과적으로 수행하기 위해서는 모니터링 데이터를 실시간으로 수집하고, 필요한 보고서를 자동으로 생성해야 합니다.

이번 포스트에서는 파이썬을 이용하여 시스템 모니터링 및 보고를 자동화하는 방법을 소개하겠습니다.

1. 시스템 모니터링을 위한 라이브러리 선택하기

파이썬에서는 다양한 시스템 모니터링을 위한 라이브러리들이 존재합니다. 대표적인 라이브러리로는 psutil, pymon 등이 있습니다. 이러한 라이브러리를 사용하여 시스템의 CPU 사용률, 메모리 사용량, 디스크 사용량 등을 간편하게 모니터링할 수 있습니다.

import psutil

# CPU 사용률
cpu_percent = psutil.cpu_percent(interval=1)

# 메모리 사용량
memory = psutil.virtual_memory()
memory_percent = memory.percent

2. 모니터링 데이터 저장하기

시스템 모니터링 데이터는 실시간으로 수집되어야 하며, 이를 저장해 두면 추후에 보고서 생성에 활용할 수 있습니다. 모니터링 데이터를 저장하기 위해 파이썬의 csv 모듈을 사용할 수 있습니다.

import csv

# 모니터링 데이터 저장
with open('monitoring.csv', 'a') as csvfile:
    writer = csv.writer(csvfile)
    writer.writerow(['Timestamp', 'CPU %', 'Memory %'])
    writer.writerow([timestamp, cpu_percent, memory_percent])

3. 보고서 생성 자동화하기

시스템 모니터링 데이터를 기반으로 간단한 보고서를 자동으로 생성할 수 있습니다. 보고서 생성에는 pandas 라이브러리를 사용할 수 있으며, 보고서 포맷은 HTML, PDF 등 다양한 형식으로 지정할 수 있습니다.

import pandas as pd

# 모니터링 데이터 불러오기
df = pd.read_csv('monitoring.csv')

# 보고서 생성
report = df.describe().to_html('report.html')

4. 보고서 이메일 발송하기

생성된 보고서를 이메일로 발송하여 필요한 인원에게 공유할 수 있습니다. 이메일 발송을 자동화하기 위해서는 smtplib 라이브러리를 사용할 수 있습니다.

import smtplib
from email.mime.text import MIMEText

# 보고서 파일 불러오기
with open('report.html', 'r') as file:
    report_content = file.read()

# 이메일 전송
msg = MIMEText(report_content, 'html')
msg['Subject'] = '시스템 모니터링 보고서'
msg['From'] = 'sender@example.com'
msg['To'] = 'recipient@example.com'

smtp_server = smtplib.SMTP('smtp.example.com', 587)
smtp_server.login('username', 'password')
smtp_server.sendmail('sender@example.com', 'recipient@example.com', msg.as_string())
smtp_server.quit()

5. 자동화 스케줄링 설정하기

위 과정을 자동으로 실행하기 위해 파이썬의 schedule 라이브러리를 사용하여 스케줄링을 설정할 수 있습니다. 예를 들어, 매 시간마다 모니터링 데이터 수집 및 보고서 생성을 실행하고 싶다면 다음과 같이 코드를 작성할 수 있습니다.

import schedule
import time

def task():
    # 모니터링 데이터 수집 및 저장
    # 보고서 생성

schedule.every().hour.do(task)

while True:
    schedule.run_pending()
    time.sleep(1)

시스템 모니터링 및 보고 자동화 과정을 위해 위에서 소개한 다양한 라이브러리와 기술들을 조합하여 복잡한 시스템의 상태를 효과적으로 관리할 수 있습니다. 파이썬은 다양한 라이브러리들을 지원하여 이러한 작업을 보다 쉽게 처리할 수 있는 강력한 도구입니다.