[파이썬] 자동화된 리눅스 서버 모니터링과 보고서 생성

리눅스 서버의 모니터링과 보고서 작성은 시스템 관리자에게 매우 중요한 작업입니다. 하지만 이러한 작업은 반복적이고 번거로운 부분들이 많아 자동화되는 것이 바람직합니다. 이 글에서는 Python을 사용하여 자동화된 리눅스 서버 모니터링과 보고서 생성을 구현하는 방법에 대해 알아보겠습니다.

필요한 라이브러리 설치

자동화된 리눅스 서버 모니터링을 위해 다음과 같은 라이브러리들을 설치해야 합니다.

pip install psutil paramiko

SSH 연결 설정

서버에 SSH로 연결하기 위해서는 SSH 연결 정보가 필요합니다. 다음과 같은 정보를 가지고 SSH 연결을 설정합니다.

import paramiko

hostname = '서버 IP 주소'
port = 22
username = '사용자명'
password = '비밀번호'

client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(hostname=hostname, port=port, username=username, password=password)

서버 모니터링 및 보고서 생성

이제 SSH 연결이 설정되었으므로, 서버의 모니터링 정보를 얻고 보고서를 생성하는 함수를 작성해보겠습니다.

import psutil

def get_server_status(client):
    # CPU 사용률 조회
    cpu_usage = psutil.cpu_percent(interval=1)

    # 메모리 사용량 조회
    mem = psutil.virtual_memory()
    mem_usage = mem.used / mem.total * 100

    # 디스크 사용률 조회
    disk = psutil.disk_usage('/')
    disk_usage = disk.used / disk.total * 100

    # 네트워크 사용량 조회
    net = psutil.net_io_counters()
    net_usage = net.bytes_recv + net.bytes_sent

    # 결과 출력
    print(f"CPU 사용률: {cpu_usage}%")
    print(f"메모리 사용량: {mem_usage}%")
    print(f"디스크 사용률: {disk_usage}%")
    print(f"네트워크 사용량: {net_usage} bytes")

def generate_report(client):
    # 모니터링 정보 조회
    get_server_status(client)

    # 보고서 생성
    report = f"""
    서버 모니터링 보고서
    -------------------
    CPU 사용률: {cpu_usage}%
    메모리 사용량: {mem_usage}%
    디스크 사용률: {disk_usage}%
    네트워크 사용량: {net_usage} bytes
    """

    # 보고서 출력
    print(report)

# 서버 모니터링 및 보고서 생성
generate_report(client)

이제 위의 코드를 실행하면 서버 모니터링 정보를 얻고 보고서를 생성할 수 있습니다.

자동화

매일 동일한 시간에 서버 모니터링과 보고서 생성 작업을 수행하는 것은 번거로운 작업입니다. Python의 schedule 라이브러리를 활용하여 작업을 자동화할 수 있습니다.

import schedule
import time

def job():
    # 서버 모니터링 및 보고서 생성
    generate_report(client)

# 매일 10시에 job 함수 실행
schedule.every().day.at("10:00").do(job)

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

이제 마지막으로 schedule 라이브러리를 사용하여 매일 동일한 시간에 자동으로 서버 모니터링과 보고서 생성 작업을 실행할 수 있습니다.

자동화된 리눅스 서버 모니터링과 보고서 생성은 시스템 관리 작업을 효율적으로 수행하는 데 도움이 됩니다. Python을 사용하여 필요한 정보를 얻고 보고서를 생성하는 방법을 익혀두면 서버 관리의 효율성을 높일 수 있습니다.