jueves, 21 de febrero de 2013

ASP.Net Health Monitoring



Una característica interesante y muchas veces olvidada por los desarrolladores de ASP.NET es la facilidad de utilizar el registro de eventos para buscar posibles soluciones a errores ocurridos en nuestra aplicación.       Por defecto los eventos son registrados en el log de Windows,   pero muchas veces no tenemos acceso a él,   por lo que pudiésemos utilizar una base de datos o bien el envío por correo de ellos.
Paso 1. -  Definimos en el Web.config  la configuración para el monitoreo.
             <healthMonitoring enabled="true" heartbeatInterval="10">
                    <rules>
                    <add name="TheRule" eventName="Heartbeats" provider="SqlWebEventProvider"/>
                           <add name="TheSecondRule" eventName="All Errors" provider="SqlWebEventProvider"/>
                    </rules>
              </healthMonitoring>

Donde la primera regla comprobara cada intervalo definido en heartbeatInterval el estado de nuestra aplicación y lo enviara a una base de datos.   La segunda regla  enviara a una base de datos también la información de los errores ocurridos.
Paso 2 - La configuración de la base de datos:
<add name="LocalSqlServer" connectionString="data source=MISERVER;database=aspnetdb; Integrated Security=SSPI" />

La cual podemos definirla por medio del promt con el commando:    aspnet_regsql y luego siguiendo el asistente configuramos la base de datos.
Paso 3: Enviar por correo los errores
Para ello tendríamos que determinar una regla que defina lo que vamos a enviar y un proveedor de correo.
              <healthMonitoring enabled="true" heartbeatInterval="10" >
                    <rules>
                    <add name="TheRule" eventName="Heartbeats" provider="SqlWebEventProvider"/>
                           <add name="TheSecondRule" eventName="All Errors" provider="SqlWebEventProvider"/>
                           <add name="TheEmailRule" eventName="All Errors" provider="EmailProvider"/>
                    </rules>


                    <providers>
                           <add name="EmailProvider"
                            type="System.Web.Management.SimpleMailWebEventProvider"
                             from="admin@upoli.edu.ni"  to="yo.yo@gmail.com"       buffer="false" />
                    </providers>
                   
             </healthMonitoring>

Y luego configurar nuestro smtp disponible para el envio de correo:
<system.net>
             <mailSettings>
                    <smtp deliveryMethod="Network" from="bernardo@gmail.com" >
                           <network host="smtp.gmail.com" port="465" userName="bernardo@gmail.com" password="mipassword"/>
                    </smtp>
             </mailSettings>
       </system.net

A continuación presentamos los posibles eventos más comunes que podamos auditar:
"HeartBeats"
"Application Lifetime Events"
"Request Processing Events"
"All Errors"
"Infrastructure Errors"
"Request Processing Errors"
"Failure Audits"
"Success Audits"
"All Audits"

No hay comentarios:

Publicar un comentario