CapaInstaller Integration
- Martin Moghadam
The following describes how to integrate PerformanceGuard agents with CapaInstaller agents on client computers.
The integration lets you pass performance data measured by PerformanceGuard agents to CapaInstaller agents.
The PerformanceGuard agent will measure performance data and at regular intervals, specified by the CapaInstaller agent, store the performance data in local XML files. The CapaInstaller agent will later collect the XML file content and send it to the CapaInstaller backend.
Prerequisites
- A CapaInstaller agent must be installed on the client computer
- The PerformanceGuard agent must be installed on the client computer
Standalone Configuration
If the PerformanceGuard agent doesn't communicate with the server, do the following to configure integration between PerformanceGuard and CapaInstaller:
- Stop the PerformanceGuard Agent service.
- Create a configuration text file with agent registry settings.
The configuration file must be in ANSI format.
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" CMSInterface = "CMSMaxFiles=300 CMSDir=CMS\ CMSReportTime=180"
3. Open a command prompt in the PerformanceGuard agent folder
4. 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
5. Start the PerformanceGuard Agent service
The above steps can be performed by the CapaInstaller agent at any time to control the behavior of the PerformanceGuard agent.
Registry Parameters
The 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 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
CMSInterface Registry Parameter
The CapaInstaller agent can control the behavior of the PerformanceGuard 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:
| Local folder where data files are stored. |
CMSMaxFiles | 20 | [1;n] | Maximum number of data files in folder. Oldest files are deleted when the number of files reaches CMSMaxFiles. |
CMSReportTime | 900 | ReportInterval × [1;n] | 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 (see the following), and preferably a multiple of ReportInterval. |
Configuration Registry Parameter
If the PerformanceGuard agent is connected to PerformanceGuard frontend server, it will initially receive its configuration from the frontend server. The configuration is then stored locally in the registry parameter Configuration. If the PerformanceGuard agent isn't connected to the frontend 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 PerformanceGuard agent doesn't integrate with CapaInstaller, so you must set some parameters manually if they are not controlled by the 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 CapaInstaller integration. When this is enabled, the PerformanceGuard 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, that is the PerformanceGuard agent will be in control. |
CMSDir | CMS | Three valid path types:
| Local folder where data files are stored. |
CMSMaxFiles | 20 | [1;n] | Maximum number of data files in folder. Oldest files are deleted when the number of files reaches CMSMaxFiles. |
CMSReportTime | 900 | ReportInterval × [1;n] | 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 multiple of ReportInterval. |
ReportInterval | 60 | [1;n] | Report period in seconds. |
ServerMetrics | false | true/false | Measure context switches, etc. |
CollectOSStart | false | true/false | Measure startup/login time. |
StartupCondition | - | - | End condition for startup measurement. |
StartupTimeOutSecs | 300 | [1;n] | Timeout value for startup condition. |
LoginStartCondition | - | - | Start condition for login measurement. |
LoginEndCondition | - | - | End condition for login measurement. |
DynamicMachineReport | true | true/false |
|
DiskIOReport | false | true/false |
|
ProcessStatInterval | 10 | [1;n] | Sample period in seconds. |
ContextSwitchPerProcess | false | true/false | Measure context switches per process. |
Data Files
Location
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 PerformanceGuard agent isn't allowed to write anywhere on the local disk.
If the value of the CMSDir parameter isn't a full path, it's considered to be a subfolder 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: In recent Windows versions it's C:\ProgramData, in Windows XP it was 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. Example:
Default | Info | E2EReportAssembler | CMS parameter | Data Files Path='C:\ProgramData \CMS\' |
If you can't find the folder in Windows, the reason can be that you don't have permission to view the folder, or that your Windows Explorer options hide protected and hidden folders. Try opening the folder anyway by typing the name of the folder in Windows Explorer.
File Format
- AggregateRunningSystemReport: Aggregated values describing the usage of the CPU, Memory, DiskIO, NetIO, and TotalUtilizationMeasure. All 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 PerformanceGuard configuration. The TotalUtilizationMeasure is the worst (highest) of the four basic usage measures.
- RunningSystemReport: Detailed information about the current performance of the computer.
- StartupBriefReport: Information about the time and duration of an operating system startup event.
- Start time for the measurement of the values in the StartupReport.
- Process: Detailed measurements for a single process.
- LoginBriefReport: Information about the time and duration of a user login event. Also contains the name of the user who logged in.
<PerformanceGuardData> <AggregateRunningSystemReport>A</AggregateRunningSystemReport> <RunningSystemReport>B</RunningSystemReport> <StartupBriefReport>C</StartupBriefReport> <StartupReport> <SampleInterval>D</SampleInterval> <Process>E</Process> ... <Process>...</Process> </StartupReport> <LoginBriefReport>F</LoginBriefReport> </PerformanceGuardData>
Example
<PerformanceGuardData> <AggregateRunningSystemReport> <CPU ValueType='UChar'>6</CPU> <Mem ValueType='ULong'>32</Mem> <DiskIO ValueType='ULong'>41</DiskIO> <NetIO ValueType='ULong'>100</NetIO> <TotalUtilizationMeasure ValueType='ULong'>100</TotalUtilizationMeasure> </AggregateRunningSystemReport> <RunningSystemReport> <SampleInterval ValueType='ULong'>1250584440</SampleInterval> <PeakCPUUsage ValueType='UChar'>37</PeakCPUUsage> <AverageCPUUsage ValueType='UChar'>6</AverageCPUUsage> <LowFreePhysicalMemory ValueType='ULong'>8482592</LowFreePhysicalMemory> <AverageFreePhysicalMemory ValueType='ULong'>8527056</AverageFreePhysicalMemory> <LowFreePagingFile ValueType='ULong'>20646</LowFreePagingFile> <AverageFreePagingFile ValueType='ULong'>20680</AverageFreePagingFile> <LowVirtualMemory ValueType='ULong'>1984000</LowVirtualMemory> <AverageFreeVirtualMemory ValueType='ULong'>1984000</AverageFreeVirtualMemory> <AverageDiskWrites ValueType='ULong'>122802</AverageDiskWrites> <AverageDiskReads ValueType='ULong'>3159</AverageDiskReads> <PeakDiskWrites ValueType='ULong'>432356</PeakDiskWrites> <PeakDiskReads ValueType='ULong'>14480</PeakDiskReads> <AverageContextSwitches ValueType='ULong'>8393</AverageContextSwitches> <PeakContextSwitches ValueType='ULong'>13211</PeakContextSwitches> <AverageSendBytes ValueType='ULong'>3099</AverageSendBytes> <PeakSendBytes ValueType='ULong'>8073</PeakSendBytes> <AverageRecvBytes ValueType='ULong'>54556</AverageRecvBytes> <PeakRecvBytes ValueType='ULong'>214949</PeakRecvBytes> </RunningSystemReport> <StartupBriefReport> <SampleTime ValueType='ULong'>3825400163</SampleTime> <StartTime ValueType='ULong'>344942282</StartTime> <Success ValueType='UChar'>1</Success> </StartupBriefReport> <StartupReport> <SampleInterval ValueType='ULong'>3825400163</SampleInterval> <Process> <ProcessName ValueType='String'>smss</ProcessName> <OwnerName ValueType='String'>SYSTEM</OwnerName> <OwnerDomain ValueType='String'>NT AUTHORITY</OwnerDomain> <HostedServices ValueType='String'></HostedServices> <RunTime ValueType='ULong'>435528</RunTime> <TotalCPU ValueType='ULong'>0</TotalCPU> <TotalDiskReadIO ValueType='ULong'>11</TotalDiskReadIO> <TotalDiskWriteIO ValueType='ULong'>4</TotalDiskWriteIO> <TotalOtherIOOps ValueType='ULong'>433</TotalOtherIOOps> <TotalOtherIOBytes ValueType='ULong'>9925</TotalOtherIOBytes> <TotalPageFaults ValueType='ULong'>531</TotalPageFaults> <BasicProcessInfo> <ProcessID ValueType='ULong'>516</ProcessID> <StartTime ValueType='ULong'>0</StartTime> <MajorVersion ValueType='ULong'>64268</MajorVersion> <MinorVersion ValueType='ULong'>1199</MinorVersion> <Flags ValueType='UChar'>16</Flags> <StringLen ValueType='UChar'>4</StringLen> </BasicProcessInfo> </Process> <Process> <ProcessName ValueType='String'>wininit</ProcessName> <OwnerName ValueType='String'>SYSTEM</OwnerName> <OwnerDomain ValueType='String'>NT AUTHORITY</OwnerDomain> <HostedServices ValueType='String'></HostedServices> <RunTime ValueType='ULong'>435523</RunTime> <TotalCPU ValueType='ULong'>0</TotalCPU> <TotalDiskReadIO ValueType='ULong'>3</TotalDiskReadIO> <TotalDiskWriteIO ValueType='ULong'>1</TotalDiskWriteIO> <TotalOtherIOOps ValueType='ULong'>3004</TotalOtherIOOps> <TotalOtherIOBytes ValueType='ULong'>21260</TotalOtherIOBytes> <TotalPageFaults ValueType='ULong'>1883</TotalPageFaults> <BasicProcessInfo> <ProcessID ValueType='ULong'>644</ProcessID> <StartTime ValueType='ULong'>4976</StartTime> <MajorVersion ValueType='ULong'>64268</MajorVersion> <MinorVersion ValueType='ULong'>1199</MinorVersion> <Flags ValueType='UChar'>16</Flags> <StringLen ValueType='UChar'>7</StringLen> </BasicProcessInfo> </Process> <Process> ...Same data types for all the processing recorded. </Process> ...Same data for each running process. </StartupReport> <LoginBriefReport> <SampleTime ValueType='ULong'>3825400163</SampleTime> <LoginTime ValueType='ULong'>344942282</LoginTime> <LoggedInUser ValueType='String'>SvendBent</LoggedInUser> <Success ValueType='UChar'>1</Success> </LoginBriefReport> </PerformanceGuardData>
Search this documentation
On this page
In this section