403Webshell
Server IP : 213.136.93.164  /  Your IP : 216.73.216.20
Web Server : Apache
System : Linux m14200.contabo.net 5.14.0-611.54.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Wed May 6 18:03:03 EDT 2026 x86_64
User : ki692510 ( 1047)
PHP Version : 7.4.33
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /lib/zabbix/agentscripts/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /lib/zabbix/agentscripts/vm_memory_overhead.sh
#!/bin/bash

set -o pipefail

############################################################################### VMs

vm_pids=$(find /proc/*/exe -lname /usr/bin/qemu-system-x86_64 2>/dev/null | cut -d'/' -f3)
vm_count=$(echo ${vm_pids} | xargs -n1 | wc -l)

vm_ram_sum=0
vm_swap_sum=0
vm_memory_sum=0

############################### START multiprocess function, access to smaps_rollup is slow
function process_vm() {
    local vm=$1
    proc_data=$(cat /proc/${vm}/smaps_rollup)
    ram=$(echo "${proc_data}" | grep -E "^Pss:\s+" | tr -cd '0-9')
    swap=$(echo "${proc_data}" | grep -E "^SwapPss:\s+" | tr -cd '0-9')

    echo "${ram} ${swap}"
}
export -f process_vm

while read ram swap; do
    vm_ram_sum=$((vm_ram_sum + ram))
    vm_swap_sum=$((vm_swap_sum + swap))
done <<<$(echo "${vm_pids}" | xargs -n 1 -P 40 bash -c 'process_vm "$0"')
############################### END multiprocess function

vm_memory_sum=$((vm_ram_sum + vm_swap_sum))
vm_memory_avg=$((vm_memory_sum / vm_count))

awk "BEGIN { printf \"%s,%.0f\n\", \"vm_ram_sum_bytes\", ${vm_ram_sum} * 1024}"
awk "BEGIN { printf \"%s,%f\n\", \"vm_ram_sum_gb\", ${vm_ram_sum} / 1024 / 1024}"
awk "BEGIN { printf \"%s,%.0f\n\", \"vm_swap_sum_bytes\", ${vm_swap_sum} * 1024}"
awk "BEGIN { printf \"%s,%f\n\", \"vm_swap_sum_gb\", ${vm_swap_sum} / 1024 / 1024}"
awk "BEGIN { printf \"%s,%.0f\n\", \"vm_memory_sum_bytes\", ${vm_memory_sum} * 1024}"
awk "BEGIN { printf \"%s,%f\n\", \"vm_memory_sum_gb\", ${vm_memory_sum} / 1024 / 1024}"
awk "BEGIN { printf \"%s,%.0f\n\", \"vm_memory_avg_bytes\", ${vm_memory_avg} * 1024}"
awk "BEGIN { printf \"%s,%f\n\", \"vm_memory_avg_gb\", ${vm_memory_avg} / 1024 / 1024}"

############################################################################### host overhead

host_ram_total=$(grep -E "^MemTotal:\s+" /proc/meminfo | tr -cd '0-9')
host_ram_avail=$(grep -E "^MemAvailable:\s+" /proc/meminfo | tr -cd '0-9')
host_ram_used=$((host_ram_total - host_ram_avail))

host_swap_total=$(grep -E "^SwapTotal:\s+" /proc/meminfo | tr -cd '0-9')
host_swap_free=$(grep -E "^SwapFree:\s+" /proc/meminfo | tr -cd '0-9')
host_swap_used=$((host_swap_total - host_swap_free))

host_memory_used=$((host_ram_used + host_swap_used))

host_overhead=$((host_memory_used - vm_memory_sum))

awk "BEGIN { printf \"%s,%.0f\n\", \"host_memory_overhead_bytes\", ${host_overhead} * 1024}"
awk "BEGIN { printf \"%s,%f\n\", \"host_memory_overhead_gb\", ${host_overhead} / 1024 / 1024}"

Youez - 2016 - github.com/yon3zu
LinuXploit