List disk usage for all mount points.

This commit is contained in:
grossmj 2021-09-02 15:43:38 +09:30
parent 45e0cbeca2
commit a2367d3c04
3 changed files with 35 additions and 13 deletions

View File

@ -55,6 +55,9 @@ password = gns3
; Do not forget to allow virbr0 in order for the NAT node to work
allowed_interfaces = eth0,eth1,virbr0
; Only allow these mount points to be listed for statistics
allowed_mountpoints = /opt,/home
; Specify the NAT interface to be used by the NAT node
; Default is virbr0 on Linux (requires libvirt) and vmnet8 for other platforms (requires VMware)
default_nat_interface = vmnet10

View File

@ -61,20 +61,39 @@ class ServerHandler:
load_average_percent = [int(x / psutil.cpu_count() * 100) for x in psutil.getloadavg()]
memory_percent = int(psutil.virtual_memory().percent)
swap_percent = int(psutil.swap_memory().percent)
disk_usage_percent = int(psutil.disk_usage('/').percent)
disk_usage_percent = []
allowed_mountpoints = Config.instance().get_section_config("Server").get("allowed_mountpoints", None)
if allowed_mountpoints:
allowed_mountpoints = allowed_mountpoints.split(',')
for partition in psutil.disk_partitions(all=False):
# ignore squashfs partitions or partitions with no fstype or containing 'cdrom' in options.
if not partition.fstype or partition.fstype == "squashfs" or 'cdrom' in partition.opts:
continue
if allowed_mountpoints and partition.mountpoint not in allowed_mountpoints:
continue
partition_disk_usage_percent = int(psutil.disk_usage(partition.mountpoint).percent)
disk_usage_percent.append(
{
partition.mountpoint: partition_disk_usage_percent
}
)
except psutil.Error as e:
raise HTTPConflict(text="Psutil error detected: {}".format(e))
response.json({"memory_total": memory_total,
"memory_free": memory_free,
"memory_used": memory_used,
"swap_total": swap_total,
"swap_free": swap_free,
"swap_used": swap_used,
"cpu_usage_percent": cpu_percent,
"memory_usage_percent": memory_percent,
"swap_usage_percent": swap_percent,
"disk_usage_percent": disk_usage_percent,
"load_average_percent": load_average_percent})
response.json(
{
"memory_total": memory_total,
"memory_free": memory_free,
"memory_used": memory_used,
"swap_total": swap_total,
"swap_free": swap_free,
"swap_used": swap_used,
"cpu_usage_percent": cpu_percent,
"memory_usage_percent": memory_percent,
"swap_usage_percent": swap_percent,
"disk_usage_percent": disk_usage_percent,
"load_average_percent": load_average_percent
}
)
@Route.get(
r"/debug",

View File

@ -69,7 +69,7 @@ SERVER_STATISTICS_SCHEMA = {
},
"disk_usage_percent": {
"description": "Disk usage in percent",
"type": "integer",
"type": "array",
},
"load_average_percent": {
"description": "Average system load over the last 1, 5 and 15 minutes",