Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import gradio as gr
- import psutil
- import subprocess
- import os
- import threading
- import time
- def get_cpu_load():
- load1, load5, load15 = os.getloadavg()
- return f"1 min: {load1:.2f}, 5 min: {load5:.2f}, 15 min: {load15:.2f}"
- def get_cpu_utilization():
- return f"{psutil.cpu_percent(interval=1):.2f} %"
- def get_top_processes_by_ram():
- processes = sorted(psutil.process_iter(['pid', 'name', 'memory_info']), key=lambda p: p.info['memory_info'].rss, reverse=True)[:5]
- return "\n".join([f"{p.info['name']} (PID: {p.info['pid']}): {p.info['memory_info'].rss / (1024 ** 2):.2f} MB" for p in processes])
- def get_top_processes_by_cpu():
- processes = sorted(psutil.process_iter(['pid', 'name', 'cpu_percent']), key=lambda p: p.info['cpu_percent'], reverse=True)[:5]
- return "\n".join([f"{p.info['name']} (PID: {p.info['pid']}): {p.info['cpu_percent']:.2f} %" for p in processes])
- def get_disk_partitions():
- partitions = psutil.disk_partitions()
- usage = [psutil.disk_usage(part.mountpoint) for part in partitions]
- return "\n".join([f"{part.device}: {use.percent:.2f} % used" for part, use in zip(partitions, usage)])
- def get_kvm_machines():
- command = 'echo "mypasswordyo" | sudo -S virsh list --all'
- result = subprocess.run(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
- return result.stdout
- def ping_test():
- response = os.system("ping -c 1 1.1.1.1 > /dev/null 2>&1")
- return "Connected" if response == 0 else "Not Connected"
- internet_status = "Unknown"
- def update_internet_connectivity():
- global internet_status
- while True:
- internet_status = ping_test()
- time.sleep(60)
- threading.Thread(target=update_internet_connectivity, daemon=True).start()
- with gr.Blocks() as demo:
- gr.Markdown("# Server Metrics Dashboard")
- with gr.Row():
- with gr.Column():
- gr.Markdown("## CPU Load (1/5/15 min)")
- cpu_load = gr.Textbox(label="CPU Load", interactive=False)
- with gr.Column():
- gr.Markdown("## CPU Utilization")
- cpu_utilization = gr.Textbox(label="CPU Utilization", interactive=False)
- with gr.Column():
- gr.Markdown("## Top Processes by RAM")
- processes_by_ram = gr.Textbox(label="Processes by RAM", interactive=False)
- with gr.Column():
- gr.Markdown("## Top Processes by CPU")
- processes_by_cpu = gr.Textbox(label="Processes by CPU", interactive=False)
- with gr.Column():
- gr.Markdown("## Disk Partitions")
- disk_partitions = gr.Textbox(label="Disk Partitions", interactive=False)
- with gr.Column():
- gr.Markdown("## KVM Machines")
- kvm_machines = gr.Textbox(label="KVM Machines", interactive=False)
- with gr.Column():
- gr.Markdown("## Internet Connectivity")
- internet_connectivity = gr.Textbox(label="Internet Connectivity", interactive=False)
- def update_metrics():
- return (
- get_cpu_load(),
- get_cpu_utilization(),
- get_top_processes_by_ram(),
- get_top_processes_by_cpu(),
- get_disk_partitions(),
- get_kvm_machines(),
- internet_status
- )
- demo.load(update_metrics, inputs=[], outputs=[
- cpu_load,
- cpu_utilization,
- processes_by_ram,
- processes_by_cpu,
- disk_partitions,
- kvm_machines,
- internet_connectivity
- ], every=5)
- demo.launch(server_name="0.0.0.0", server_port=7860)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement