[파이썬] 리눅스 서버 상태 및 이벤트 로깅 자동화

리눅스 서버의 상태 및 이벤트 로깅은 시스템 관리에서 중요한 작업 중 하나입니다. 이러한 작업들은 일일이 수동으로 수행하는 것은 시간이 많이 소비되기 때문에 자동화하는 것이 좋습니다. 이 문서에서는 파이썬을 사용하여 리눅스 서버 상태 및 이벤트 로깅을 자동화하는 방법에 대해 알아보겠습니다.

상태 모니터링

리눅스 서버의 상태 모니터링은 CPU, 메모리, 디스크 사용량 등의 정보를 주기적으로 수집하여 서버의 현재 상태를 파악하는 작업입니다. 이를 자동화하기 위해 파이썬의 psutil 라이브러리를 활용할 수 있습니다.

1. psutil 라이브러리 설치하기

pip install psutil

2. 예제 코드 작성하기

import psutil

def monitor_server_status():
    cpu_percent = psutil.cpu_percent()
    memory_percent = psutil.virtual_memory().percent
    disk_usage = psutil.disk_usage("/").percent
    
    print(f"CPU 사용량: {cpu_percent}%")
    print(f"메모리 사용량: {memory_percent}%")
    print(f"디스크 사용량: {disk_usage}%")

monitor_server_status()

위의 코드는 psutil 라이브러리를 사용하여 CPU 사용량, 메모리 사용량, 디스크 사용량을 출력하는 예제입니다. 이 코드를 주기적으로 실행하면 리눅스 서버의 상태를 모니터링할 수 있습니다.

이벤트 로깅

리눅스 서버에서 발생하는 이벤트를 로그로 남겨서 추후에 필요한 경우 분석하고 대응할 수 있습니다. 파이썬의 logging 모듈을 활용하여 이벤트 로깅을 자동화할 수 있습니다.

1. logging 모듈 사용하기

import logging

logging.basicConfig(filename='server.log', level=logging.INFO)

def log_event(event):
    logging.info(event)

log_event("서버가 재부팅되었습니다.")

위의 예제 코드는 logging 모듈을 사용하여 “서버가 재부팅되었습니다.”라는 이벤트를 server.log 파일에 기록하는 예제입니다. logging.basicConfig 함수를 사용하여 로그 파일의 이름과 로그 레벨을 설정할 수 있습니다. logging.INFO는 로그 레벨 중 가장 낮은 수준으로, 모든 이벤트를 로그로 남깁니다.

자동화 스크립트 작성하기

상태 모니터링과 이벤트 로깅을 하나의 자동화 스크립트로 작성할 수 있습니다. 아래의 예제는 주기적으로 서버 상태를 모니터링하고 이벤트를 로깅하는 스크립트입니다.

import psutil
import logging
import time

logging.basicConfig(filename='server.log', level=logging.INFO)

def monitor_server():
    while True:
        cpu_percent = psutil.cpu_percent()
        memory_percent = psutil.virtual_memory().percent
        disk_usage = psutil.disk_usage("/").percent
        
        if cpu_percent > 80:
            logging.warning("CPU 사용량이 높습니다!")
        
        if memory_percent > 90:
            logging.warning("메모리 사용량이 높습니다!")
        
        if disk_usage > 70:
            logging.warning("디스크 사용량이 높습니다!")
        
        time.sleep(60)  # 60초마다 상태 모니터링

monitor_server()

위의 코드는 60초마다 CPU 사용량, 메모리 사용량, 디스크 사용량을 모니터링하고, 설정한 임계치를 넘을 경우 해당 이벤트를 로그로 남깁니다.

이제 위의 스크립트를 리눅스 서버에 배치작업으로 등록하면 주기적으로 서버 상태를 모니터링하고 이벤트를 로깅하는 작업을 자동화할 수 있습니다.