Webページで次のことを監視したいと思います。
- 合計応答時間
- 合計バイト数
- スループット(リクエスト/秒)
- 使用されるRAM
- ハードドライブのスペースと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";
}
}
}