• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

C#服务器性能监控之WMI的代码示例详解

c# 搞代码 4年前 (2022-01-09) 27次浏览 已收录 0个评论

1.WMI简介

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

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

using System.Management;

3.定义远程访问

public class ManagementConnectPool    ...{        private static System.Management.ConnectionOptions Conn = new ConnectionOptions() ;        private static ManagementObjectSearcher mos = new ManagementObjectSearcher();        private string username = "";        private string pwd = "";        private string space="";        private string server = "";        public ManagementConnectPool(string mpusername,string mppwd , string mpspace ,string mpserver)        ...{            this.username = mpusername;            this.pwd = mppwd;            this.space = mpspace;            this.server = mpserver;            Conn.Username = mpusername;            Conn.Password = mppwd;            string scopestring ="//" + mpserver + mpspace;            System.Management.ManagementScope Ms = new ManagementScope(scopestring);            Ms.Connect();            mos.Scope = Ms;        }        public ManagementObjectCollection getQueryResult(string queryString)        ...{            ObjectQuery oq = new ObjectQuery();            oq.QueryString = queryString;            mos.Query = oq;            ManagementObjectCollection moc =mos.Get();            return moc;        }    }

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

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

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:C#服务器性能监控之WMI的代码示例详解
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址