我正在寻找 ESX/ESXi 特定命令/示例 pyvmomi API 以确定虚拟机管理程序上的系统内存信息 - 空闲/总计/已使用。
问问题
4713 次
3 回答
5
运行 ESXi 主机命令
vsish -e get /memory/comprehensive
原始输出
Comprehensive {
Physical memory estimate:12454784 KB
Given to VMKernel:12454784 KB
Reliable memory:0 KB
Discarded by VMKernel:1580 KB
Mmap critical space:0 KB
Mmap buddy overhead:3084 KB
Kernel code region:18432 KB
Kernel data and heap:14336 KB
Other kernel:1421360 KB
Non-kernel:120036 KB
Reserved memory at low addresses:59900 KB
Free:10875956 KB
}
格式
vsish -e get /memory/comprehensive | sed 's/:/ /' | awk '
/Phys/ { phys = $(NF-1); units = $NF; width = length(phys) }
/Free/ { free = $(NF-1) }
END { print width, units, phys, phys-free, free }' |
while read width units phys used free; do
printf "Phys %*d %s\n" $width $phys $units
printf "Used %*d %s\n" $width $used $units
printf "Free %*d %s\n" $width $free $units
done
输出
Phys 12454784 KB
Used 1580564 KB
Free 10874220 KB
于 2020-03-21T18:45:02.143 回答
1
由于问题标题中还提到了 CLI,我将添加如何通过 ESXi 的命令行检索内存使用情况。我使用的是 ESXi 6.7,但这应该从 ESX 4.0 版本开始工作,因为只有性能收集在 ESXi 主机上运行。
在 ESXi SSH 会话中运行以下命令以收集性能数据:
# Source: https://kb.vmware.com/s/article/1004953 esxtop -b -n 1 > /tmp/perf.csv
SCP 将性能数据传输到 Linux 机器。
在包含 perf.csv 的文件夹中的 Linux 终端中运行以下脚本:
printf "Total Memory: "; \ line_overall_mem="$(head -1 perf.csv | tr "," "\12" | grep -in "Machine MBytes" | cut -d ":" -f1)"; \ tail -1 perf.csv | tr "," "\12" | sed -n "${line_overall_mem}p" | sed 's/"//g'; \ printf "Free Memory: "; \ line_free_mem="$(head -1 perf.csv | tr "," "\12" | grep -in 'Memory\\Free MBytes' | cut -d ":" -f1)"; \ tail -1 perf.csv | tr "," "\12" | sed -n "${line_free_mem}p" | sed 's/"//g'
输出应该是这样的:
Total Memory: 24566 Free Memory: 7519
我有几个运行 6.7 U2 的免费 ESXi。VMware 的硬件兼容性列表实际上表明我的硬件仅与 ESXi 4.1 兼容,但它们仍然运行良好。
我每天一次将上述信息和更多信息自动写入 NFS 共享。从 NFS 共享信息通过 Linux VM Web 服务器发布。
于 2019-11-19T22:16:44.357 回答
0
我在以下位置找到了答案:
https://gist.github.com/deviantony/5eff8d5c216c954973e2
具体来说,这些行:
memoryCapacity = hardware.memorySize
memoryCapacityInMB = hardware.memorySize/MBFACTOR
memoryUsage = stats.overallMemoryUsage
freeMemoryPercentage = 100 - (
(float(memoryUsage) / memoryCapacityInMB) * 100
)
于 2017-03-22T05:29:44.260 回答