host-metrics-disk
/dev/shm/vhostmd0
256
1024
15
60
/bin:/sbin:/usr/bin:/usr/sbin:/usr/share/vhostmd/scripts
vbd
virtio
HostName
hostname
Time
date +%s
VirtualizationVendor
rpm -q --queryformat "%{VENDOR}\n" libvirt | sort -u
VirtProductInfo
virsh -r CONNECT version \
|awk -F ':' '
function mkvarnam(s) { # UPPER_CASE_UNDERSCORE
sub("(^[[:space:]]+|[[:space:]]+$)", "", s); # trim
gsub("[[:space:]]+", "_", s); s = toupper(s);
return s;
}
function filt_phys(s, sep, num, unit) { # 42.0 KM
sub("(^[[:space:]]+|[[:space:]]+$)", "", s); # trim
if ( s ~ /^[0-9]*\.?[0-9]+[[:space:]]*[[:alpha:]]+$/ )
{
num = s; unit = s;
sub("[[:space:]]*[[:alpha:]]+$", "", num);
sub("^[0-9]*[.]?[0-9]+[[:space:]]*", "", unit);
return num sep toupper(unit);
}
else
{
return s;
}
}
/:/ {
d1 = substr($0, 1, index($0, ":") - 1);
rest = substr($0, index($0, ":") + 1);
printf("%s:%s\n", mkvarnam(d1), filt_phys(rest, ":"));
}' \
| awk -F: '$1 == "USING_API" { print $2; }'
HostSystemInfo
hostname -s
NumberOfPhysicalCPUs
virsh -r CONNECT nodeinfo \
|awk -F ':' '
function mkvarnam(s) { # UPPER_CASE_UNDERSCORE
sub("(^[[:space:]]+|[[:space:]]+$)", "", s); # trim
gsub("[[:space:]]+", "_", s); s = toupper(s);
return s;
}
function filt_phys(s, sep, num, unit) { # 42.0 KM
sub("(^[[:space:]]+|[[:space:]]+$)", "", s); # trim
if ( s ~ /^[0-9]*\.?[0-9]+[[:space:]]*[[:alpha:]]+$/ )
{
num = s; unit = s;
sub("[[:space:]]*[[:alpha:]]+$", "", num);
sub("^[0-9]*[.]?[0-9]+[[:space:]]*", "", unit);
return num sep toupper(unit);
}
else
{
return s;
}
}
/:/ {
d1 = substr($0, 1, index($0, ":") - 1);
rest = substr($0, index($0, ":") + 1);
printf("%s:%s\n", mkvarnam(d1), filt_phys(rest, ":"));
}' \
| awk -F: '$1 == "CPU(S)" { print $2; }'
MemoryAllocatedToVirtualServers
free|egrep -i '^[[:space:]]*(Mem:)' \
| awk 'BEGIN { sum = 0; }
{ sum += $3; }
END { printf "%d\n", sum/1024; }'
FreePhysicalMemory
free|egrep -i '^[[:space:]]*(Mem:)' \
| awk 'BEGIN { sum = 0; }
{ sum += $4; }
END { printf "%d\n", sum/1024; }'
FreeVirtualMemory
free|egrep -i '^[[:space:]]*(Mem:|Swap:)' \
| awk 'BEGIN { sum = 0; }
{ sum += $4; }
END { printf "%d\n", sum/1024; }'
UsedVirtualMemory
free|egrep -i '^[[:space:]]*(Mem:|Swap:)' \
| awk 'BEGIN { sum = 0; }
{ sum += $3; }
END { printf "%d\n", sum/1024; }'
PagedInMemory
vmstat -s | awk 'BEGIN {
cmd = "getconf PAGESIZE";
cmd | getline pagesize;
close(cmd);
}
/pages swapped in/ {
printf "%d\n", $1 / 1024 * pagesize / 1024;
}'
PagedOutMemory
vmstat -s | awk 'BEGIN {
cmd = "getconf PAGESIZE";
cmd | getline pagesize;
close(cmd);
}
/pages swapped out/ {
printf "%d\n", $1 / 1024 * pagesize / 1024;
}'
TotalCPUTime
awk '
function user_hz( hz)
{
cmd = "getconf CLK_TCK";
cmd | getline;
hz = $1;
close(cmd);
return hz;
}
BEGIN {
USER_HZ = user_hz();
TotalCPUTime = 0;
while ( 0 < ( getline < "/proc/stat" ) )
{
if ( "cpu" == $1 )
{
TotalCPUTime = $2 + $3 + $4;
break;
}
}
close("/proc/stat");
#printf "USER_HZ = %d\n", USER_HZ | "cat 1>&2";
TotalCPUTime /= USER_HZ;
printf "%f\n", TotalCPUTime;
#close("cat 1>&2");
}'
TotalCPUTime
virsh -r CONNECT dominfo NAME \
|awk -F ':' '
function mkvarnam(s) { # UPPER_CASE_UNDERSCORE
sub("(^[[:space:]]+|[[:space:]]+$)", "", s); # trim
gsub("[[:space:]]+", "_", s); s = toupper(s);
return s;
}
function filt_phys(s, sep, num, unit) { # 42.0 KM
sub("(^[[:space:]]+|[[:space:]]+$)", "", s); # trim
if ( s ~ /^[0-9]*\.?[0-9]+[[:space:]]*[[:alpha:]]+$/ )
{
num = s; unit = s;
sub("[[:space:]]*[[:alpha:]]+$", "", num);
sub("^[0-9]*[.]?[0-9]+[[:space:]]*", "", unit);
return num sep toupper(unit);
}
else
{
return s;
}
}
/:/ {
d1 = substr($0, 1, index($0, ":") - 1);
rest = substr($0, index($0, ":") + 1);
printf("%s:%s\n", mkvarnam(d1), filt_phys(rest, ":"));
}' \
| awk -F: '$1 == "CPU_TIME" { print $2; }'
ResourceProcessorLimit
virsh -r CONNECT dominfo NAME \
|awk -F ':' '
function mkvarnam(s) { # UPPER_CASE_UNDERSCORE
sub("(^[[:space:]]+|[[:space:]]+$)", "", s); # trim
gsub("[[:space:]]+", "_", s); s = toupper(s);
return s;
}
function filt_phys(s, sep, num, unit) { # 42.0 KM
sub("(^[[:space:]]+|[[:space:]]+$)", "", s); # trim
if ( s ~ /^[0-9]*\.?[0-9]+[[:space:]]*[[:alpha:]]+$/ )
{
num = s; unit = s;
sub("[[:space:]]*[[:alpha:]]+$", "", num);
sub("^[0-9]*[.]?[0-9]+[[:space:]]*", "", unit);
return num sep toupper(unit);
}
else
{
return s;
}
}
/:/ {
d1 = substr($0, 1, index($0, ":") - 1);
rest = substr($0, index($0, ":") + 1);
printf("%s:%s\n", mkvarnam(d1), filt_phys(rest, ":"));
}' \
| awk -F: '$1 == "CPU(S)" { print $2; }'
ResourceMemoryLimit
virsh -r CONNECT dominfo NAME \
|awk -F ':' '
function mkvarnam(s) { # UPPER_CASE_UNDERSCORE
sub("(^[[:space:]]+|[[:space:]]+$)", "", s); # trim
gsub("[[:space:]]+", "_", s); s = toupper(s);
return s;
}
function filt_phys(s, sep, num, unit) { # 42.0 KM
sub("(^[[:space:]]+|[[:space:]]+$)", "", s); # trim
if ( s ~ /^[0-9]*\.?[0-9]+[[:space:]]*[[:alpha:]]+$/ )
{
num = s; unit = s;
sub("[[:space:]]*[[:alpha:]]+$", "", num);
sub("^[0-9]*[.]?[0-9]+[[:space:]]*", "", unit);
return num sep toupper(unit);
}
else
{
return s;
}
}
/:/ {
d1 = substr($0, 1, index($0, ":") - 1);
rest = substr($0, index($0, ":") + 1);
printf("%s:%s\n", mkvarnam(d1), filt_phys(rest, ":"));
}' \
| awk -F: '$1 == "MAX_MEMORY" { print int($2/1024); }'
PhysicalMemoryAllocatedToVirtualSystem
virsh -r CONNECT dominfo NAME \
|awk -F ':' '
function mkvarnam(s) { # UPPER_CASE_UNDERSCORE
sub("(^[[:space:]]+|[[:space:]]+$)", "", s); # trim
gsub("[[:space:]]+", "_", s); s = toupper(s);
return s;
}
function filt_phys(s, sep, num, unit) { # 42.0 KM
sub("(^[[:space:]]+|[[:space:]]+$)", "", s); # trim
if ( s ~ /^[0-9]*\.?[0-9]+[[:space:]]*[[:alpha:]]+$/ )
{
num = s; unit = s;
sub("[[:space:]]*[[:alpha:]]+$", "", num);
sub("^[0-9]*[.]?[0-9]+[[:space:]]*", "", unit);
return num sep toupper(unit);
}
else
{
return s;
}
}
/:/ {
d1 = substr($0, 1, index($0, ":") - 1);
rest = substr($0, index($0, ":") + 1);
printf("%s:%s\n", mkvarnam(d1), filt_phys(rest, ":"));
}' \
| awk -F: '$1 == "USED_MEMORY" { print int($2/1024); }'