Accueil > > > ASP.NET - COMMENT SURVEILLER LE PROCESS ASPNET_WP VIA UNE PAGE WEB
ASP.NET - COMMENT SURVEILLER LE PROCESS ASPNET_WP VIA UNE PAGE WEB
Information sur la source
Description
Dans de nombreuses configurations, il peut être utile d'afficher les informations pour la surveillance de son serveur WEB (cas d'hébergement par exemple) afin de voir les montées en charge, l'utilisation du framework, ... Dans ce but, je vous livre une simple page ASPX, qui contient le nécessaire pour afficher les informations sur les 10 derniers process ASPNET ainsi que l'Uptime, IP, ... Si une info particulière vous intéresse, n'hésitez pas à me le demander, ou développez le en vous inspirant de ce qui est dans cette page.
Source
- <%@ Page Language="VB" ClientTarget="downlevel" %>
- <%@ Import Namespace="System.Web" %>
- <%@ Import Namespace="System.Net.Sockets" %>
- <%@ Import Namespace="System.Net" %>
- <%@ Import Namespace="System.Diagnostics" %>
-
- <script language="VB" runat="server">
-
- ' -----------------------------------------------------
- Sub Page_Load(obj As object, e As eventargs)
- ' Chargement au démarrage de la page pour récuperer les informations
- AffProcessInfo()
- LabelMachine.Text = Server.MachineName
- LabelHostname.Text = Request.ServerVariables("SERVER_NAME")
- LabelIP.Text = IP(Server.MachineName)
- LabelUptime.Text = RecupUtime()
-
- End Sub
-
- ' -----------------------------------------------------
- Private Sub AffProcessInfo()
- ' Lancement de la récupération des informations depuis le Serveur
-
- ' Déclaration des Objets nécessaires
- Dim mP As New ProcessModelInfo()
- Dim mPITab As ProcessInfo()
- Dim mPi As ProcessInfo
- Dim trET As New TableRow()
- Dim i As Integer = 1
-
- ' Chargement de l'historique (les 10 derniers lancements) des données sur le process ASP_NET
- mPITab = mP.GetHistory(10)
-
- ' Mise en forme de la Premiere ligne
- trET.BackColor = System.Drawing.Color.Beige
- trET.Font.Bold = True
- trET.ForeColor = System.Drawing.Color.DarkBlue
-
- ' Ajout des Noms de Colonne et Ajout de la ligne dans le Tableau
- AddCell(trET, "N°")
- AddCell(trET, "ID")
- AddCell(trET, "Age")
- AddCell(trET, "Mémoire max utilisée")
- AddCell(trET, "Nbr requêtes")
- AddCell(trET, "Date début")
- AddCell(trET, "Statut")
- AddCell(trET, "Raison échec")
- tbProcess.Rows.Add(trET)
-
- ' Boucle de lecture et d'affichage dans le tableau des Informations sur les Process
- For Each mPi In mPITab
- Dim tr As New TableRow()
-
- AddCell(tr, i) ' Ajoute le N° de l'historique
- AddCell(tr, mPi.ProcessID.ToString) ' Affiche l'ID du process
- AddCell(tr, AfficheAge(mPi.Age)) 'Affiche l'âge du process en Détail
- AddCell(tr, AfficheTaille(mPi.PeakMemoryUsed)) 'Affiche la mémoire maximale utilisée
- AddCell(tr, mPi.RequestCount.ToString) 'nombre de requête traitées
- AddCell(tr, mPi.StartTime.ToString) 'la date du début du process
- AddCell(tr, mPi.Status.ToString) 'son statut
- AddCell(tr, mPi.ShutdownReason.ToString) 'la raison de son arrêt
-
- tbProcess.Rows.Add(tr)
- i += 1
- Next
- End Sub
-
- ' -----------------------------------------------------
- Private Sub AddCell(ByVal tr As TableRow, ByVal sM As String)
- 'Ajoute une cellule dans la ligne du tableau
- Dim td As New TableCell()
- td.Text = sM
- tr.Cells.Add(td)
- End Sub
-
- ' -----------------------------------------------------
- Private Function AfficheAge(ByVal LeTimeSpan As TimeSpan) As String
- ' Affiche le temps en détail de vie du process ASPNET
- Dim Retour As String = ""
- Retour = TestZero(LeTimeSpan.Days, "J", False)
- Retour &= " " & TestZero(LeTimeSpan.Hours, "H", False)
- Retour &= " " & TestZero(LeTimeSpan.Minutes, "M", False)
- Retour &= " " & TestZero(LeTimeSpan.Seconds, "S", False)
- Retour &= " " & TestZero(LeTimeSpan.Milliseconds, "mS", False)
-
- Return Retour
- End Function
-
- ' -----------------------------------------------------
- Private Function AfficheTaille(ByVal TailleMemoire As Integer) As String
- ' Crée le détail de la taille des données
- Dim TailleGO As Double = 0
- Dim TailleMO As Double = 0
- Dim TailleKO As Double = 0
- Dim Retour As String = ""
-
- TailleGO = (TailleMemoire / 1048576) ' Nombre de Giga Octets
- TailleMO = (TailleGO - Int(TailleGO)) * 1024 ' Nombre de Mega Octets
- TailleKO = (TailleMO - Int(TailleMO)) * 1024 ' Nombre de Kilo Octets
-
- Retour = TestZero(TailleGO, "Go", False)
- Retour &= " " & TestZero(TailleMO, "Mo", False)
- Retour &= " " & TestZero(TailleKO, "Ko", False)
-
- Return Retour
- End Function
-
- ' -----------------------------------------------------
- Private Function TestZero(ByVal Lavaleur As Integer, ByVal LUnite As String, ByVal TestPlur As Boolean) As String
- ' Vérifie la valeur est supérieure à 1 et affiche le pluriel
- If Lavaleur > 1 And TestPlur = True Then
- Return Lavaleur & " " & LUnite & "s"
- ElseIf Lavaleur > 0 Then
- Return Lavaleur & " " & LUnite
- End If
- End Function
-
- ' -----------------------------------------------------
- Private Function IP(ByVal adIp As String) As String
- ' Recupère l'IP de la machine
- Dim myIP As IPHostEntry = Dns.Resolve(adIp)
- Dim sIP As String
- 'sIP = ("HostName :" & myIP.HostName & "<br>")
- sIP += (myIP.AddressList(0).ToString)
-
- Return sIP
- End Function
-
- ' -----------------------------------------------------
- Private Function RecupUtime() As String
- ' Recupère l'Uptime de la machine
- Dim retour As String = ""
- Dim pc As New PerformanceCounter("System", "System Up Time")
- pc.NextValue()
-
- Dim ts As TimeSpan = TimeSpan.FromSeconds(pc.NextValue())
- retour = TestZero(ts.Days, "Jour", True)
- retour &= " " & TestZero(ts.Hours, "Heure", True)
- retour &= " " & TestZero(ts.Minutes, "Minute", True)
- retour &= " " & TestZero(ts.Seconds, "Seconde", True)
- retour &= " " & TestZero(ts.Milliseconds, "MilliSeconde", True)
-
- Return retour
- End Function
- ' -----------------------------------------------------
-
- </script>
- <html>
- <head>
- <title>Process Info</title>
- </head>
- <body bgColor="whitesmoke">
- <form id="Form1" method="post" runat="server">
- <P align="center"><asp:label id="Label1" runat="server" Width="100%" ForeColor="Navy" Font-Bold="True" Font-Names="Times New Roman" Font-Size="Medium" Font-Underline="True">Status des Derniers lancements du Process ASPNET</asp:label></P>
- <br>
- <table width="100%">
- <tr>
- <td width="20%"><b>Machine : </b></td>
- <td><asp:Label id="LabelMachine" runat="server" Width="100%">Label</asp:Label></td>
- </tr>
- <tr>
- <td width="20%"><b>Host Header Name : </b></td>
- <td><asp:Label id="LabelHostname" runat="server" Width="100%">Label</asp:Label></td>
- </tr>
- <TR>
- <td width="20%"><b>IP : </b></td>
- <td><asp:Label id="LabelIP" runat="server" Width="100%">Label</asp:Label></td>
- </TR>
- <TR>
- <td width="20%"><b>Uptime : </b></td>
- <td><asp:Label id="LabelUptime" runat="server" Width="100%">Label</asp:Label></td>
- </TR>
- </table>
- <br><p>
- <asp:Table id="tbProcess" runat="server" CellPadding="1" BorderStyle="Double" BorderColor="Gray" BackColor="LightGray" ForeColor="Navy" HorizontalAlign="Center" Width="95%"></asp:Table></p> </form>
- </body>
- </html>
-
<%@ Page Language="VB" ClientTarget="downlevel" %>
<%@ Import Namespace="System.Web" %>
<%@ Import Namespace="System.Net.Sockets" %>
<%@ Import Namespace="System.Net" %>
<%@ Import Namespace="System.Diagnostics" %>
<script language="VB" runat="server">
' -----------------------------------------------------
Sub Page_Load(obj As object, e As eventargs)
' Chargement au démarrage de la page pour récuperer les informations
AffProcessInfo()
LabelMachine.Text = Server.MachineName
LabelHostname.Text = Request.ServerVariables("SERVER_NAME")
LabelIP.Text = IP(Server.MachineName)
LabelUptime.Text = RecupUtime()
End Sub
' -----------------------------------------------------
Private Sub AffProcessInfo()
' Lancement de la récupération des informations depuis le Serveur
' Déclaration des Objets nécessaires
Dim mP As New ProcessModelInfo()
Dim mPITab As ProcessInfo()
Dim mPi As ProcessInfo
Dim trET As New TableRow()
Dim i As Integer = 1
' Chargement de l'historique (les 10 derniers lancements) des données sur le process ASP_NET
mPITab = mP.GetHistory(10)
' Mise en forme de la Premiere ligne
trET.BackColor = System.Drawing.Color.Beige
trET.Font.Bold = True
trET.ForeColor = System.Drawing.Color.DarkBlue
' Ajout des Noms de Colonne et Ajout de la ligne dans le Tableau
AddCell(trET, "N°")
AddCell(trET, "ID")
AddCell(trET, "Age")
AddCell(trET, "Mémoire max utilisée")
AddCell(trET, "Nbr requêtes")
AddCell(trET, "Date début")
AddCell(trET, "Statut")
AddCell(trET, "Raison échec")
tbProcess.Rows.Add(trET)
' Boucle de lecture et d'affichage dans le tableau des Informations sur les Process
For Each mPi In mPITab
Dim tr As New TableRow()
AddCell(tr, i) ' Ajoute le N° de l'historique
AddCell(tr, mPi.ProcessID.ToString) ' Affiche l'ID du process
AddCell(tr, AfficheAge(mPi.Age)) 'Affiche l'âge du process en Détail
AddCell(tr, AfficheTaille(mPi.PeakMemoryUsed)) 'Affiche la mémoire maximale utilisée
AddCell(tr, mPi.RequestCount.ToString) 'nombre de requête traitées
AddCell(tr, mPi.StartTime.ToString) 'la date du début du process
AddCell(tr, mPi.Status.ToString) 'son statut
AddCell(tr, mPi.ShutdownReason.ToString) 'la raison de son arrêt
tbProcess.Rows.Add(tr)
i += 1
Next
End Sub
' -----------------------------------------------------
Private Sub AddCell(ByVal tr As TableRow, ByVal sM As String)
'Ajoute une cellule dans la ligne du tableau
Dim td As New TableCell()
td.Text = sM
tr.Cells.Add(td)
End Sub
' -----------------------------------------------------
Private Function AfficheAge(ByVal LeTimeSpan As TimeSpan) As String
' Affiche le temps en détail de vie du process ASPNET
Dim Retour As String = ""
Retour = TestZero(LeTimeSpan.Days, "J", False)
Retour &= " " & TestZero(LeTimeSpan.Hours, "H", False)
Retour &= " " & TestZero(LeTimeSpan.Minutes, "M", False)
Retour &= " " & TestZero(LeTimeSpan.Seconds, "S", False)
Retour &= " " & TestZero(LeTimeSpan.Milliseconds, "mS", False)
Return Retour
End Function
' -----------------------------------------------------
Private Function AfficheTaille(ByVal TailleMemoire As Integer) As String
' Crée le détail de la taille des données
Dim TailleGO As Double = 0
Dim TailleMO As Double = 0
Dim TailleKO As Double = 0
Dim Retour As String = ""
TailleGO = (TailleMemoire / 1048576) ' Nombre de Giga Octets
TailleMO = (TailleGO - Int(TailleGO)) * 1024 ' Nombre de Mega Octets
TailleKO = (TailleMO - Int(TailleMO)) * 1024 ' Nombre de Kilo Octets
Retour = TestZero(TailleGO, "Go", False)
Retour &= " " & TestZero(TailleMO, "Mo", False)
Retour &= " " & TestZero(TailleKO, "Ko", False)
Return Retour
End Function
' -----------------------------------------------------
Private Function TestZero(ByVal Lavaleur As Integer, ByVal LUnite As String, ByVal TestPlur As Boolean) As String
' Vérifie la valeur est supérieure à 1 et affiche le pluriel
If Lavaleur > 1 And TestPlur = True Then
Return Lavaleur & " " & LUnite & "s"
ElseIf Lavaleur > 0 Then
Return Lavaleur & " " & LUnite
End If
End Function
' -----------------------------------------------------
Private Function IP(ByVal adIp As String) As String
' Recupère l'IP de la machine
Dim myIP As IPHostEntry = Dns.Resolve(adIp)
Dim sIP As String
'sIP = ("HostName :" & myIP.HostName & "<br>")
sIP += (myIP.AddressList(0).ToString)
Return sIP
End Function
' -----------------------------------------------------
Private Function RecupUtime() As String
' Recupère l'Uptime de la machine
Dim retour As String = ""
Dim pc As New PerformanceCounter("System", "System Up Time")
pc.NextValue()
Dim ts As TimeSpan = TimeSpan.FromSeconds(pc.NextValue())
retour = TestZero(ts.Days, "Jour", True)
retour &= " " & TestZero(ts.Hours, "Heure", True)
retour &= " " & TestZero(ts.Minutes, "Minute", True)
retour &= " " & TestZero(ts.Seconds, "Seconde", True)
retour &= " " & TestZero(ts.Milliseconds, "MilliSeconde", True)
Return retour
End Function
' -----------------------------------------------------
</script>
<html>
<head>
<title>Process Info</title>
</head>
<body bgColor="whitesmoke">
<form id="Form1" method="post" runat="server">
<P align="center"><asp:label id="Label1" runat="server" Width="100%" ForeColor="Navy" Font-Bold="True" Font-Names="Times New Roman" Font-Size="Medium" Font-Underline="True">Status des Derniers lancements du Process ASPNET</asp:label></P>
<br>
<table width="100%">
<tr>
<td width="20%"><b>Machine : </b></td>
<td><asp:Label id="LabelMachine" runat="server" Width="100%">Label</asp:Label></td>
</tr>
<tr>
<td width="20%"><b>Host Header Name : </b></td>
<td><asp:Label id="LabelHostname" runat="server" Width="100%">Label</asp:Label></td>
</tr>
<TR>
<td width="20%"><b>IP : </b></td>
<td><asp:Label id="LabelIP" runat="server" Width="100%">Label</asp:Label></td>
</TR>
<TR>
<td width="20%"><b>Uptime : </b></td>
<td><asp:Label id="LabelUptime" runat="server" Width="100%">Label</asp:Label></td>
</TR>
</table>
<br><p>
<asp:Table id="tbProcess" runat="server" CellPadding="1" BorderStyle="Double" BorderColor="Gray" BackColor="LightGray" ForeColor="Navy" HorizontalAlign="Center" Width="95%"></asp:Table></p> </form>
</body>
</html>
Conclusion
Tout est dans le code.
Dans le ZIP, vous avez la version en un seul fichier ASPX a simplement placer sur le serveur, mais aussi le binome ASPX/ASPX.VB avec le code behind à insérer dans un projet existant.
Cette source est basée sur l'article très intéressant de c2i.fr visible ici : - http://www.c2i.fr/code.aspx?IDCode=361
Bon coding.
Romelard Fabrice (Alias F___)
Sources du même auteur
Sources de la même categorie
Commentaires et avis
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Forum
GRIDVIEW CHECKBOXGRIDVIEW CHECKBOX par invent001
Cliquez pour lire la suite par invent001 OUTIL MYSQLOUTIL MYSQL par nobla
Cliquez pour lire la suite par nobla
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|