How to integrate a Performance Guard agent with a CapaInstaller agent on a client PC.
Introduction
This document describes how to integrate a Performance Guard agent with a CMS agent on a client PC.
The integration enables you to pass performance data measured by a PG agent to a CMS agent.
The PG agent will measure performance data and at regular intervals, specified by the CMS agent, store the performance data in local xml files. The CMS agent will later collect the xml file content and send it to the CMS backend.
Installation
The installation procedure consists of the following steps:
- Install a CapaInstaller agent on the PC, if not already installed.
- Install a PG agent (version 5.6 and later) on the PC, if not already installed.
Install a CapaInstaller agent if not already installed
Please follow the CapaInstaller documentation for installing an agent.
Install a PG agent if not already installed
Please follow the PG agent installation documentation if you are deploying an agent that should connect to the PG server.
If you are deploying a standalone PG agent you should simply install the agent using the msi file by executing the following command (as an administrator):
32-bit: msiexec /i CI_PGAgent.msi /qn
64-bit: msiexec /i CI_PGAgent64.msi /qn
The agent can of course be deployed using CMS.
The agent will be installed in the following default directory:
32-bit: c:\Program Files (x86)\CI\Performance Guard Agent
64-bit: c:\Program Files\CI\Performance Guard Agent
The agent will be installed as a windows service called "CI Performance Guard Agent" and the service is started automatically.
Configuration
Standalone configuration
If the PG agent does not communicate with a PG server you must do the following to configure the integration between PG and CMS:
- Stop the Performance Guard Agent Service
- Create a text file with agent registry settings. The following is an example text file:
Configuration = "ReportInterval=60 DynamicMachineReport=true DiskIOReport=true ProcessStatInterval=10 ContextSwitchPerProcess=false ServerMetrics=true CollectOSStart=true DoFullStartupReport=true StartupTimeoutSecs=300 StartupCondition=<PROCESS; winlogon.exe; started> LoginStartCondition=<SESSION; logon> LoginEndCondition=<PROCESS; explorer.exe; started> CMSEnabled=true CMSForced=false CMSMaxFiles=300 CMSDir=CMS\ CMSReportTime=180"
3. Open a command prompt in the Performance Guard agent directory.
4. Install the registry settings from the text file (in this case "CMS_PG.cfg") by executing the following command
CI_GUARDagent -configfile="CMS_PG.cfg" -updateregistry
5. Start the Performance Guard Agent Service
The above steps can be done by the CapaInstaller agent at any time to control the behavior of the PG agent.
Server Configuration
If the PG agent is communicating with a PG server you must enable the "Integration Enabled" option in the CMS section of the agent configuration using the PG Web Console on the PG server. There you can specify all CMS integration parameters.
If you need to control the CMS integration parameters locally on the client you can do the following:
- Disable the "Always send reports to CMS" option in the CMS section of the agent configuration using the PG Web Console on the PG server.
- Stop the Performance Guard Agent Service
- Create a text file with agent registry settings. The following is an example text file:
CMSInterface = "CMSMaxFiles=300 CMSDir=CMS\ CMSReportTime=180"
4. Open a command prompt in the Performance Guard agent directory.
5. Install the registry settings from the text file (in this case "CMS_PG.cfg") by executing the following command
GUARDagent -configfile="CMS_PG.cfg" -updateregistry
6. Start the Performance Guard Agent Service
Registry Parameters
The PG agent reads/stores its configuration from the following registry key:
32 Bit system: HKLM\SOFTWARE\Premitech\E2EAgent
64 bit system: HKLM\SOFTWARE\wow6432Node\Premitech\E2EAgent
If the PG agent is an OEM version, the registry key will be:
32 Bit system: HKLM\SOFTWARE\Premitech\<OEM-name>_E2EAgent
64 bit system: HKLM\SOFTWARE\wow6432Node\Premitech\<OEM-name>_E2EAgent
The CMSInterface registry parameter
The CapaInstaller agent can control the behavior of the PG agent by setting the value of the "CMSInterface" registry parameter. The value is itself a multi-line string with a name-value pair on each line.
The possible named values are:
Name | Default | Range | Precedence | |
CMSDir | CMS\ | Three valid path types: 1) "." 2) "<subdir>" 3) "<drive>:<path>" | Local directory where data files are stored. | |
CMSMaxFiles | 20 | [1;n] | Maximum number of data files in the directory. The oldest files are deleted when the number of files reaches CMSMaxFiles. | |
CMSReportTime | 900 | ReportInterval x [1;n] | The number of seconds between each data file is stored to disk. The number of seconds should be larger than the ReportInterval value from the Configuration registry parameter - and preferably a multiplum of ReportInterval. |
The "Configuration" registry parameter
If the PG agent is connected to a PG server it will initially receive its configuration from the PG server. The configuration is then stored locally in the registry parameter "Configuration". If the PG agent is not connected to a PG server, the value of the "Configuration" parameter will be empty.
The "Configuration" parameter value is a multi-line text string, where each line is a configuration parameter and value pair.
By default the PG agent does not integrate with CMS, so you must set some parameters manually if they are not controlled by a PG server.
The following table is a subset of parameters that can be set in the "Configuration" registry parameter:
Parameter | Default | Range | Description | ||
CMSEnabled | false | true/false | Enables/disables CMS integration When this is enabled´, the PG agent will also generate a full Startup report, regardless of any other options. | ||
CMSForced | false | true/false | If set to true, the value of the CMSInterface registry parameter is ignored, i.e. PG agent is in control. If set to false, the value of the CMSInterface registry parameter takes precedence over the Configuration registry parameter, i.e. the CMS agent is in control. | ||
CMSDir | CMS | Three valid types: Three valid path types: 1) "." 2) "<subdir>" 3) "<drive>:<path>" | Local directory where data files are stored. | ||
CMSMaxFiles | 20 | [1;n] | Maximum number of data files in the directory. The oldest files are deleted when the number of files reaches CMSMaxFiles. | ||
CMSReportTime | 900 | ReportInterval x [1;n] | The number of seconds between each data file is stored to disk. The number of seconds should be larger than the ReportInterval value from the Configuration registry parameter - and preferably a multiplum of ReportInterval. | ||
ReportInterval | 60 | [1;n] | Report period in seconds. See PG documentation | ||
ServerMetrics | false | true/false | Measure context switches etc. See PG documentation | ||
CollectOSStart | false | true/false | Measure startup/login time. See PG documentation | ||
StartupCondition | - | - | End condition for startup measurement. See PG documentation | ||
StartupTimeOutSecs | 300 | [1;n] | The timeout value for the startup condition. See PG documentation | ||
LoginStartCondition | - | - | Start condition for login measurement. See PG documentation | ||
LoginEndCondition | - | - | End condition for login measurement. See PG documentation | ||
DynamicMachineReport | true | true/false | See PG documentation | ||
DiskIOReport | false | true/false | See PG documentation | ||
ProcessStatInterval | 10 | [1;n] | Sample period in seconds. | ||
ContextSwitchPerProcess | false | true/false | Measure context switches per process. See PG documentation |
LocationData Files
The name of the produced data files is PGData<nn>.xml (<nn> is the date in seconds since epoch).
The location of the files is defined by the CMSDir parameter. Be aware that a service like the PG agent is not allowed to write anywhere on the local disk.
If the value of the CMSDir parameter is not a full path, it is considered to be a subdirectory of the “%ProgramData%" folder. This is a safe location for services to write files.
The value of the %ProgramData% environment variable depends on the type of operating system:
OS | Location | ||
Windows 11 | C:\Windows\System32\config\systemprofile\AppData\Roaming | ||
Windows 10 | C:\Windows\System32\config\systemprofile\AppData\Roaming | ||
Windows 7 | C:\ProgramData | ||
Windows Vista | C:\ProgramData | ||
Windows XP | C:\Documents and Settings\All Users\Application Data |
The actual path used by the agent can be seen in the web console of the agent:
http://127.0.0.1:4007/cmd/cmd?group=view&cmd=VIEW_ERRORS
Use the Search filter to look for:
Example :Default | Info | E2EReportAssembler | CMS parameter | Data Files Path='C:\ProgramData \CMS\' |
NOTE: If you can't find the folder in Windows, the reason can be that you don't have the permission to view the folder, or that your Windows Explorer options hide protected and hidden folders from you. Try opening the folder anyway by typing the name of the folder into Windows Explorer.
File Format
- AggregateRunningSystemReport :Aggregated values describing the usage of the CPU, Memory, DiskIO, NetIO, and TotalUtilizationMeasure. All the values are described in a 1 to 100 usage measure. Where 1 is very low usage and 100 is maximum usage. NetworkIO and DiskIO usages are calculated from reference values stored in the PG configuration. The TotalUtilizationMeasure is the worst (highest) of the 4 basic usage measures.
- RunningSystemReport: Detailed information about the current performance of the machine
- StartupBriefReport: information about the time and duration of an operating system startup event.
- LoginBriefReport: Information about the time and duration of a user login event. Also contains the name of the user that logged in.
<?xml version="1.0" encoding="windows-1252"?> <PerformanceGuardData> <PGData Version="SVN- ="/> <AggregateRunningSystemReport> <CPU ValueType='ULong'>4</CPU> <Mem ValueType='ULong'>83</Mem> <DiskIO ValueType='ULong'>14</DiskIO> <NetIO ValueType='ULong'>0</NetIO> <TotalUtilizationMeasure ValueType='ULong'>83</TotalUtilizationMeasure> </AggregateRunningSystemReport> <RunningSystemReport> <SampleInterval ValueType='ULong'>1351000440</SampleInterval> <PeakCPUUsage ValueType='UChar'>100</PeakCPUUsage> <AverageCPUUsage ValueType='ULong'>4</AverageCPUUsage> <LowFreePhysicalMemory ValueType='ULong'>2095064</LowFreePhysicalMemory> <AverageFreePhysicalMemory ValueType='ULong'>2127962</AverageFreePhysicalMemory> <LowFreePagingFile ValueType='ULong'>2867</LowFreePagingFile> <AverageFreePagingFile ValueType='ULong'>2909</AverageFreePagingFile> <LowVirtualMemory ValueType='ULong'>5031348</LowVirtualMemory> <AverageFreeVirtualMemory ValueType='ULong'>5108404</AverageFreeVirtualMemory> <AverageDiskWrites ValueType='ULong'>256949</AverageDiskWrites> <AverageDiskReads ValueType='ULong'>10939</AverageDiskReads> <PeakDiskWrites ValueType='ULong'>5733826</PeakDiskWrites> <PeakDiskReads ValueType='ULong'>73735</PeakDiskReads> <AverageContextSwitches ValueType='ULong'>22910</AverageContextSwitches> <PeakContextSwitches ValueType='ULong'>94072</PeakContextSwitches> <AverageSendBytes ValueType='ULong'>632</AverageSendBytes> <PeakSendBytes ValueType='ULong'>3033</PeakSendBytes> <AverageRecvBytes ValueType='ULong'>21415</AverageRecvBytes> <PeakRecvBytes ValueType='ULong'>186573</PeakRecvBytes> </RunningSystemReport> <StartupBriefReport> <SampleTime>15035</SampleTime> <StartTime>1351000440</StartTime> <Success>true</Success> </startupBriefReport> <LoginBriefReport> <SampleTime>23000<SampleTime> <LoginTime>1351500440<LoginTime> <LoggedInUser>User25<LoggedInUser> <Success>true<Success> </LoginBriefReport> </PerformanceGuardData>