![从客户操作系统进行性能监控](https://linux22.com/image/504712/%E4%BB%8E%E5%AE%A2%E6%88%B7%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E8%BF%9B%E8%A1%8C%E6%80%A7%E8%83%BD%E7%9B%91%E6%8E%A7.png)
我想知道是否有任何工具可以在虚拟机内部使用,并且知道在虚拟化环境中工作。使用 Linux top 工具而不考虑 CPU 和内存设置的限制可能会有点误导。也许可以使用 VMTools 辅助收集一些有趣的数据?
答案1
从 VMware 客户机内部获取这些(及更多)性能计数器的唯一方法是使用 vmware-tools 附带的 VMGuestLib SDK。
我为这个库编写了一个 Python 包装器,名为 python-vmguestlib,以及一个工具 vmguest-stats 来访问这些计数器。现在有三个 Dstat 插件可以将这些性能计数器与其他系统资源关联起来。它很简单:
dstat -c –vm-cpu -m –vm-mem –vm-mem-adv
您可以在以下位置找到 python 包装器、vmguest-stats 工具和 Dstat:
欢迎反馈和改进!
答案2
不,截至目前,主机性能还无法从客户端获得。
如果您要进行性能监控,您将需要三个统计数据:
- 主机的最大值(例如 CPU 的运行速度)
- 其他客人的需求(有多少其他客人正在使用CPU,以及使用量是多少)
- 您的客户机的限制(因为 VMware 管理员可以通过设置限制来降低您的 CPU 速度)
其中有些部分可以在客户机级别获得(比如主机的 CPU 速度),但其他统计信息则不可以。
答案3
VMware 提供了 Perfmon 扩展,可让 Windows 客户机操作系统查看 ESX 主机性能计数器 - 您可以在VMware 的 Scott Drummond 撰写的这篇博文这里。
评论指出,目前还没有适用于 Linux 的等效产品,但如果您有开发人员,则可以使用 Guest SDK 在 Linux Guest 中提供相同的数据。
答案4
虚拟机的重点在于它不知道自己是虚拟机。虚拟机管理程序的工作是将底层硬件完全从虚拟机中抽象出来,让虚拟机感觉好像在物理硬件上运行。我们作为用户(比如 Tron)知道该机器是虚拟机,但虚拟机的内核(除了一些专门针对作为虚拟机运行的优化)不知道它是一个切片。
话虽如此,我们可能可以通过 SNMP 轮询 HV(这可能是典型 VM 的网关地址)来获取有关 HV 的某些信息,然后进行推断。不幸的是,我无法访问可以进行 snmpwalk 的虚拟机管理程序,因此我无法查看可用的内容。