2011-01-05 14 views
7

Ho un numero di applicazioni in esecuzione su ASP.NET che voglio monitorare. Le cose principali a cui tengo sono:Monitoraggio di applicazioni .NET ASP.NET

  • Eccezioni: al momento abbiamo del codice personalizzato che ci invierà un'e-mail quando si verifica un'eccezione. Se l'applicazione sta fallendo troppo difficilmente andrà in crash la nostra prospettiva ... Conosco (e uso) elmah che risolve parzialmente il problema, tuttavia è ancora solo una grande tabella di eccezioni con un'interfaccia utente carina (ish). Voglio qualcosa che rende senso di tutte queste eccezioni (ad esempio gruppi di eccezioni, avvisi quando si verificano nuovi, mi dice quali sono le più comuni sono che avrei dovuto risolvere, ecc)

  • Logging: Al momento registriamo ai file che sono poi accessibili tramite una cartella condivisa che dev's grep & tail. Qualcuno sa dei modi migliori per presentare queste informazioni. In un mondo ideale voglio associarlo con le eccezioni.

  • Performance: Richiesta volte, l'utilizzo della memoria, CPU, ecc Qualunque statistiche posso ottenere

Sto indovinando questo è destinata probabilmente ad essere risolto da una serie di strumenti, Chiunque ha ottenuto delle suggerimenti?

+1

Il modo migliore per risolvere i problemi di eccezione è quello di risolverli immediatamente. Perché hai eccezioni che non hai risolto per così tanto tempo? –

+0

Sono d'accordo ma ho ereditato un'applicazione legacy che sto cercando di cambiare. Il primo compito è capire quali sono i maggiori punti deboli, quindi sappiamo meglio come affrontare il problema. –

+0

LOL, ho dovuto controllare il tuo nome due volte per assicurarti di non aver lavorato qui;) –

risposta

3

Si dovrebbe dare un'occhiata a Gibraltar non utilizzato da solo ma sembra molto buono! Funziona anche con nLog e log4net quindi se usi quelli sei fortunato !!

+0

molti buoni consigli ma questo sembra il più promettente. Ho intenzione di fare un picco in questo. Grazie :) –

+1

Abbiamo delle ottime notizie! Gibilterra ora è GRATUITA. Maggiori dettagli in una risposta separata di seguito. –

1

In termini di eccezioni gestite o di un tipico logging l4ndash vale la pena dare un'occhiata. Ho sempre impostato il nostro log4net non solo per scrivere file di testo, ma per aggiungerli al database. In questo modo l4ndash può analizzarlo facilmente. Raggrupperà i tuoi errori, ti consentirà di vedere dove stanno accadendo cose brutte. Ottieni una licenza di sviluppo gratuita

Con Elmah, abbiamo solo tirato giù i registri periodicamente. Può esportare come csv, quindi usiamo Excel per filtrare/raggruppare i dati. Non è l'ideale, ma funziona. Sarebbe bello scrivere una sceneggiatura per automatizzarla un po 'di più. Non ho visto molto altro là fuori per Elmah.

0

È possibile ottenere alcune metriche su tempi di richiesta (e qualsiasi altra cosa che viene salvata) eseguendo LogParser sui registri IIS.

1

Vorrei andare prima per log4net. SmtpAppender può aspettare che N eccezioni si accumulino prima di inviare una e-mail ed evitare di mandare in crash Outlook. Log4net registra anche i file di registro che possono essere memorizzati su unità di rete, letti con cat e grep, ecc.

Informazioni sulle statistiche, è possibile eseguire una registrazione di integrità/prestazioni con gli stessi strumenti, ad es. genera un thread che ogni minuto i registri di utilizzo della CPU, ecc

non ho una risposta concreta per la prima parte della domanda, in quanto implica l'analisi dei log automatizzata e coalescenza. All'università, abbiamo creato uno strumento progettato per fare parte di queste cose ma non si applica al tuo scenario (ma è a due vie integrato con log4net).

3

