ASP.NETアプリケーションにヘルスモニタリングシステムを1分で実装する

今日は、1つのファイルを変更するだけで、ASP.NETアプリケーションにほんの1分で実装できる非常に興味深く有用なものを検討します。

最初に、Health Monitoring System(以降HMS)を定義しようとします。

HMSは、サイトを監視し、特定のイベントに応答するモジュールです。 この記事では、特定のケースの実装を取り上げます。重大なエラーが発生した場合に、さまざまな情報を記載した手紙をメールに送信します。



なぜこれが必要なのですか? 具体例を挙げましょう。 現時点では、私が仕事で従事しているプロジェクトは顧客のサーバーに転送されます。契約はサイトのサポート期間を提供するため、ユーザーがサイトを使用するときに必ず発生するエラーを追跡するツールが必要でした。 したがって、HMSはこれに理想的です。私の側では、実装作業は実質的に必要ありませんが、同時に理想的な結果が得られます。 ご希望の場合は、さらに多くの例を考え出すことができますが、その本質を理解しており、私の状況は多くの人に近いと思います。

それでは始めましょう。 先ほど言ったように、ファイルを1つだけ変更する必要があります。 おそらく誰もがすでにweb.configであると私なしで推測しています。

開いて、 <system.web>セクションを探し、以下を追加します。

< healthMonitoring enabled = "true" >

</ healthMonitoring >


実際、HMSは既に含まれています。 それを構成するために残ります。 それ以降のすべてのコードは、 healthMonitoringタグの間に入力する必要があります。

適切な形式のルールに従い、イベントに人間の名前を付けます。

< eventMappings >

< 追加

name = "MyEvent"

タイプ = "System.Web.Management.WebErrorEvent"

startEventCode = "0"

endEventCode = "10000" />

</ eventMappings >


これで、MyEventという名前を使用して、エラーを表すSystem.Web.Management.WebErrorEventタイプのすべてのイベントを表すことができます。 ASP.NETは各イベントに一意の番号を割り当てるため、これらの番号の範囲を示します(10000に達すると、0から再開します)。 次に、システムが私たちにあふれないようにバッファを設定します。

< bufferModes >

< 追加

name = "MyBuffer"

maxBufferSize = "100"

maxFlushSize = "50"

maxBufferThreads = "1"

regularFlushInterval = "00:10:00"

urgentFlushInterval = "00:01:00"

urgentFlushThreshold = "10" />

</ bufferModes >


このすべての本質は次のように要約できます。少なくとも1つのイベントが蓄積された場合、または50件のイベントが蓄積された直後に、HMSは10分ごとに手紙を書き込みます。 好みに合わせてカスタマイズできます。 もう1つの重要なステップは、プロバイダーの選択と構成です。 System.Web.Management.SimpleMailWebEventProviderが必要です。

< プロバイダー >

< add name = "MyProvider"

type = "System.Web.Management.SimpleMailWebEventProvider"

from = "sender@site.com"

to = "reciever@site.com"

bodyHeader = "警告!"

bodyFooter =「 できるだけ早く 調査してください。」

subjectPrefix = "アクションが必要です。"

buffer = "true"

bufferMode = "MyBuffer"

maxEventLength = "4096"

maxMessagesPerNotification = "1" />

</ プロバイダー >


彼には多くの設定があり、 ここでそれらを完全に見ることができます 、私は短縮版を提供しました。 最後の手順は、すべてを結び付けるルールを追加することです。

< ルール >

< 追加

name = "MyRule"

eventName = "MyEvent"

プロバイダー = "MyProvider" />

</ ルール >


以上です。 私たちのシステムはすでに動作しています(動作しない場合は、IISでアプリケーションを再起動してみてください)。 サイトが例外をスローするとすぐに、アプリケーション、リクエスト、例外、ユーザーとそのIPアドレス、さらにスタックの完全なトレースについての情報を含む電子メールを受け取ります。 エラーとその除去の原因を特定するために他に何が必要ですか?

PS当然、SimpleMailWebEventProviderを使用するには、web.configに正しいsmtp定義が必要です。 あなたはここでそれについて読むことができます 。 HMSで使用できるイベントとプロバイダーには、まだ非常に多くの種類があります。すべてがここに記述されています



All Articles