本地服务器的性能计数器在哪,利用windows性能计数器进行服务器性能监控示例分享...

using System;

using System.Collections.Generic;

using System.Text;

using System.Diagnostics;

using System.Threading;

using System.Management;

using System.Runtime.InteropServices;

using System.Data;

using System.Data.SqlClient;

using System.DirectoryServices;

using System.Collections;

using System.Configuration;

using System.Collections.Specialized;

using System.IO;

namespace MON.Client

{

public static class SysInfo

{

static Dictionary dic;

static double DiskUsePercent;

static double SysDiskUsePercent;

static SysInfo()

{

try

{

dic = new Dictionary();

foreach (string setting in ConfigurationManager.AppSettings)

{

var arr = ConfigurationManager.AppSettings[setting].Split('#');

if (arr[arr.Length - 1] == "IsCounter")

{

try

{

var pc = new PerformanceCounter(arr[0], arr[1], arr[2]);

dic.Add(setting, pc);

}

catch (Exception ex)

{

Console.WriteLine(arr[0] + "找不到");

Log.WriteLog(ex.Message);

}

}

}

}

catch (Exception ex)

{

Console.WriteLine(ex.Message);

Log.WriteLog(ex.Message);

}

}

static void initDiskInfo()

{

#region 备忘

//只获取系统盘代码如下

//ManagementObject CPANInfo = new ManagementObject(string.Format("win32_logicaldisk.deviceid=\"{0}\"", System.Environment.SystemDirectory.Substring(0, 2)));

//CPANInfo.Get();

//var s = Convert.ToDouble(CPANInfo["Size"]);

//var l = Convert.ToDouble(CPANInfo["FreeSpace"]);

//var d = (s - l) / s * 100;

//return d;

#endregion

try

{

DriveInfo[] drives = DriveInfo.GetDrives();

long totalSize = 0;

long freeSize = 0;

long CTotalSize = 0;

long CFreeSize = 0;

foreach (DriveInfo drive in drives)

{

if (drive.DriveType == DriveType.CDRom)

{

continue;

}

totalSize += drive.TotalSize;

freeSize += drive.TotalFreeSpace;

if (drive.Name.StartsWith(System.Environment.SystemDirectory.Substring(0, 2)))

{

CTotalSize += drive.TotalSize;

CFreeSize += drive.TotalFreeSpace;

}

}

SysDiskUsePercent = (CTotalSize - CFreeSize) / (double)CTotalSize * 100;

DiskUsePercent = (totalSize - freeSize) / (double)totalSize * 100;

}

catch (Exception ex)

{

Console.WriteLine(ex.Message);

Log.WriteLog(ex.Message);

}

}

public static void Init()

{

//如有取数之前进行的业务可放在这里,提高性能

initDiskInfo();

}

public static double GetSysInfo(string InfoKey)

{

try

{

if (dic.ContainsKey(InfoKey))

{

return dic[InfoKey].NextValue();

}

else

{

if (InfoKey == "SysDiskUsePercent")

{

return SysDiskUsePercent;

}

else if (InfoKey == "DiskUsePercent")

{

return DiskUsePercent;

}

else

{

return -1;

}

}

}

catch (Exception ex)

{

Console.WriteLine(ex.Message);

Log.WriteLog(ex.Message);

return -1;

}

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值