2014-01-23 3 views
1

우리는 우리의 VM웨어 환경을 가지고 있으며, 할당 된 메모리 & CPU를 통해 dot net API를 찾을 수 있으며 CPU 및 메모리 사용률 (Max, Min, Avg)을 알고 싶습니다. 그러나 dot net api (VCloudSDK_V5_5)에서 메소드 또는 속성을 찾을 수 없습니다. 그래서 닷넷 코드 샘플을 사용하여 VMW 환경에서 메모리 사용률을 확인하십시오. & 나는 어디를 보았지만 찾을 수 없었습니다.도트 넷 API를 사용하여 VM웨어 환경에서 CPU 및 메모리 사용률을 찾는 방법?

모든 C# 코드 샘플?

http://vmware-gadget.googlecode.com/svn-history/r19/trunk/Vmware-Gadget/VmwareReader/VMPerfCounter.cs

우리는 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

이 유형의 모니터링을 수행하는 기능을 찾을 수있는 vSphere Guest API documentation을 보셔야합니다. DllImport 메서드를 사용하여 vmGuestLib.dll에 문서화 된 메서드의 별칭을 지정할 수 있습니다. C#에서 해당 메소드에 액세스하는 방법을 배우려면 Consuming Unmanaged DLL Functions을 읽고 DllImport에 대한 설명서를 읽어보십시오. 여기

VMGuestLib_OpenHandle, VMGuestLib_GetMemActiveMBVMGuestLib_CloseHandle 기능에 대한 예를 DllImport 정의입니다 :

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); 
+0

을 생각합니다. C# 코드 샘플을 제공해 주시겠습니까? – Rajesh

+0

유용한 정보, API 문서 또는 C#을 사용하여 API를 사용하지 않은 내용은 무엇입니까? – Preston

+0

@ Preston-- 우리는 C#으로 API를 사용하는 것에 대한 정보를 찾지 못했습니다. – Rajesh

1

Here are some decent API docs

내가 실제로 단지 유사한 프로젝트 나 자신에 시작하고, 나는으로 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; 
관련 문제