我们有我们的vmware环境,从中我们可以找到分配的内存和放大器。 CPU通过dot net API,我们也想了解它的CPU和内存利用率(Max,Min,Avg)。 但是,我们无法在dot net api中找到任何方法或属性(VCloudSDK_V5_5) 所以,我需要点网络代码示例来找出cpu& vmware环境中的内存利用率。 我看着每个地方,但我无法找到。
任何C#代码示例?
我们正在尝试使用此代码:
我们实现了一个引用VimService dll的示例,但我们无法通过它进行连接。
我们收到错误:请求失败并显示错误消息...
错误在以下方法中联机(_sic = _service.RetrieveServiceContent(_svcRef);)
System.Net.ServicePointManager.CertificatePolicy = new Program();
//Gets service contents
_svcRef.type = "ServiceInstance";
_svcRef.Value = "ServiceInstance";
// _service is VimService
_service = new VimService();
_service.Url = url;
_service.CookieContainer = new CookieContainer();
// _sic is ServiceContent
_sic = _service.RetrieveServiceContent(_svcRef); // Error at this line
_service.LoginCompleted += new LoginCompletedEventHandler(_service_LoginCompleted);
_session = _service.Login(_sic.sessionManager, usid, pwd, null);
但是,没有错误消息。 任何人都可以帮忙吗?
答案 0 :(得分:1)
您应该查看vSphere Guest API documentation,您可以在此处找到执行此类监控的功能。您可以使用DllImport方法为vmGuestLib.dll
中记录的方法添加别名。要了解如何从C#中访问这些方法,请阅读Consuming Unmanaged DLL Functions并查看DllImport的文档。
以下是DllImport
,VMGuestLib_OpenHandle
和VMGuestLib_GetMemActiveMB
函数的VMGuestLib_CloseHandle
定义示例:
using System.Runtime.InteropServices;
public enum VMGuestLibError {
VMGUESTLIB_ERROR_SUCCESS = 0,
VMGUESTLIB_ERROR_OTHER,
VMGUESTLIB_ERROR_NOT_RUNNING_IN_VM,
VMGUESTLIB_ERROR_NOT_ENABLED,
VMGUESTLIB_ERROR_NOT_AVAILABLE,
VMGUESTLIB_ERROR_NO_INFO,
VMGUESTLIB_ERROR_MEMORY,
VMGUESTLIB_ERROR_BUFFER_TOO_SMALL,
VMGUESTLIB_ERROR_INVALID_HANDLE,
VMGUESTLIB_ERROR_INVALID_ARG,
VMGUESTLIB_ERROR_UNSUPPORTED_VERSION
};
[DllImport("vmGuestLib.dll")] public static extern VMGuestLibError VMGuestLib_OpenHandle(ref IntPtr handle);
[DllImport("vmGuestLib.dll")] public static extern VMGuestLibError VMGuestLib_GetMemActiveMB(IntPtr handle, ref UInt32 memActiveMB);
[DllImport("vmGuestLib.dll")] public static extern VMGuestLibError VMGuestLib_CloseHandle(IntPtr handle);
答案 1 :(得分:1)
我实际上自己刚刚开始了一个类似的项目,我能够使用this code sample作为一个起点。用户Coffeetocode提供了一个非常简单的演练,可以启动和运行.net api。
从那里,使用上述API文档查找各种成员名称。
例如:
string provisioned_disk_space = "" + ((vm.Summary.Storage.Uncommitted + vm.Summary.Storage.Committed) / 1073741824);
string used_disk_space = "" + (vm.Summary.Storage.Committed / 1073741824);
string number_of_cpus = "" + vm.Summary.Config.NumCpu;
string total_ram = "" + (vm.Summary.Config.MemorySizeMB/1024);
我认为你正在寻找的成员是
VirtualMachine.Summary.QuickStats.GuestMemoryUsage;
VirtualMachine.Summary.QuickStats.OverallCpuUsage;