HowTo: Health Monitoring mit ASP.NET
Die Arbeit ist getan, die Website steht! Doch damit fangen die nächsten Probleme an. Kunden rufen an und sagen einem, dass sie eine Error-Page gesehen haben – also mal auf den Server schauen was da eigentlich los ist.
Mit diversen Logging Tools kann man sich über bestimmte Ereignisse informieren lassen – seit ASP.NET 2.0 gibt es auch einen eingebautes Health-Monitoring, dass man sehr einfach nutzen kann.
Eine einfache Konfigurationseinstellung
In meiner ASP.NET MVC Anwendung werfe ich einfach bei einer ActionMethode bewusst eine Exception:
public ActionResult ThrowException()
{
throw new NotImplementedException("Message \\o/");
return View();
}
Das Health-Monitoring lässt sich einfach in der Web.config einstellen. Wir wollen in unserem Beispiel per Email über die Exception benachrichtigt werden.
Als erstes Mailsettings:
<system.net>
<mailSettings>
<smtp deliveryMethod="Network" from="your.email@company">
<network host="your.smtp.host" port="25"/>
</smtp>
</mailSettings>
</system.net>
Zum Testen kann man auch einen anderen ASP.NET Trick anwenden – damit braucht man keinen SMTP Server.
Healthmonitoring:
<healthMonitoringenabled="true">
<eventMappings>
<clear/>
<add name="All Errors"
type="System.Web.Management.WebBaseErrorEvent, System.Web,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a"
startEventCode="0"
endEventCode="2147483647"/>
</eventMappings>
<providers>
<clear/>
<add name="EmailErrorProvider"
type="System.Web.Management.SimpleMailWebEventProvider"
to="malcolm.x.sheridan@nab.com.au"
from="someone@contoso.com"
buffer="false"
subjectPrefix="An error has occured."
bodyHeader="This email is generated from my application." />
</providers>
<rules>
<clear/>
<add name="Testing Mail Event Providers"
eventName="All Errors"
provider="EmailErrorProvider"
profile="Default"
minInstances="1"
maxLimit="Infinite"
minInterval="00:01:00"
custom=""/>
</rules>
</healthMonitoring>
Kurze Erklärung:
Als wichtigster Part registrieren wir uns auf ein Event und nutzen den SimpleMailWebEventProvider -der einfach eine Mail verschickt. Eine genauere Erklärung der einzelnen Teile findet sich in diesem Blogpost oder auf der MSDN Seite.
Ergebnis:
Im Text-Editor kann man allerdings die Mail nicht öffnen, da der Inhalt Base64 kodiert ist.
Man kann auch eigene Provider schreiben und sich auf beliebig viele Events registrieren und die tollsten Sachen damit machen – wer allerdings nur kurz per Mail informiert werden möchte, für den ist das eigentlich Ideal
(Achtung, Web.config für PickupDirectoryLocation anpassen)

























Peter Gfader sagt
am 19. März 2009 @ 12:09
Wow!!
so enfach gehts
Wir haben dazu immer einen globalen Exception Handler in global.asax verwendet… ( Application_Error event )
lg aus Sydney
Peter
Super blog!!
HowTo: Elmah in ASP.NET MVC (& IIS7) fürs Errorlogging | Code-Inside Blog sagt
am 9. Juni 2009 @ 01:45
[...] habe bereits mehrfach über Errorlogging (und Logging im Allgemeinen) geschrieben, jedoch habe ich heute in einem ASP.NET MVC Projekt eine [...]