ASP.NET Monitoring
Wäre es nicht einfach Klasse eigene ASP.NET Anwendungem im Detail in Echtzeit zu monitoren?
Mit monitoren ist gemeint, zu sehen wie performant die Anwendung ist (beobachten) um bei Problemen in das System eingreifen zu können (reagieren).
Ich stelle dieses Framework zum Testen zur Verfügung.
Funktionsweise:
Metricsobjekte: Sammeln von Informationen über das Verhalten von ASP.NET Application.
Storeobjekte sind in Metrics instanziert und bilden die Speicher- und Ladeschicht.
Stateinstanzen prüfen ob Performanceprobleme im System vorhanden sind, Reaktionen darauf muss jeder selbst (web.config) einstellen oder ausprogrammieren.
Dafür gibt es Responder/Container oder auch die direkte Ansprache des Providers oder des Module-interfaces.
IPerformanceProvider ist das FacadenInterface über welches das Do.NET Pla Framework angesprochen werden kann.
Wieso habe ich das erwähnt? Weiß ich selbst nicht!
Es sind Interfaces die jeder selbst implementieren kann aber nicht muss, denn das Framework hat schon eine eigene ProviderGruppe: "PerformanceCounter".
Zum Reagieren gibt es den ResponderDefault der einfach eine Exception wirft.
Das Framework wird über ein HttpModul angeschlossen.
<httpModules>
<add name="PlaModule" type="Do.NET.Pla.PlaModule, Do.NET.Pla"/>
Und die Provider müssen bekannt gegeben werden.
<section name="performanceConfiguration" type="Do.NET.Pla.Configuration.PerformanceConfiguration"/>
<performanceConfiguration enabled="true" providerGroup="PerformanceCounter oder Custom" applicationName ="Portal.Pla">
</performanceConfiguration>
Für Reaktionsmöglichkeiten per Web.config
<add name="_default.*"
enabled="true"
isCriticalPerformance="true"
criticalResponder="PlaWeb.Extend.RedirectResponder, PlaWeb.Extend, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
description="Wartungsarbeiten von 2008-2009"
freezeStartDate="01.01.2008 00:00"
freezeEndDate="01.01.2009 00:00"
any="sonstige parameter optional"/>
<!--criticalResponder="Do.NET.Pla.PerformanceCriticalResponderDefault"-->
"_default.*" gibt an, dass die _default.* Seite in allen Contexten überprüft werden soll und bei Eingabe von isCriticalPerformance==true die Reaktionsinstanz erzeugen soll.
Die Custom Responder Klasse sieht so aus:
public class RedirectResponder : PerformanceCriticalResponderBase
{
public override void CallBackCriticalPerformance(object sender, EventArgs e)
{
IPerformanceState state = (IPerformanceState)sender;
HttpContext.Current.Session["_lasterror"] = state;
HttpContext.Current.Response.Redirect("~/Error.aspx", true);//endresponse
}
}
et voila
Würde mich freuen, wenn jemand Feedback gibt ob es Probleme gibt.
Im Sample ist der StateProvider auf die Web.config -> WebService-Klasse angesetzt. Somit können die Seiten zusätzlich zur web.config über einen WebService gesteuert werden. (z.b. ab* für About.None oder alle Seiten die mit ab anfangen.)
[Vortragsfolien] [Sample Project]
Happy monitoring!!!
Posted in .NET, ASP.NET, C#, Frameworks