Bene, abbiamo esattamente la stessa soluzione attuale. Le e-mail su e-mail sparpagliano la mia casella di posta e per lo più vengono ignorate. Durante le vacanze un errore ha causato a tutti gli utenti di dev di raggiungere il limite della posta in arrivo;)

Quindi, dove siamo diretti con una soluzione?

  1. Generiamo già classi per tutte le nostre excpetions, raramente vengono utilizzate da più di un posto. Questo era essenzialmente il primo passo, ma abbiamo iniziato il codice base in questo modo.
  2. Abbiamo modificato il generatore per creare valori HRESULT unici per tutte le eccezioni.
  3. Ancora una volta abbiamo aggiunto un generatore per creare un file di risorse di messaggi .MC per ogni eccezione.
  4. Ora ogni eccezione può scrivere se stessa nel registro eventi di Windows, quindi abbiamo rimosso tutte le e-mail e così via e ci siamo basati sul registro eventi.
  5. Ora con un registro eventi completo di informazioni, inclusi codici messaggio e parametri univoci per ogni eccezione, possiamo utilizzare strumenti disponibili per aggregare, monitorare e avvisare.

Il generatore eccezione (prima modifiche di cui sopra) si trova qui:

Si integra con Visual Studio sostituendo il generatore ResX con questo:

Non ho ancora pubblicato il generatore MC o la generazione HRESULT; tuttavia, sarà disponibile nei luoghi sopra indicati quando avrò il tempo.

- UPDATE -

Tutti gli strumenti e fonte sono ora disponibili on-line per questo. Allora, dove vado da qui?

  1. Scarica sorgente o binari da: http://code.google.com/p/csharptest-net/
  2. Date un'occhiata a l'aiuto per CmdTool.exe Visual Studio Integration
  3. Poi rivedere la guida in Generators for ResX and MC files, ci sono diversi modi per generare i file MC o DLL messaggio completo da file resx . Scegli l'approccio che fa per te.
  4. Run CmdTool.exe REGISTER per registrare lo strumento con Visual Studio
  5. Creare un file ResX come normale, quindi modificare lo strumento personalizzato per CmdTool
  6. Sarà necessario aggiungere alcune voci al file resx. Alla minima creare la seguente:
  7. Ora si dovrebbe avere una classe di eccezione generati che scrive eventi di log.Sarà necessario creare il file MC come azione di pre/post costruzione con qualcosa di simile:
    • CSharpTest.Net.Generators.exe RESXTOMESSAGEDLL /output=MyCustomMessages.dll /input=TheProjectWithAResX.csproj
  8. Infine, è necessario registrarlo, eseguire il quadro InstallUtil.exe MyCustomMessages.dll

Questo dovrebbe iniziare finchè non avrò il tempo di documentare tutto.

0

Abbiamo creato una semplice app di monitoraggio che si trova sul desktop e lampeggia in rosso quando c'è un'eccezione scritta nel registro eventi da una delle app sul server o scrive un errore nella tabella dei log degli errori su il database. Controlla inoltre lo stato del database, controllando la frammentazione e simili.

L'unico problema che abbiamo con questo è che può essere un po 'invadente sul desktop in quanto continua a spuntare con una finestra di messaggio rossa se c'è un problema. Tuttavia ti incoraggia a correggerlo al più presto.

Attualmente abbiamo questo funzionamento su molte macchine degli sviluppatori. Il miglioramento che stiamo pensando di fare è avere un'app di monitoraggio in esecuzione su un server che poi pubblica un feed rss in modo che l'app stia controllando una volta sola in un posto, ma possiamo usare le informazioni da qualsiasi luogo usando qualsiasi metodo scegliamo al momento (come attraverso i nostri telefoni quando non siamo in ufficio).

0

È possibile selezionare un feed RSS dalla tabella delle eccezioni (e altre cose). Quindi puoi iscriverti al feed RSS in MS Outlook o su uno smartphone. Uso un lettore di feed RSS chiamato NewsRob perché mi avvisa quando c'è qualcosa di nuovo.

I blog su come fare questo HERE.

Come passo correlato, ho trovato un modo per notificare me quando qualcosa non è accaduto. Quel blog è HERE.

Problemi correlati