[파이썬] 리눅스 서버 감시와 경고 시스템 자동화

리눅스 서버 운영 중에 발생하는 문제를 신속하게 해결하기 위해 감시와 경고 시스템은 매우 중요합니다. 이를 자동화하여 실시간으로 서버 상태를 모니터링하고 문제가 발생하면 즉시 경고 메시지를 받을 수 있다면 운영 효율성을 크게 향상시킬 수 있습니다. 이번 포스트에서는 파이썬을 사용하여 리눅스 서버의 감시와 경고 시스템을 자동화하는 방법을 알아보겠습니다.

필요한 모듈 설치

먼저, 필요한 모듈들을 설치해야 합니다. 이 포스트에서는 psutilsmtplib 모듈을 사용합니다. psutil은 운영체제와 프로세스 관련 정보에 접근할 수 있는 모듈이며, smtplib은 이메일을 보내는 기능을 제공하는 모듈입니다.

pip install psutil
pip install secure-smtplib

서버 감시 스크립트 작성

이제 실제로 서버 감시 스크립트를 작성해보겠습니다. 아래의 예제 코드는 CPU 사용률을 체크하고, CPU 사용률이 특정 임계값을 넘으면 경고 이메일을 보내는 스크립트입니다.

import psutil
import smtplib
from email.mime.text import MIMEText

# 감시할 서버의 CPU 임계값 설정
threshold = 80.0

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

if cpu_percent > threshold:
    # 경고 이메일 작성
    message = MIMEText("CPU usage is high! Current usage: %.2f%%" % cpu_percent)
    message['Subject'] = '[서버 경고] CPU 사용률이 높습니다!'
    message['From'] = 'sender@gmail.com'
    message['To'] = 'receiver@gmail.com'

    # SMTP 서버 연결
    smtp = smtplib.SMTP('smtp.gmail.com', 587)
    smtp.starttls()
    smtp.login('sender@gmail.com', 'password')

    # 이메일 전송
    smtp.sendmail('sender@gmail.com', 'receiver@gmail.com', message.as_string())
    smtp.quit()

위 코드에서는 감시할 서버의 CPU 임계값을 threshold 변수로 설정하고, psutil.cpu_percent() 함수를 사용하여 현재 CPU 사용률을 가져옵니다. CPU 사용률이 임계값을 넘으면 경고 이메일을 작성하고, smtplib.SMTP() 함수를 사용하여 SMTP 서버에 연결하여 이메일을 전송합니다.

스크립트 실행 계획화

서버 감시 스크립트를 실행할 계획을 자동화하여 정기적으로 실행되도록 해야 합니다. 이를 위해 cron이나 systemd와 같은 도구를 사용할 수 있습니다.

cron을 사용한 예시

  1. crontab -e 명령을 사용하여 crontab 파일을 엽니다.
  2. crontab 파일에 스크립트 실행 계획을 추가합니다. 예시: * * * * * python /path/to/server_monitor.py
  3. 변경사항을 저장하고 에디터를 종료합니다.

위 예시에서 * * * * *는 매 분 실행을 의미하며, python /path/to/server_monitor.py는 실행할 스크립트의 경로를 지정합니다.

systemd를 사용한 예시

  1. /etc/systemd/system 디렉토리에 monitor.service 파일을 생성합니다.
[Unit]
Description=Server Monitoring Service

[Service]
ExecStart=/usr/bin/python /path/to/server_monitor.py

[Install]
WantedBy=default.target
  1. systemctl daemon-reload 명령을 실행하여 systemd에 변경사항을 적용합니다.
  2. systemctl enable monitor.service 명령을 실행하여 서비스를 자동으로 시작하도록 설정합니다.
  3. systemctl start monitor.service 명령을 실행하여 서비스를 시작합니다.

위 예시에서 /usr/bin/python /path/to/server_monitor.py는 실행할 스크립트의 경로를 지정합니다.

마무리

이렇게 파이썬을 사용하여 리눅스 서버의 감시와 경고 시스템을 자동화할 수 있습니다. 이 예시는 CPU 사용률을 체크하는 것이지만, 같은 방법으로 다른 리소스나 서비스를 감시하고 문제가 발생하면 경고를 받을 수 있습니다. 서버 감시 시스템을 자동화하여 운영 효율성과 안정성을 높여보세요!