小さな Windows アプリケーションを作成して、定期的にサイトに自動的に移動し、正常に動作しているかどうか、ダウンしている場合、動作していない場合、または「例: 404、ネットワーク エラー、db への接続に失敗しました」というエラーが発生したかどうかを確認します。画面にメッセージが表示されます。
任意の .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 と同じです。HEAD リクエストに応答して HTTP ヘッダーに含まれるメタ情報は、GET リクエストに応答して送信される情報と同一である必要があります。このメソッドは、エンティティ本体自体を転送せずに、リクエストによって暗示されたエンティティに関するメタ情報を取得するために使用できます。この方法は、ハイパーテキスト リンクの有効性、アクセシビリティ、および最近の変更をテストするためによく使用されます。w3.org
C# で Head リクエストを実行する方法を説明しているPeter Bromberg の記事へのリンクを次に示します。
HttpWebRequest を使用し、WebException の try キャッチでラップします。例外オブジェクトのエラー コードからコードが得られます。404 など。500 の場合は、メッセージを印刷できます。
System.Net.WebClient オブジェクトを使用します。HttpWebRequest よりも使いやすいです。URL のコンテンツを文字列にダウンロードする「DownloadString」メソッドがあります。サーバーが 500 を返した場合、そのメソッドは WebException エラーをスローすることもあります。その他のエラーについては、文字列を解析してキーワードを探すことができます。
Adventnet のアプリケーション マネージャー ( http://www.manageengine.com/products/applications_manager/ ) を試してみてください。モニター 5 台まで無料で、優れた監視機能を提供します。
電子メールの送信などの障害が発生した場合に実行できるアクションを構成できます。
これを行う場合は、データベース、ファイル IO などの特別なサブシステムを実行する特別なページを作成し、HTML ではなくプレーン テキストで結果を提供します。これにより、返されたデータを簡単に解析できるようになり、404 または 500 HTTP エラーを発生させない可能性のある DB や IO の問題なども検出されます。
サイトがダウンしているときに電子メール/SMS を受け取りたい場合は、Are My Sites Up Web ベースのソリューションを試してください。