[파이썬] 파이썬을 활용한 리눅스 서버 모니터링 데이터 시각화

리눅스 서버를 운영 중인 경우 서버 상태 및 성능을 모니터링하는 것은 매우 중요합니다. 서버의 성능 문제를 사전에 파악하고 조치를 취할 수 있다면 장애를 예방하고 서비스 품질을 유지할 수 있습니다. 이러한 서버 모니터링 데이터를 시각화해보면 훨씬 더 직관적으로 분석할 수 있으며, 문제 발견 및 해결에 도움이 됩니다.

여기에서는 파이썬을 사용하여 리눅스 서버 모니터링 데이터를 수집하고, 이를 시각화하는 간단한 예제를 살펴보겠습니다.

1. 필요한 라이브러리 설치하기

먼저, 데이터 시각화에 필요한 파이썬 패키지를 설치해야 합니다. 여기에서는 pandas, matplotlib와 같은 라이브러리를 사용할 예정입니다.

pip install pandas matplotlib

2. 서버 모니터링 데이터 수집하기

서버 모니터링 데이터를 수집하기 위해서는 적절한 도구를 사용해야 합니다. 예를 들어, vmstat 명령을 사용하여 CPU, 메모리, 디스크, 네트워크 등의 데이터를 수집할 수 있습니다.

import subprocess
import pandas as pd

# 서버 모니터링 데이터 수집
result = subprocess.run("vmstat", stdout=subprocess.PIPE, shell=True)
output = result.stdout.decode("utf-8")

# 데이터를 pandas DataFrame 형태로 변환
data = []
lines = output.split("\n")
for line in lines[2:]:
    values = line.split()
    if len(values) == 18:
        data.append(values)

df = pd.DataFrame(data, columns=["procs_r", "procs_b", "mem_swapd", "mem_free", "mem_buff", "mem_cache", "swap_si", "swap_so", "io_bi", "io_bo", "system_in", "system_cs", "cpu_us", "cpu_sy", "cpu_id", "cpu_wa", "cpu_st", "timestamp"])

위의 예제에서는 vmstat 명령을 실행하여 출력을 얻고, 이를 문자열로 변환합니다. 이후 데이터를 파싱하여 pandas DataFrame에 저장합니다.

3. 데이터 시각화하기

서버 모니터링 데이터를 시각화하기 위해, matplotlib를 사용합니다. 여기에서는 CPU 사용률, 메모리 사용량 등의 데이터를 선 그래프로 표현해보겠습니다.

import matplotlib.pyplot as plt

# CPU 사용률 시각화
plt.figure(figsize=(12, 6))
plt.plot(df["timestamp"], df["cpu_us"], label="CPU Usage")
plt.plot(df["timestamp"], df["cpu_sy"], label="CPU System")
plt.plot(df["timestamp"], df["cpu_id"], label="CPU Idle")
plt.xlabel("Timestamp")
plt.ylabel("Percentage")
plt.title("CPU Usage")
plt.legend()
plt.show()

# 메모리 사용량 시각화
plt.figure(figsize=(12, 6))
plt.plot(df["timestamp"], df["mem_free"], label="Free Memory")
plt.plot(df["timestamp"], df["mem_buff"], label="Buffer Memory")
plt.plot(df["timestamp"], df["mem_cache"], label="Cache Memory")
plt.xlabel("Timestamp")
plt.ylabel("Memory (KB)")
plt.title("Memory Usage")
plt.legend()
plt.show()

위의 코드에서는 matplotlib를 사용하여 CPU 사용률과 메모리 사용량을 선 그래프로 표현합니다. 그래프는 각각 plt.plot() 메서드를 사용하여 그립니다. plt.xlabel(), plt.ylabel(), plt.title(), plt.legend() 등의 함수를 사용하여 제목과 축 레이블을 설정하고, 각각의 그래프는 plt.show()를 통해 표시됩니다.

결론

이번 예제에서는 파이썬을 활용하여 리눅스 서버 모니터링 데이터를 수집하고, 이를 시각화하는 방법을 살펴보았습니다. 이러한 데이터 시각화를 통해 서버의 성능과 상태를 직관적으로 파악할 수 있으며, 유연하게 분석하고 문제를 해결할 수 있습니다. 파이썬과 관련 라이브러리를 적절히 활용하여 서버 모니터링을 보완하고, 안정적인 서비스 운영을 지원할 수 있습니다.