从客户操作系统进行性能监控

从客户操作系统进行性能监控

我想知道是否有任何工具可以在虚拟机内部使用,并且知道在虚拟化环境中工作。使用 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 的虚拟机管理程序,因此我无法查看可用的内容。

相关内容