| import streamlit as st |
| import psutil |
| import speedtest |
| import plotly.graph_objects as go |
| import time |
|
|
| |
| def get_system_metrics(): |
| cpu_usage = psutil.cpu_percent(interval=1) |
| memory_info = psutil.virtual_memory() |
| memory_usage = memory_info.percent |
| return cpu_usage, memory_usage |
|
|
| |
| def get_internet_speed(): |
| st = speedtest.Speedtest() |
| download_speed = st.download() / 1_000_000 |
| upload_speed = st.upload() / 1_000_000 |
| return download_speed, upload_speed |
|
|
| |
| def create_gauge_chart(value, title, min_value=0, max_value=100): |
| fig = go.Figure(go.Indicator( |
| mode="gauge+number", |
| value=value, |
| title={'text': title}, |
| gauge={'axis': {'range': [min_value, max_value]}, |
| 'bar': {'color': "lightblue"}, |
| 'bgcolor': "white", |
| 'steps': [{'range': [min_value, max_value], 'color': "lightgrey"}], |
| 'threshold': {'line': {'color': "red", 'width': 4}, 'thickness': 0.75, 'value': max_value}})) |
| return fig |
|
|
| |
| st.title("System Monitoring Dashboard") |
|
|
| |
| col1, col2 = st.columns(2) |
| col3, col4 = st.columns(2) |
|
|
| |
| while True: |
| cpu_usage, memory_usage = get_system_metrics() |
| download_speed, upload_speed = get_internet_speed() |
|
|
| |
| with col1: |
| st.plotly_chart(create_gauge_chart(cpu_usage, "CPU Usage"), use_container_width=True) |
| with col2: |
| st.plotly_chart(create_gauge_chart(memory_usage, "Memory Usage"), use_container_width=True) |
| with col3: |
| st.plotly_chart(create_gauge_chart(download_speed, "Download Speed (Mbps)", 0, 1000), use_container_width=True) |
| with col4: |
| st.plotly_chart(create_gauge_chart(upload_speed, "Upload Speed (Mbps)", 0, 1000), use_container_width=True) |
|
|
| |
| time.sleep(5) |
|
|