Sommaire
Sur un environnement Windows le serveur Constellation peut publier des compteurs de performance afin de suivre son activité en temps réel.
Vous pourrez alors exploiter ces indicateurs de performance avec des outils de supervision tel quel New Relic, Nagios, Cacti, dotcom-monitor, Applications Manager, ou plus simplement en utilisant la MMC “Analyseur de Performances” de Windows.
Vous pouvez également développer vos propres applications pour suivre les indicateurs de performance de votre serveur Constellation étant donné que ces compteurs Windows sont exposés en WMI (voir la documentation). Pour les développeurs .NET, la classe PerformanceCounter vous permettra d’interroger ces compteurs très facilement.
Pour finir, vous trouverez dans le catalogue de package gratuit, le package PerfCounter qui permet de publier en temps réel des compteurs de performance Windows en tant que StateObject. Autrement dit vous pouvez suivre l’activité et les performances de votre Constellation via des StateObjects de votre Constellation.
Activer les compteurs de performance
Pour activer les compteurs de performance, vous devez manuellement éditer le serveur de configuration pour ajouter la section et la clé de configuration suivante :
1 2 3 |
<appSettings> <add key="EnablePerformanceCounters" value="true" /> </appSettings> |
Vous pouvez éditer ce fichier depuis la Console Constellation, depuis le SDK ou directement sur votre serveur avec votre éditeur favori.
Comme il s’agit d’une modification de bas niveau, vous devez nécessairement redémarrer le service Constellation :
- Soit via la MMC “Services” :
- Soit en ligne de commande :
1 |
net stop ConstellationServer && net start ConstellationServer |
Vous pourrez ensuite suivre les indicateurs de performance de votre Constellation avec un outil de supervision, l’analyseur de performances de Windows ou même développer vos propres outils en exploitant l’API PerformanceCounter sous .NET ou WMI.
Utiliser l’analyseur de performances Windows
Dans les outils d’administration Windows, lancez la MMC “Analyseur de Performances” et cliquer sur le bouton “Ajouter” dans la toolbar.
Tous les compteurs Constellation sont disponibles dans la catégories “Constellation Server” puis sélectionnez le ou les compteurs à suivre :
A noter que cette fonctionnalité n’est disponible que sur un environnement Windows, la plateforme Linux n’ayant pas d’équivalent.
Utiliser le package PerfCounter
Le package PerfCounter permet de suivre des compteurs de performance Windows et de les injecter en tant que StateObject dans Constellation. Il est donc possible suivre l’activité et les performances de votre Constellation via des StateObjects de votre Constellation.
Pour plus d’information sur ce package et son utilisation : https://developer.myconstellation.io/package-library/perfcounter/
Ci-dessous la définition des compteurs de performance publiés Constellation pour le package PerfCounter :
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 |
<!-- Constellation Server / StateObjects provider --> <perfCounter id="ConstellationPushStateObject" categoryName="Constellation Server" counterName="# PushStateObject / sec" instanceName="default" /> <perfCounter id="ConstellationPushStateObjectCount" categoryName="Constellation Server" counterName="Total PushStateObject" instanceName="default" /> <perfCounter id="ConstellationUpdateStateObject" categoryName="Constellation Server" counterName="# UpdateStateObject / sec" instanceName="default" /> <perfCounter id="ConstellationUpdateStateObjectCount" categoryName="Constellation Server" counterName="Total UpdateStateObject" instanceName="default" /> <perfCounter id="ConstellationRequestStateObjects" categoryName="Constellation Server" counterName="# RequestStateObjects /sec" instanceName="default" /> <perfCounter id="ConstellationRequestStateObjectsCount" categoryName="Constellation Server" counterName="Total RequestStateObjects" instanceName="default" /> <perfCounter id="ConstellationSubscribeStateObjects" categoryName="Constellation Server" counterName="# SubscribeStateObjects / sec" instanceName="default" /> <perfCounter id="ConstellationSubscribeStateObjectsCount" categoryName="Constellation Server" counterName="Total SubscribeStateObjects" instanceName="default" /> <perfCounter id="ConstellationStateObjectsCount" categoryName="Constellation Server" counterName="Current StateObjects Count" instanceName="default" /> <perfCounter id="ConstellationStateObjectSubscriptionCount" categoryName="Constellation Server" counterName="Current StateObject Subscriptions" instanceName="default" /> <!-- Constellation Server / Messaging --> <perfCounter id="ConstellationSendMessage" categoryName="Constellation Server" counterName="# SendMessage / sec" instanceName="default" /> <perfCounter id="ConstellationSendMessageCount" categoryName="Constellation Server" counterName="Total SendMessage" instanceName="default" /> <perfCounter id="ConstellationReceiveMessage" categoryName="Constellation Server" counterName="# ReceiveMessage / sec" instanceName="default" /> <perfCounter id="ConstellationReceiveMessageCount" categoryName="Constellation Server" counterName="Total ReceiveMessage" instanceName="default" /> <!-- Constellation Server / Logging --> <perfCounter id="ConstellationWriteLog" categoryName="Constellation Server" counterName="# WriteLog / sec" instanceName="default" /> <perfCounter id="ConstellationWriteLogCount" categoryName="Constellation Server" counterName="Total WriteLog" instanceName="default" /> <!-- Constellation Server / Packages --> <perfCounter id="ConstellationPackageConnections" categoryName="Constellation Server" counterName="Total Package connections" instanceName="default" /> <perfCounter id="ConstellationPackageDisconnections" categoryName="Constellation Server" counterName="Total Package disconnections" instanceName="default" /> <perfCounter id="ConstellationPackagesConnected" categoryName="Constellation Server" counterName="Current Packages connected" instanceName="default" /> <!-- Constellation Server / Sentinels --> <perfCounter id="ConstellationSentinelConnections" categoryName="Constellation Server" counterName="Total Sentinel connections" instanceName="default" /> <perfCounter id="ConstellationSentinelDisconnections" categoryName="Constellation Server" counterName="Total Sentinel disconnections" instanceName="default" /> <perfCounter id="ConstellationSentinelsConnected" categoryName="Constellation Server" counterName="Current Sentinels connected" instanceName="default" /> <!-- Constellation Server / Consumers --> <perfCounter id="ConstellationConsumerConnections" categoryName="Constellation Server" counterName="Total Consumers connections" instanceName="default" /> <perfCounter id="ConstellationConsumerDisconnections" categoryName="Constellation Server" counterName="Total Consumers disconnections" instanceName="default" /> <perfCounter id="ConstellationConsumerConnected" categoryName="Constellation Server" counterName="Current Consumers connected" instanceName="default" /> <!-- Constellation Server / API REST --> <perfCounter id="ConstellationWebApiSubscriptionCount" categoryName="Constellation Server" counterName="Current subscriptions (HTTP REST API)" instanceName="default" /> <perfCounter id="ConstellationWebApiRequestInProcess" categoryName="Constellation Server" counterName="Current long-polling requests (HTTP REST API)" instanceName="default" /> |
Démarrez la discussion sur le forum Constellation