【发布时间】:2012-07-03 19:06:03
【问题描述】:
我想在网页上监控以下内容:
- 总响应时间
- 总字节数
- 吞吐量(请求/秒)
- 已使用内存
- 硬盘空间和 IO 问题
- 服务器 CPU 开销
- 错误(按错误代码)
- MSSQL 加载
- IIS 错误
我为网络托管托管了一个小型服务器集群。我需要在 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";
}
}
}
【问题讨论】:
-
基本上想从网络服务器获取当前的 wmi 和 snmp 捕获信息并将它们显示到网页上。 Asp.net html 或最好的技术。
-
所以我要找的是一个简单的页面,它可以解析事件日志或 wmi 并像 nagios 或新的 relic 类型服务一样显示它。我只希望它用于 localhost 服务器,以便我可以将它放在 default.aspx 页面上并查看条形图和图表,以便它可以发布给 IT 管理人员,以便他们对硬盘空间和内存使用以及 Sql 感觉更好处理时间和yada yada。 IT 管理人员不需要预打包的应用程序或服务,他们只需要简单的图表等可能带有 excel 或 csv 输出作为加分项。
标签: asp.net system monitoring