Streamlit os cpu disk io network 사용률 모니터링
DB CAFE
thumb_up 추천메뉴 바로가기
- DBA { Oracle DBA 명령어 > DBA 초급 과정 > DBA 고급 과정 }
- 튜닝 { 오라클 튜닝 목록 }
- 모델링 { 데이터 모델링 가이드 }
Streamlit os cpu disk io network 사용률 모니터링[편집]
import streamlit as st
import psutil
import time
import pandas as pd
import plotly.express as px
import streamlit as st
import psutil
import time
import pandas as pd
# Streamlit 애플리케이션 타이틀 설정
st.title("System Monitoring Dashboard")
# 그래프 초기화
if 'cpu_data' not in st.session_state:
st.session_state.cpu_data = []
st.session_state.disk_io_data = []
st.session_state.net_io_data = []
# 그래프 업데이트 주기 설정 (초)
refresh_rate = 1 # 1초마다 업데이트
# 시스템 사용률을 계속 모니터링하여 실시간으로 표시하는 함수
def update_data():
# CPU 사용율
cpu_percent = psutil.cpu_percent(interval=0.5)
st.session_state.cpu_data.append(cpu_percent)
# Disk I/O
disk_io = psutil.disk_io_counters()
read_bytes = disk_io.read_bytes / (1024 * 1024) # MB 단위
write_bytes = disk_io.write_bytes / (1024 * 1024) # MB 단위
st.session_state.disk_io_data.append((read_bytes, write_bytes))
# Network I/O
net_io = psutil.net_io_counters()
bytes_sent = net_io.bytes_sent / (1024 * 1024) # MB 단위
bytes_recv = net_io.bytes_recv / (1024 * 1024) # MB 단위
st.session_state.net_io_data.append((bytes_sent, bytes_recv))
# 최근 60개의 데이터만 유지
if len(st.session_state.cpu_data) > 60:
st.session_state.cpu_data.pop(0)
st.session_state.disk_io_data.pop(0)
st.session_state.net_io_data.pop(0)
# 실시간으로 차트를 업데이트하는 함수
def plot_charts():
# CPU 사용률 차트
st.subheader("CPU Usage (%)")
cpu_chart = pd.DataFrame(st.session_state.cpu_data, columns=["CPU Usage"])
st.line_chart(cpu_chart)
# Disk I/O 차트
st.subheader("Disk I/O (MB)")
disk_io_chart = pd.DataFrame(st.session_state.disk_io_data, columns=["Read (MB)", "Write (MB)"])
st.line_chart(disk_io_chart)
# Network I/O 차트
st.subheader("Network I/O (MB)")
net_io_chart = pd.DataFrame(st.session_state.net_io_data, columns=["Bytes Sent (MB)", "Bytes Received (MB)"])
st.line_chart(net_io_chart)
# Streamlit 실시간 업데이트 루프
placeholder = st.empty() # 차트를 갱신할 공간을 미리 확보
while True:
update_data()
with placeholder.container(): # 같은 공간에 차트 갱신
plot_charts()
time.sleep(refresh_rate)