Tuesday, July 29, 2008

[ASP.NET2.0] Está viva tu aplicación web?

por Ing. Juan Pablo Ibañez
http://ing.juanpablo.googlepages.com

ASP.NET 2.0 está provisto de una funcionalidad que nos permite supervisar el estado de las aplicaciones ASP.NET implementadas, brindándonos información en tiempo de ejecución detallada. Con esta funcionalidad podemos loguear todos los acontecimientos (eventos, errores, etc.) de nuestra aplicación a un archivo de texto, al Event Viewer, a una casilla de mail, etc.

Esta funcionalidad se llama healthMonitoring y para hacer uso de ella basta en la mayoría de los casos con agregar una serie de entradas en el web.config.

En este artículo vamos a ver principalmente un evento de healthMonitoring que puede ser capturado llamado WebHeartbeatEvent. Este evento puede ser configurado para que de dispare cada un cierto tiempo, lo que provoca un efecto de latido. Mientras el servidor y nuestra aplicación estén up cada cierto tiene se disparará este "latido" y podremos saber que nuestra aplicación está en funcionamiento. Se puede configurar este evento para que grabe un log en el EventViewer, en un archivo de texto, o mande un mail.

A continuación vemos las entradas que debemos agregar en el Web.config para que mande un mail cada vez que se produce el evento.

Debemos configurar para que nuestra aplicación pueda mandar mails, por ejemplo de esta forma:

<system.net>
<mailSettings>
<smtp from="xxxxxxxxxx@xxxxxxxxxx.xxx" >
<network host="xxx.xxx.xxx.xxx" />
</smtp>
</mailSettings>
</system.net>

Ahora si configuramos las entradas para healthMonitoring:

<healthMonitoring enabled ="true" heartbeatInterval="0">
<providers>
<add name="mail"
type="System.Web.Management.SimpleMailWebEventProvider"
to="xxxxxxxxxx@xxxxxxxxxx.xxx"
from="xxxxxxxxxx@xxxxxxxxxx.xxx"
buffer="false"
subjectPrefix="Event "/>
</providers>
<rules>
<add name="mail Heartbeats"
eventName="LogueoHeartbeats"
provider="mail"
profile="Default"
minInstances="1"
maxLimit="Infinite"
minInterval="00:30:00"
custom=""/>
</rules>
<eventMappings>
<add name="LogueoHeartbeats"
type="System.Web.Management.WebHeartbeatEvent,
System.Web,Version=2.0.0.0,Culture=neutral,
PublicKeyToken=b03f5f7f11d50a3a"
startEventCode="0"
endEventCode="2147483647" />
</eventMappings>
</healthMonitoring>



No comments: