私のサイトはダウンしていますか、機能していないか、エラーがありますか?
質問
小さなウィンドウアプリケーションを作成して、サイトに毎時間自動的にアクセスし、正常に動作するか、ダウンしているか、動作していないか、エラーがあるかどうかを確認します"例:404、ネットワークエラー、接続db failed"画面にメッセージが表示されます。
.NET言語を使用してプログラムでエラーが発生したことをどのようにして知ることができますか?
解決
WebClient
を使用するのは非常に簡単です。次のようになります。
WebClient client = new WebClient();
try
{
string response =
client.DownloadString("http://www.example.com/tester.cgi");
// We at least got the file back from the server
// You could optionally look at the contents of the file
// for additional error indicators
if (response.Contains("ERROR: Something"))
{
// Handle
}
}
catch (WebException ex)
{
// We couldn't get the file.
// ... handle, depending on the ex
//
// For example, by looking at ex.Status:
switch (ex.Status)
{
case WebExceptionStatus.NameResolutionFailure:
// ...
break;
// ...
}
}
これを Timer
の Tick
イベントまたは何かにフックして、定期的にチェックを行うことができます。
他のヒント
なぜわざわざ? RedAlert
のようなプロバイダーから、安価ではるかに優れたソリューションを入手できます。これのいいところは:
1)ファイアウォールの外側からサイトをテストするため、さまざまな問題を検出できます。
2)公平なサードパーティであるため、SLAが必要な場合は稼働時間を証明できます。
3)少額のプレミアムでは、問題を試して診断することができます。
4)問題がある場合、ページングまたは電子メールで送信できます。
5)新しいサーバーをコミッションする必要はありません。
そうね、私はみんなの広告のように聞こえますが、私は彼らのために働いたり、キックバックを取得しないと約束します。私たちのサーバーのサービスに満足しています。
ところで:価格を確認したところ、サイトあたり月額約20ドルです。そのため、おそらく自分で構築するよりも短い時間で1年間のサービスを支払うことができます。
同じ機能を実行したいのですが、最初にサードパーティのソリューションを検討しました。無料でかなり正確なサービスの1つは、 MonitorUs です。
ただし、独自のビルドを作成する場合は、1つの推奨事項があります。 getリクエストの代わりにHeadリクエストを使用することを検討してください:
HEADメソッドはGETと同じです サーバーが戻してはならないことを除いて 応答のメッセージ本文。の HTTPに含まれるメタ情報 HEADリクエストへの応答のヘッダー 情報と同一である必要があります GETリクエストへの応答として送信されます。 このメソッドは、取得に使用できます エンティティに関するメタ情報 リクエストによって暗示される エンティティ本体自体を転送します。 この方法は、テストによく使用されます 有効性のためのハイパーテキストリンク、 アクセシビリティ、最近 変形。 w3.org
System.Net.WebClientオブジェクトを使用します。 HttpWebRequestよりも使いやすいです。 " DownloadString"があります。 URLのコンテンツを文字列にダウンロードするメソッド。サーバーが500を返した場合、そのメソッドはWebExceptionエラーをスローすることもあります。他のエラーについては、文字列を解析してキーワードを探すことができます。
HttpWebRequestを使用し、WebExceptionのtry catchでラップします。例外オブジェクトのエラーコードは、コードを提供します。 404など。500であれば、メッセージを印刷できます。
これを行う場合、データベース、ファイルIOなどの特別なサブシステムを実行する特別なページを作成し、結果をHTMLではなくプレーンテキストで提供します。これにより、返されたデータを簡単に解析できるようになります。また、404または500 HTTPエラーが発生しない可能性のあるDBまたはIOの問題などもキャッチします。
AdventnetのApplication Manager( http://www.manageengine.com/products/applications_manager/ )、5台のモニターが無料で、優れた監視機能を提供します
メールの送信など、障害が発生した場合に実行できるアクションを設定できます。
サイトがダウンしているときにメール/ SMSを受け取りたい場合は、私のサイトをアップウェブベースのソリューション。