Advertisement
zerof3565

Untitled

May 24th, 2024
377
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.57 KB | Source Code | 0 0
  1. import gradio as gr
  2. import psutil
  3. import subprocess
  4. import os
  5. import threading
  6. import time
  7.  
  8. def get_cpu_load():
  9.     load1, load5, load15 = os.getloadavg()
  10.     return f"1 min: {load1:.2f}, 5 min: {load5:.2f}, 15 min: {load15:.2f}"
  11.  
  12. def get_cpu_utilization():
  13.     return f"{psutil.cpu_percent(interval=1):.2f} %"
  14.  
  15. def get_top_processes_by_ram():
  16.     processes = sorted(psutil.process_iter(['pid', 'name', 'memory_info']), key=lambda p: p.info['memory_info'].rss, reverse=True)[:5]
  17.     return "\n".join([f"{p.info['name']} (PID: {p.info['pid']}): {p.info['memory_info'].rss / (1024 ** 2):.2f} MB" for p in processes])
  18.  
  19. def get_top_processes_by_cpu():
  20.     processes = sorted(psutil.process_iter(['pid', 'name', 'cpu_percent']), key=lambda p: p.info['cpu_percent'], reverse=True)[:5]
  21.     return "\n".join([f"{p.info['name']} (PID: {p.info['pid']}): {p.info['cpu_percent']:.2f} %" for p in processes])
  22.  
  23. def get_disk_partitions():
  24.     partitions = psutil.disk_partitions()
  25.     usage = [psutil.disk_usage(part.mountpoint) for part in partitions]
  26.     return "\n".join([f"{part.device}: {use.percent:.2f} % used" for part, use in zip(partitions, usage)])
  27.  
  28. def get_kvm_machines():
  29.     command = 'echo "mypasswordyo" | sudo -S virsh list --all'
  30.     result = subprocess.run(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
  31.     return result.stdout
  32.  
  33. def ping_test():
  34.     response = os.system("ping -c 1 1.1.1.1 > /dev/null 2>&1")
  35.     return "Connected" if response == 0 else "Not Connected"
  36.  
  37. internet_status = "Unknown"
  38.  
  39. def update_internet_connectivity():
  40.     global internet_status
  41.     while True:
  42.         internet_status = ping_test()
  43.         time.sleep(60)
  44.  
  45. threading.Thread(target=update_internet_connectivity, daemon=True).start()
  46.  
  47. with gr.Blocks() as demo:
  48.     gr.Markdown("# Server Metrics Dashboard")
  49.  
  50.     with gr.Row():
  51.         with gr.Column():
  52.             gr.Markdown("## CPU Load (1/5/15 min)")
  53.             cpu_load = gr.Textbox(label="CPU Load", interactive=False)
  54.  
  55.         with gr.Column():
  56.             gr.Markdown("## CPU Utilization")
  57.             cpu_utilization = gr.Textbox(label="CPU Utilization", interactive=False)
  58.  
  59.         with gr.Column():
  60.             gr.Markdown("## Top Processes by RAM")
  61.             processes_by_ram = gr.Textbox(label="Processes by RAM", interactive=False)
  62.  
  63.         with gr.Column():
  64.             gr.Markdown("## Top Processes by CPU")
  65.             processes_by_cpu = gr.Textbox(label="Processes by CPU", interactive=False)
  66.  
  67.         with gr.Column():
  68.             gr.Markdown("## Disk Partitions")
  69.             disk_partitions = gr.Textbox(label="Disk Partitions", interactive=False)
  70.  
  71.         with gr.Column():
  72.             gr.Markdown("## KVM Machines")
  73.             kvm_machines = gr.Textbox(label="KVM Machines", interactive=False)
  74.  
  75.         with gr.Column():
  76.             gr.Markdown("## Internet Connectivity")
  77.             internet_connectivity = gr.Textbox(label="Internet Connectivity", interactive=False)
  78.  
  79.     def update_metrics():
  80.         return (
  81.             get_cpu_load(),
  82.             get_cpu_utilization(),
  83.             get_top_processes_by_ram(),
  84.             get_top_processes_by_cpu(),
  85.             get_disk_partitions(),
  86.             get_kvm_machines(),
  87.             internet_status
  88.         )
  89.  
  90.     demo.load(update_metrics, inputs=[], outputs=[
  91.         cpu_load,
  92.         cpu_utilization,
  93.         processes_by_ram,
  94.         processes_by_cpu,
  95.         disk_partitions,
  96.         kvm_machines,
  97.         internet_connectivity
  98.     ], every=5)
  99.  
  100. demo.launch(server_name="0.0.0.0", server_port=7860)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement