时间:2021-05-19
复制代码 代码如下:
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<string, PerformanceCounter> dic;
static double DiskUsePercent;
static double SysDiskUsePercent;
static SysInfo()
{
try
{
dic = new Dictionary<string, PerformanceCounter>();
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;
}
}
}
}
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
由于监控及报告需要,要统计性能计数器每天数值情况,确认数据库服务器的运行状况。若打开计数器填写,比较麻烦,现在统计用powershell来读取计数器的值。第一阶
PHP实例剖析:计数器作者:Sucre_tiger本款计数器用文本计数,没有用到数据库,可以实现如下功能:利用一个文本文件实现多个页的计数减少服务器的I/O占用
分享了如何监控Linux服务器,我们来看看使用Nagios如何监控Windows服务器。部分:配置被监控的Windows服务器首先,访问http://sourc
稳定性能访问速度服务器监控IP选择适用网站类型
本文实例讲述了PHP+swoole+linux实现系统监控和性能优化操作。分享给大家供大家参考,具体如下:服务器监控端口监控php运行shell脚本classS