1.WMI简介
WMI是英文Windows Management Instrumentation的简写,通过使用WMI,我们可以获取本地或远程服务器的性能参数和进程运行情况,以及大部分硬件信息,但前提是运行的用户要有足够的权限,如administrator组用户等。这也是做负载均衡所需要且比较方便快捷的途径。

2.使用时首先添加System.Management.dll,然后引用

服务器性能监控之WMI[转]using System.Management;

3.定义远程访问 

服务器性能监控之WMI[转]

4.获取CPU,内存,网络流量等信息

服务器性能监控之WMI[转]public class Monitor
服务器性能监控之WMI[转]服务器性能监控之WMI[转] ...{
服务器性能监控之WMI[转] private string username = "";
服务器性能监控之WMI[转] private string pwd ="";
服务器性能监控之WMI[转] private string ip = "";
服务器性能监控之WMI[转]        ManagementConnectPool mcp;
服务器性能监控之WMI[转]        WMSServerClass server;
服务器性能监控之WMI[转]
服务器性能监控之WMI[转]
服务器性能监控之WMI[转]服务器性能监控之WMI[转] public Monitor(string username,string pwd,string ip)...{
服务器性能监控之WMI[转] this.username = username;
服务器性能监控之WMI[转] this.pwd = pwd ;
服务器性能监控之WMI[转] this.ip = ip;
服务器性能监控之WMI[转]            mcp = new ManagementConnectPool(username,pwd,"\root\cimv2",ip);
服务器性能监控之WMI[转]            server = new WMSServerClass();
服务器性能监控之WMI[转]        }
服务器性能监控之WMI[转]
服务器性能监控之WMI[转]服务器性能监控之WMI[转] WMI方式获取网卡流量#region WMI方式获取网卡流量
服务器性能监控之WMI[转] private void getNetWorkFlow()
服务器性能监控之WMI[转]服务器性能监控之WMI[转] ...{
服务器性能监控之WMI[转]            ManagementObjectCollection moc = mcp.getQueryResult(@"select * from Win32_NetworkAdapter where macaddress<>null and manufacturer<>'Microsoft'");
服务器性能监控之WMI[转] string[] list = new string[moc.Count] ;
服务器性能监控之WMI[转] foreach(System.Management.ManagementObject mymac in moc)
服务器性能监控之WMI[转]服务器性能监控之WMI[转] ...{
服务器性能监控之WMI[转] string a =  mymac["Speed"].ToString();//null WMI未实现该属性
服务器性能监控之WMI[转]                Console.WriteLine(a.ToString());
服务器性能监控之WMI[转]            }
服务器性能监控之WMI[转]        }
服务器性能监控之WMI[转] #endregion
服务器性能监控之WMI[转]
服务器性能监控之WMI[转]服务器性能监控之WMI[转] WMI方式获取CPU信息#region WMI方式获取CPU信息
服务器性能监控之WMI[转] private void getCpuInfo()
服务器性能监控之WMI[转]服务器性能监控之WMI[转] ...{
服务器性能监控之WMI[转]            ManagementObjectCollection moc = mcp.getQueryResult("select * from Win32_Processor");
服务器性能监控之WMI[转] string[] list = new string[moc.Count];
服务器性能监控之WMI[转] int i = 0;
服务器性能监控之WMI[转] foreach(ManagementObject mo  in moc)
服务器性能监控之WMI[转]服务器性能监控之WMI[转] ...{   
服务器性能监控之WMI[转] string total = mo.GetPropertyValue("LoadPercentage").ToString();
服务器性能监控之WMI[转]                list[i]=total;
服务器性能监控之WMI[转]                i++;
服务器性能监控之WMI[转]            }
服务器性能监控之WMI[转]        }
服务器性能监控之WMI[转] #endregion
服务器性能监控之WMI[转]
服务器性能监控之WMI[转]服务器性能监控之WMI[转] WMI方式获取内存使用率#region WMI方式获取内存使用率
服务器性能监控之WMI[转] public string getMemoryUsage()
服务器性能监控之WMI[转]服务器性能监控之WMI[转] ...{
服务器性能监控之WMI[转]            ManagementObjectCollection moc = mcp.getQueryResult("select * from Win32_LogicalMemoryConfiguration");
服务器性能监控之WMI[转] int totalm = 1; int avilablem = 1;
服务器性能监控之WMI[转] foreach(ManagementObject mo  in moc)
服务器性能监控之WMI[转]服务器性能监控之WMI[转] ...{
服务器性能监控之WMI[转] string total = mo.GetPropertyValue("TotalPhysicalMemory").ToString();
服务器性能监控之WMI[转]                totalm = int.Parse(total);
服务器性能监控之WMI[转]            }
服务器性能监控之WMI[转]            moc = mcp.getQueryResult("select * from Win32_PerfRawData_PerfOS_Memory");
服务器性能监控之WMI[转] foreach(ManagementObject mo  in moc)
服务器性能监控之WMI[转]服务器性能监控之WMI[转] ...{
服务器性能监控之WMI[转] string avilable = mo.GetPropertyValue("AvailableKBytes").ToString();
服务器性能监控之WMI[转]                avilablem = int.Parse(avilable);
服务器性能监控之WMI[转]            }
服务器性能监控之WMI[转] int usedm = totalm - avilablem;
服务器性能监控之WMI[转] double memoryusage = (double)usedm * (double)100 / (double)totalm ;
服务器性能监控之WMI[转] return memoryusage.ToString();
服务器性能监控之WMI[转]        }
服务器性能监控之WMI[转] #endregion
服务器性能监控之WMI[转]}

