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

本文详细介绍了如何使用C#通过Windows Management Instrumentation (WMI)来监控服务器性能,包括获取CPU、内存、网络流量等信息。通过建立ManagementConnectPool类和Monitor类,可以方便地获取远程服务器的硬件信息和性能参数,例如网络适配器速度、CPU负载、内存使用率等。此外,还展示了如何获取磁盘容量、系统服务状态、IP配置、文件夹共享状态等多种功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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.ManagementObject 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

s

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值