Sommaire
Le package PerfCounter permet de suivre des compteurs de performance Windows et de les injecter en tant que StateObject dans Constellation.
Le code source du package est disponible sur : https://github.com/myconstellation/constellation-packages/tree/master/PerfCounter
Installation
Depuis le “Online Package Repository” de votre Console Constellation, déployez le package PerfCounter :
Une fois le package télécharger votre repository local, sélectionnez la sentinelle sur laquelle déployer le package.
Pour finir, sur la page de Settings, vous devez obligatoirement définir le setting “PerfCounters”. Il s’agit d’un setting de type “ConfigurationSection” c’est à dire que la configuration de ce setting est décrite en XML.
1 2 3 4 5 |
<perfCounterSection xmlns="urn:PerfCounter"> <perfCounters> <perfCounter id="<< StateObject Name >>" categoryName="<< Performance Counter Category Name >>" counterName="<< Performance Counter Counter Name >>" instanceName="<< Optionnal Performance Counter Instance Name >>" /> </perfCounters> </perfCounterSection> |
Vous devez spécifier une liste de <perfCounter> dont les attributs sont :
- id (obligatoire) : l’identifiant unique de ce compteur performance qui sera utilisé comme nom pour le StateObject
- categoryName (obligatoire) : la catégorie du compteur de performance
- counterName (obligatoire) : le nom du compteur de performance
- instanceName (optionnel) : le nom de l’instance du compteur de performance si nécessaire
- machineName (optionnel) : le nom de la machine sur laquelle récupérer le compteur de performance (si vide, c’est la machine il s’agit local)
Par exemple pour récupérer la mémoire RAM disponible (catégorie “Memory”, nom “Available MBytes”, aucune instance) :
1 |
<perfCounter id="MemoryAvailableMBytes" categoryName="Memory" counterName="Available MBytes" /> |
Pour la consommation globale du CPU (catégorie “Processor”, nom “% Processor Time”, instance “_Total”) :
1 |
<perfCounter id="ProcessorTime" categoryName="Processor" counterName="% Processor Time" instanceName="_Total" /> |
Chaque produit (Constellation Server y compris) peuvent publier des compteurs de performances (ASP.NET, IIS, SQL Server, Windows, etc..). Vous pouvez donc facilement les injecter dans Constellation.
Par exemple, ci-dessous une configuration du package injectant dans Constellation les compteurs de performance relatif au processeur, mémoire RAM, interfaces réseau, disque physique C:, ASP.NET, la CLR .net, le service IIS et SQL Server :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
<perfCounterSection xmlns="urn:PerfCounter"> <perfCounters> <!-- Processor --> <perfCounter id="ProcessorTime" categoryName="Processor" counterName="% Processor Time" instanceName="_Total" /> <perfCounter id="ProcessorQueueLength" categoryName="System" counterName="Processor Queue Length" /> <!-- Disk --> <perfCounter id="Disk0_IdleTime" categoryName="PhysicalDisk" counterName="% Idle Time" instanceName="0 C:" /> <perfCounter id="Disk0_SecPerRead" categoryName="PhysicalDisk" counterName="Avg. Disk sec/read" instanceName="0 C:"/> <perfCounter id="Disk0_SecPerWrite" categoryName="PhysicalDisk" counterName="Avg. Disk sec/write" instanceName="0 C:" /> <perfCounter id="Disk0_QueueLength" categoryName="PhysicalDisk" counterName="Current Disk Queue Length" instanceName="0 C:" /> <!-- Memory --> <perfCounter id="MemoryAvailableMBytes" categoryName="Memory" counterName="Available MBytes" /> <perfCounter id="MemoryPagesPerSec" categoryName="Memory" counterName="Pages/sec" /> <perfCounter id="MemoryCacheBytes" categoryName="Memory" counterName="Cache Bytes" /> <!-- Network Interface --> <perfCounter id="NetworkIntefaceBytesPerSec" categoryName="Network Interface" counterName="Bytes Total/sec" instanceName="Broadcom NetXtreme 57xx Gigabit Controller" /> <perfCounter id="NetworkIntefaceOutputQueueLength" categoryName="Network Interface" counterName="Output Queue Length" instanceName="Broadcom NetXtreme 57xx Gigabit Controller" /> <!-- Paging File --> <perfCounter id="PagingFileUsage" categoryName="Paging File" counterName="% Usage" instanceName="_Total" /> <!-- .NET CLR --> <perfCounter id="DotNetExceptionThrownPerSec" categoryName=".NET CLR Exceptions" counterName="# of Exceps Thrown / Sec" instanceName="_Global_" /> <perfCounter id="DotNetTotalCommittedBytes" categoryName=".NET CLR Memory" counterName="# Total Committed Bytes" instanceName="_Global_" /> <!-- ASP.NET --> <perfCounter id="AspNetRequestPerSec" categoryName="ASP.NET Applications" counterName="Requests/Sec" instanceName="__Total__" /> <perfCounter id="AspNetApplicationRestart" categoryName="ASP.NET" counterName="Application Restarts" /> <perfCounter id="AspNetRequestWaitTime" categoryName="ASP.NET" counterName="Request Wait Time" /> <perfCounter id="AspNetRequestQueued" categoryName="ASP.NET" counterName="Requests Queued" /> <!-- IIS --> <perfCounter id="IISGetRequestPerSec" categoryName="Web Service" counterName="Get Requests/sec" instanceName="_Total" /> <perfCounter id="IISPostRequestPerSec" categoryName="Web Service" counterName="Post Requests/sec" instanceName="_Total" /> <perfCounter id="IISCurrentConnections" categoryName="Web Service" counterName="Current Connections" instanceName="_Total" /> <!-- SQL Server --> <perfCounter id="SqlBufferCacheHitRatio" categoryName="MSSQL$SQL2012:Buffer Manager" counterName="Buffer cache hit ratio" /> <perfCounter id="SqlPageLifeExpectancy" categoryName="MSSQL$SQL2012:Buffer Manager" counterName="Page life expectancy" /> <perfCounter id="SqlBatchRequestsPerSec" categoryName="MSSQL$SQL2012:SQL Statistics" counterName="Batch Requests/Sec" /> <perfCounter id="SqlSQLCompilationsPerSec" categoryName="MSSQL$SQL2012:SQL Statistics" counterName="SQL Compilations/Sec" /> <perfCounter id="SqlSQLReCompilationsPerSec" categoryName="MSSQL$SQL2012:SQL Statistics" counterName="SQL Re-Compilations/Sec" /> <perfCounter id="SqlUserConnections" categoryName="MSSQL$SQL2012:General Statistics" counterName="User Connections" /> <perfCounter id="SqlLockWaitsPerSec" categoryName="MSSQL$SQL2012:Locks" counterName="Lock Waits/sec" instanceName="_Total" /> <perfCounter id="SqlPageSplitsPerSec" categoryName="MSSQL$SQL2012:Access Methods" counterName="Page Splits/sec" /> <perfCounter id="SqlProcessesBlocked" categoryName="MSSQL$SQL2012:General Statistics" counterName="Processes Blocked" /> <perfCounter id="SqlCheckpointPagesPerSec" categoryName="MSSQL$SQL2012:Buffer Manager" counterName="Checkpoint Pages/sec" /> </perfCounters> </perfCounterSection> |
Vous pouvez également déployer ce package manuellement dans la configuration de votre Constellation :
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<package name="perfcounter"> <settings> <setting key="PerfCounters"> <content> <perfCounterSection xmlns="urn:PerfCounter"> <perfCounters> <perfCounter id="<< StateObject Name >>" categoryName="<< Performance Counter Category Name >>" counterName="<< Performance Counter Counter Name >>" instanceName="<< Optionnal Performance Counter Instance Name >>" /> </perfCounters> </perfCounterSection> </content> </setting> </settings> </package> |
Détails du package
Les Settings
Nom | Type | Détail | Description |
PerfCounters | ConfigurationSection(XML) | Obligatoire | Configuration des compteurs de performance à suivre |
RefreshInterval | Int32 | Optionnel Par défaut : 1000 |
Intervalle de temps en milliseconde pour interroger les compteurs de performance enregistrés et mettre à jour les StateObjects correspondants. |
Les StateObjects
Vous retrouverez autant de StateObject que de compteur de performance enregistrés dans la configuration de votre package.
Nom | Type | Description |
<< ID du PerfCounter >> | Single | Valeur numérique du compteur de performance |
Les MessageCallbacks
Ce package n’expose aucun MessageCallback.
Quelques exemples
-
Afficher les valeurs des PerfCounters de différents serveurs Windows sur une page Web
-
Piloter une bande de LED en fonction du nombre de requête HTTP sur un serveur IIS avec un Arduino/ESP
Démarrez la discussion sur le forum Constellation