5.获取本地机器信息(WEB)

服务器性能监控之WMI[转]服务器性能监控之WMI[转]1.如何用WMI获得指定磁盘的容量#region 1.如何用WMI获得指定磁盘的容量
服务器性能监控之WMI[转] private string DriveType(string type)
服务器性能监控之WMI[转]服务器性能监控之WMI[转] ...{
服务器性能监控之WMI[转] string rtntype="";
服务器性能监控之WMI[转] switch (type)
服务器性能监控之WMI[转]服务器性能监控之WMI[转] ...{
服务器性能监控之WMI[转] case "1":
服务器性能监控之WMI[转]                     rtntype="Not Type";
服务器性能监控之WMI[转] break;
服务器性能监控之WMI[转] case "2":
服务器性能监控之WMI[转]                     rtntype="Floppy disk";
服务器性能监控之WMI[转] break;
服务器性能监控之WMI[转] case "3":
服务器性能监控之WMI[转]                     rtntype="Hard disk";
服务器性能监控之WMI[转] break;
服务器性能监控之WMI[转] case "4":
服务器性能监控之WMI[转]                     rtntype="Removable drive or network drive";
服务器性能监控之WMI[转] break;
服务器性能监控之WMI[转] case "5":
服务器性能监控之WMI[转]                     rtntype="CD-ROM";
服务器性能监控之WMI[转] break;
服务器性能监控之WMI[转] case "6":
服务器性能监控之WMI[转]                     rtntype="RAM disk";
服务器性能监控之WMI[转] break;
服务器性能监控之WMI[转] default :
服务器性能监控之WMI[转] break;
服务器性能监控之WMI[转]             }
服务器性能监控之WMI[转] return rtntype;
服务器性能监控之WMI[转]         }
服务器性能监控之WMI[转]
服务器性能监控之WMI[转] private void Button1_Click(object sender, System.EventArgs e)
服务器性能监控之WMI[转]服务器性能监控之WMI[转] ...{
服务器性能监控之WMI[转]             SelectQuery query=new SelectQuery("Select * From Win32_LogicalDisk");
服务器性能监控之WMI[转]             ManagementObjectSearcher searcher=new ManagementObjectSearcher(query);
服务器性能监控之WMI[转] foreach(ManagementBaseObject disk in searcher.Get())
服务器性能监控之WMI[转]服务器性能监控之WMI[转] ...{
服务器性能监控之WMI[转]                 Response.Write(disk["Name"] +" "+DriveType(disk["DriveType"].ToString()) + " " + disk["VolumeName"]+"<br>");
服务器性能监控之WMI[转]             }
服务器性能监控之WMI[转]         }
服务器性能监控之WMI[转] #endregion
服务器性能监控之WMI[转]
服务器性能监控之WMI[转]服务器性能监控之WMI[转] 2.如何用WMI获得指定磁盘的容量#region 2.如何用WMI获得指定磁盘的容量
服务器性能监控之WMI[转] private void Button2_Click(object sender, System.EventArgs e)
服务器性能监控之WMI[转]服务器性能监控之WMI[转] ...{
服务器性能监控之WMI[转]             ManagementObject disk = new ManagementObject("win32_logicaldisk.device>

通过上面介绍的方法,可以很轻松的获取远程或本地机器的性能,进程和硬件信息等。另外:WMI也可以通过使用Vbscript等脚本调用。

说明:其中部分资源来自网友小山的blog。但不够详细说明WMI在服务器性能方面的能力!

相关文章:

  • 2021-07-21
  • 2022-12-23
  • 2021-09-21
  • 2021-05-31
  • 2022-12-23
猜你喜欢
  • 2021-07-06
  • 2021-04-24
  • 2021-11-09
  • 2021-09-24
相关资源
相似解决方案