CapaInstaller Integration

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:

  1. Stop the PerformanceGuard Agent service.
  2. 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:

  • "."

  • "<subdir>"

  • "<drive>:<path>"

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.
If set to false, the value of the CMSInterface registry parameter takes precedence over the Configuration registry parameter, that is the CapaInstaller agent will be in control.

CMSDir

CMS

Three valid path types:

  1. "."
  2. "<subdir>"
  3. "<drive>:<path>"

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