Summary
In Sycamore release, we are adding a series of performance counters to AXEngine and License Server so that IT administrators can easily monitor the critical system performance, e.g. real time session counts and license usage data, via standard tools like Performance Monitor or other WMI tools.
The article will describe these performance counters in detail and tasks needed to be done by installer and QA.
Performance Counter General Concepts
Performance counters are grouped into categories. Each counter under the specific category is identified by a unique counter name. At runtime, performance counters are further identified by running instances. All the performance counters discussed here are multi-instanced and the runtime instance name is composed from current AppDomain name using following rules:
...
AXEngine performance counters have application specific settings to allow user selectively enable or disable certain or all categories of performance counters in app.config. This allows further reduction of any overhead of the performance counters by disable them if user doesn’t need to monitor them.
AXEngine Performance Counters
AXEngine is the core component used by WebAccess and ReST Service. Currently, following categories and counters are supported:
...
Counter definitions are contained in AXEngine\Instrumentation\AXEnginePerfCounterInstaller.cs source file.
AX License Server Performance Counters
Following performance counters are defined in AX License Server WCF service:
...
Counter definitions are contained in CMLicenseService\CMLicenseServiceInstaller.cs source file.
Setup Changes
As part of installer tasks, AX setup must register performance counters when installing following components:
...
Installer must register these performace counters exactly matching what is in our code if it creates the registration separately. Or use .NET InstallUtil to perform the registration.
QA Testing
QA should test to make sure that enable or disable these performance counters does not have adverse impact of product, e.g. no obvious slowdowns, no crashes result of these performance counters etc. And make sure the performance counters work the way it is intended.
Localization
These performance counters are not localized. All counter category names and counter names strictly follow what are hard-coded in the source code.
...