我想在网页上监测以下情况:
我托管了一个用于web托管的小型服务器集群。我需要在ASP.NET中创建一个硬件视图,以尽可能接近实时快照。
我听说过Spiceworks或其他完成这项任务的方法。我同意这些都是很好的工具,但我想对其进行编码,并保持简单。
下面是我提出/找到的一些现有代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace WebApplication1
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string[] logicalDrives = System.Environment.GetLogicalDrives();
//do stuff to put it in the view.
}
protected static string ToSizeString(double bytes)
{
var culture = CultureInfo.CurrentUICulture;
const string format = "#,0.0";
if (bytes < 1024)
return bytes.ToString("#,0", culture);
bytes /= 1024;
if (bytes < 1024)
return bytes.ToString(format, culture) + " KB";
bytes /= 1024;
if (bytes < 1024)
return bytes.ToString(format, culture) + " MB";
bytes /= 1024;
if (bytes < 1024)
return bytes.ToString(format, culture) + " GB";
bytes /= 1024;
return bytes.ToString(format, culture) + " TB";
}
public static string ToApproximateString(this TimeSpan time)
{
if (time.TotalDays > 14)
return ((int)(time.TotalDays / 7)).ToString("#,0.0") + " weeks";
if (14 - time.TotalDays < .75)
return "two weeks";
if (time.TotalDays > 1)
return time.TotalDays.ToString("#,0.0") + " days";
else if (time.TotalHours > 1)
return time.TotalHours.ToString("#,0.0") + " hours";
else if (time.TotalMinutes > 1)
return time.TotalMinutes.ToString("#,0.0") + " minutes";
else
return time.TotalSeconds.ToString("#,0.0") + " seconds";
}
}
}
发布于 2012-07-16 03:29:18
性能计数器通过System.Diagnostics.PerformanceCounter
类公开。这里是ASP.NET的一些性能计数器,还有另一个如何.。
发布于 2012-07-20 01:17:01
与@Sumo所说的类似,您需要使用来自System.Diagnostics
命名空间的(PC)。
你的问题的一部分是,你对你想从个人电脑的角度来衡量什么有点模糊。个人电脑是非常具体和非常狭窄的,他们测量一个非常详细的度量。您将不得不将您的需求转换到您想要的特定Windows PC。
你说过你想测量:
您还应该查阅http://technet.microsoft.com/en-us/library/cc776490(WS.10).aspx上的Windows引用(它是W2K3,但它仍然适用于W2K8/R2)。这将为您提供您正在寻找的所有性能计数器的全面概述和解释。
每一个都要跑下去:
据我所知,没有任何ASP.NET个人电脑列出这一点。而且,不管怎么说,这对您可能没有任何意义,因为ASP.NET还将响应各种各样的请求,您可能并不关心这些请求需要多长时间(即以.axd结尾的任何请求)。我在项目中所做的是创建一个自定义PC,但还有其他可用的技术(比如使用自定义跟踪侦听器)。
我相信这两种类型都有PC,尽管我认为总字节可能列在Web服务类别下,而吞吐量可能是ASP.NET类别。
有一个内存类别,但您需要决定是否要查找工作集大小、所使用的物理内存等等。
检查LogicalDisk类别
这是什么意思?再次,审查现有的个人电脑,看看什么似乎是最相关的。
您将在处理器类别下找到这一点。
您可以获得抛出的错误总数或抛出异常的速率,但是如果要收集EventLog中的条目,则需要在System.Diagnostics
命名空间中使用EventLog
类。
我没有找到Server的参考概述,但是布伦特·奥扎尔是一位专家,他在这里有一个个人电脑列表:http://www.brentozar.com/archive/2006/12/dba-101-using-perfmon-for-sql-performance-tuning/。对于Server 2008/R2,此列表不太可能发生太大变化。
注意到
IDisposable
。确保您使用.Dispose()
语句(或者更好地说,使用using()
语句)。.NextValue()
方法获取您的值;几乎不需要使用.RawValue
或.NextSample()
。我不会给你每个计数器的确切名称,因为非常重要的是,你要真正了解每个计数器的测量方法以及它对你有多大的帮助,只有你才能回答这个问题。实验。
发布于 2012-07-16 02:31:29
我建议使用像新遗物这样的分析服务。关于.Net使用的页面在这里,.Net的新遗物。
https://stackoverflow.com/questions/11317498
复制相似问题