Quanti siti gestite? 10, 100? Sapete sempre se i server sono in funzione o se ci sono dei problemi? Usate qualche programma esterno che vi serve per monitorare lo stato dei siti che gestite, per sapere se e quando un sito ha dei problemi ed intervenire tempestivamente?
Stanco delle solite soluzioni, prima di tutto perché mi trovo spesso a cambiare postazione di lavoro e poi perchè non mi piace installare programmi su PC non miei, avevo bisogno di qualcosa di semplice e personalizzabile, indipendente dalla postazione che mi permettesse di monitorare i miei siti web... La soluzione per me è stata semplicemente creare una pagina ASP.NET utile allo scopo!
La soluzione che viene proposta in questo articolo è semplice, facilmente espandibile, utilizza la classe System.Net e tramite una tecnica di screen scraping permette di caricare una pagina da un URL e mostrare a video se la pagina è stata ricevuta correttamente (e quindi il sito è funzionante) oppure se si sono verificati dei problemi.
File di configurazione
Innanzitutto creiamo un file XML (chiamiamolo server.xml) che contiene l'elenco dei siti o delle pagine da monitorare; ciascuna voce dell'elenco va inclusa all'interno della coppia di tag <server></server>. Aggiungiamo per ciascun tag <server> l'attributo check="yes" per indicare quali siti verificare (in questo modo è possibile escludere alcuni siti dal monitoraggio agendo semplicemente sul file XML). Ecco il risultato:
<?xml version="1.0" encoding="utf-8" ?> <root> <server check="yes">http://www.aspitalia.com</server> <server>http://www.questononlocontrollo.it</server> <server check="yes">http://falsositodiprova.xx</server> </root>
Lettura del file di configurazione
Prima di iniziare, onde evitare problemi con la compilazione, bisogna ricordarsi di referenziare questi namespace e includerli all'inizio del Code-Behind della pagina:
using System.Net; using System.Xml; using System.Text;
A questo punto inseriamo qualche riga di codice nel Page_Load per caricare i dati contenuti nel file XML in un controllo CheckListBox presente nella pagina ASPX (è l'unico controllo che ci servirà):
string myXmlFile = Server.MapPath("server.xml"); XmlTextReader myXml = new XmlTextReader(myXmlFile);
Iniziamo a leggere il file XML attraverso un oggetto XmlTextReader e aggiungiamo ogni nodo di tipo XmlNodeType.Element di nome "server" al controllo CheckListBox. Inoltre per ogni elemento con attributo check="yes" marchiamo la casella di spunta relativa.
while(myXml.Read()) { if ((myXml.NodeType == XmlNodeType.Element) && (myXml.Name == "server")) { string myCheck = myXml.GetAttribute("check"); myUrl = myXml.ReadString(); chkSite.Items.Add(new ListItem(myUrl, myUrl)); if (myCheck == "yes") chkSite.Items[chkSite.Items.Count-1].Selected = true; } } myXml.Close();
Quest'ultima istruzione (quella di chiusura) è fondamentale: omettendola, il file XML risulterebbe sempre bloccato e non saremmo in grado di modificarlo mentre l'applicazione è in esecuzione.
Attenzione: Questo articolo contiene un allegato.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Load test di ASP.NET Core con k6
Personalizzare l'errore del rate limiting middleware in ASP.NET Core
Cache policy su route groups di Minimal API in ASP.NET Core 7
Implementare il throttling in ASP.NET Core
Effettuare il deploy di immagini solo da container registry approvati in Kubernetes
Usare ASP.NET Core dev tunnels per testare le applicazioni su internet
Short-circuiting della Pipeline in ASP.NET Core