Operations Manager APM Data Transfer Rule

Microsoft.SystemCenter.Apm.DataTransferRule (Rule)

This rule transfers data from operations DB to the data warehouse DB for Application Advisor.

Knowledge Base article:

Summary

This rule triggers execution of Data Transfer, Aggregation and Grooming activities related to APM Events on the Operations and/or Data Warehouse databases. This rule provides overrides control to the retention settings for APM events in the Data Warehouse database. Disabling this rule or overriding any other setting will have an adverse negative impact on the overall health, functionality and consistency of the APM feature, the data warehouse database and Application Advisor reports, among other things.

Causes

This section is not applicable for this type of rule.

Resolutions

There is no user action for this type of rule.

Element properties:

TargetMicrosoft.SystemCenter.Apm.DataTransferService
CategoryCustom
EnabledTrue
Alert GenerateFalse
RemotableTrue

Member Modules:

ID Module Type TypeId RunAs 
Scheduler DataSource System.Scheduler Default
DataTransferRuleWA WriteAction Microsoft.SystemCenter.Apm.DataTransferModule Default

Source Code:

<Rule ID="Microsoft.SystemCenter.Apm.DataTransferRule" Enabled="true" Target="Microsoft.SystemCenter.Apm.DataTransferService" Remotable="true">
<Category>Custom</Category>
<DataSources>
<DataSource ID="Scheduler" TypeID="System!System.Scheduler">
<Scheduler>
<SimpleReccuringSchedule>
<Interval Unit="Days">27</Interval>
</SimpleReccuringSchedule>
<ExcludeDates/>
</Scheduler>
</DataSource>
</DataSources>
<WriteActions>
<WriteAction ID="DataTransferRuleWA" TypeID="Microsoft.SystemCenter.Apm.DataTransferModule">
<TransferIntervalInMin>5</TransferIntervalInMin>
<StoreEventPeriodInDays>91</StoreEventPeriodInDays>
<StorePerformanceCountersIntervalInDays>91</StorePerformanceCountersIntervalInDays>
<LookupIntervalInSec>20</LookupIntervalInSec>
<SQLUserName>$RunAs[Name="DataWarehouse!Microsoft.SystemCenter.DataWarehouse.SqlAuthenticationActionAccount"]/UserName$</SQLUserName>
<SQLUserPassword>$RunAs[Name="DataWarehouse!Microsoft.SystemCenter.DataWarehouse.SqlAuthenticationActionAccount"]/Password$</SQLUserPassword>
<configuration>
<userdata>
<add key="sqlConnectionTimeout" value="180"/>
<add key="sqlCommandTimeout" value="300"/>
<add key="rowsToDeletePerIteration" value="100"/>
<add key="rowsToDeletePerRequest" value="6000"/>
<add key="PMRowsToProcessPerIteration" value="1000"/>
<add key="PMRowsToProcessPerRequest" value="6000"/>
<add key="AdvisorRowsToDeletePerIteration" value="1000"/>
<add key="AdvisorRowsToDeletePerRequest" value="6000"/>
<add key="sqlUserName" value="%SQLUserName%"/>
<add key="sqlUserPassword" value="%SQLUserPassword%"/>
<add key="APMOpsMgrVersion" value="5.7"/>
<add key="APMDWVersion" value="5.7"/>
<add key="APMSchemaVersion" value="1"/>
<add key="mgmtServerName" value="localhost"/>
<add key="transferThresholdIteration" value="3"/>
<add key="transferMultiDurationFactor" value="3"/>
<add key="eventMessageThrottlingPeriodByMinutes" value="30"/>
<add key="thresholdHoursWithoutTrasferring" value="2"/>
</userdata>
<handlers>
<classHandlers eventClass="AdvisorPMonitorLog" eventClassVersion="5.1" eventClassType="performance">
<title>Performance Event</title>
<handler handlerType="EventInfoHandler">
<assemblyFile>PMonitorHandlerV51, Culture=neutral, PublicKeyToken=31bf3856ad364e35, Version=7.0.5000.20</assemblyFile>
<class>Avicode.Intercept.SEManager.CustomHandlers.PMonitor.PMonitorHandler</class>
<settings>
<add key="HeavyLeafsAmplitude" value="0.1"/>
<add key="RootDuration" value="20"/>
<add key="AliasConfig" value="PMonitorHandlerV4.config"/>
</settings>
</handler>
</classHandlers>
<classHandlers eventClass="AdvisorCLRXMonitorLog" eventClassVersion="5.1" eventClassType="exception">
<title>Exception Event</title>
<handler handlerType="EventInfoHandler">
<assemblyFile>CLRXMonitorHandlerV51, Culture=neutral, PublicKeyToken=31bf3856ad364e35, Version=7.0.5000.20</assemblyFile>
<class>Avicode.Intercept.SEManager.CustomHandlers.CLRXMonitor.CLRXMonitorHandler</class>
<settings/>
</handler>
</classHandlers>
<classHandlers eventClass="AdvisorCSMPMonitorLog" eventClassVersion="5.6" eventClassType="performance">
<title>.NET Client Event</title>
<handler handlerType="EventInfoHandler">
<assemblyFile>ClientEventHandlerV56, Culture=neutral, PublicKeyToken=31bf3856ad364e35, Version=7.0.5000.20</assemblyFile>
<class>Avicode.Intercept.Reporting.Transfer.DataActions.ClientEventHandlers.CSMPMonitorHandler</class>
<settings/>
</handler>
</classHandlers>
<classHandlers eventClass="AdvisorCSMAMonitorLog" eventClassVersion="5.6" eventClassType="performance">
<title>.NET Client Event</title>
<handler handlerType="EventInfoHandler">
<assemblyFile>ClientEventHandlerV56, Culture=neutral, PublicKeyToken=31bf3856ad364e35, Version=7.0.5000.20</assemblyFile>
<class>Avicode.Intercept.Reporting.Transfer.DataActions.ClientEventHandlers.CSMAMonitorHandler</class>
<settings/>
</handler>
</classHandlers>
<classHandlers eventClass="AdvisorCSMSMonitorLog" eventClassVersion="5.6" eventClassType="performance">
<title>.NET Client Event</title>
<handler handlerType="EventInfoHandler">
<assemblyFile>ClientEventHandlerV56, Culture=neutral, PublicKeyToken=31bf3856ad364e35, Version=7.0.5000.20</assemblyFile>
<class>Avicode.Intercept.Reporting.Transfer.DataActions.ClientEventHandlers.CSMSMonitorHandler</class>
<settings/>
</handler>
</classHandlers>
<classHandlers eventClass="AdvisorCSMXMonitorLog" eventClassVersion="5.6" eventClassType="exception">
<title>.NET Client Event</title>
<handler handlerType="EventInfoHandler">
<assemblyFile>ClientEventHandlerV56, Culture=neutral, PublicKeyToken=31bf3856ad364e35, Version=7.0.5000.20</assemblyFile>
<class>Avicode.Intercept.Reporting.Transfer.DataActions.ClientEventHandlers.CSMXMonitorHandler</class>
<settings/>
</handler>
</classHandlers>
</handlers>
<reporting>
<reportingOperations>
<tasks>
<task name="Aggregation" manager="Transfer" type="Avicode.Intercept.Reporting.Transfer.AggregationTask, Aggregation, Culture=neutral, PublicKeyToken=31bf3856ad364e35, Version=7.0.5000.20" description="perf counter aggregation process" active="true">
<dataActions driver="MSSQL">
<dataAction type="Avicode.Intercept.Reporting.Transfer.DataActions.AggregationAction, Aggregation, Culture=neutral, PublicKeyToken=31bf3856ad364e35, Version=7.0.5000.20">
<connection source="connectionString" target="reporting"/>
<aggregation type="Hourly" dataset="pcounter" interval="1">
<!-- Attribute NAME bind to UPPER CASE
Attribute TYPE bind to UPPER CASE

TYPE:
0 - computer performance counter (default value)
1 - application performance counter
2 - computer and application performance counter
INSTANCEFUNC : function that will be used to aggregate counter between instances in custom counters report
available values : AVG(default), SUM, MAX
DATEFUNC : function that will be used to aggregate counter between dates in custom counters report
available values : AVG(default), SUM, MAX

-->
<perfcounterSet>
<perfcounter NAME="\Apps\Avg. Request Time" TYPE="2" INSTANCEFUNC="AVG" DATEFUNC="AVG"/>
<perfcounter NAME="\Apps\Exception Events/sec" TYPE="2"/>
<perfcounter NAME="\Apps\Monitored Requests/sec" TYPE="2" INSTANCEFUNC="SUM" DATEFUNC="AVG"/>
<perfcounter NAME="\Apps\Monitored Requests" TYPE="2" INSTANCEFUNC="SUM" DATEFUNC="AVG"/>
<perfcounter NAME="\Apps\Performance Events/sec" TYPE="2"/>
<perfcounter NAME="\Process\% Processor Time" TYPE="2"/>
<perfcounter NAME="\ASP.NET Apps\Requests Queued"/>
<perfcounter NAME="\ASP.NET Apps\Requests/Sec" INSTANCEFUNC="SUM" DATEFUNC="AVG"/>
<perfcounter NAME="\ASP.NET Apps\Sessions Active" INSTANCEFUNC="SUM" DATEFUNC="AVG"/>
<perfcounter NAME="\Memory\Available MBytes"/>
<perfcounter NAME="\Network Interface\Bytes Total/sec"/>
<perfcounter NAME="\Process\IO Data Bytes/sec"/>
<perfcounter NAME="\Process\IO Data Bytes/sec (_All Monitored Applications)"/>
<perfcounter NAME="\Process\Private Bytes"/>
<perfcounter NAME="\Process\Private Bytes (_All Monitored Applications)"/>
<perfcounter NAME="\Process\Virtual Bytes"/>
<perfcounter NAME="\Process\Virtual Bytes (_All Monitored Applications)"/>
<perfcounter NAME="\Processor\% Processor Time"/>
<perfcounter NAME="\Processor\%.Net Apps Time"/>
<perfcounter NAME="\Web Service\Current Connections"/>
</perfcounterSet>
</aggregation>
</dataAction>
</dataActions>
</task>
<task name="Transfer" manager="Transfer" type="Avicode.Intercept.Reporting.Transfer.TransferTask, Aggregation, Culture=neutral, PublicKeyToken=31bf3856ad364e35, Version=7.0.5000.20" description="Transfer perf counter and events" active="true">
<dataActions driver="MSSQL">
<dataAction type="Avicode.Intercept.Reporting.Transfer.DataActions.ExtractionAction, Aggregation, Culture=neutral, PublicKeyToken=31bf3856ad364e35, Version=7.0.5000.20">
<connection source="connectionString" target="reporting"/>
<records delta="1000"/>
</dataAction>
<dataAction type="Avicode.Intercept.Reporting.Transfer.DataActions.ProcessAction, Aggregation, Culture=neutral, PublicKeyToken=31bf3856ad364e35, Version=7.0.5000.20">
<connection source="connectionString" target="reporting"/>
<records delta="100"/>
</dataAction>
</dataActions>
</task>
<task name="ResourceTask" manager="Transfer" type="Avicode.Intercept.Reporting.Transfer.DataFlowTask, Aggregation, Culture=neutral, PublicKeyToken=31bf3856ad364e35, Version=7.0.5000.20" description="extract resources" active="true">
<dataFlowTable name="EventRowData"/>
<dataActions driver="MSSQL">
<dataAction type="Avicode.Intercept.Reporting.Transfer.DataActions.ExtractionAction, Aggregation, Culture=neutral, PublicKeyToken=31bf3856ad364e35, Version=7.0.5000.20">
<connection source="connectionString" target="reporting"/>
<records delta="1000"/>
</dataAction>
<dataAction type="Avicode.Intercept.Reporting.Transfer.DataActions.ResourceAction, Aggregation, Culture=neutral, PublicKeyToken=31bf3856ad364e35, Version=7.0.5000.20">
<connection target="reporting"/>
<records delta="300"/>
</dataAction>
</dataActions>
</task>
<task name="CompleteAggregation" manager="Transfer" type="Avicode.Intercept.Reporting.Transfer.Task, Aggregation, Culture=neutral, PublicKeyToken=31bf3856ad364e35, Version=7.0.5000.20" description="perf counter aggregation process" active="true">
<dataActions driver="MSSQL">
<dataAction type="Avicode.Intercept.Reporting.Transfer.DataActions.CompleteAggregationAction, Aggregation, Culture=neutral, PublicKeyToken=31bf3856ad364e35, Version=7.0.5000.20">
<connection name="reporting"/>
<aggregation type="Daily" dataset="perfHourly"/>
</dataAction>
</dataActions>
</task>
<task name="ConfigSynchronization" manager="Transfer" type="Avicode.Intercept.Reporting.Transfer.Task, Aggregation, Culture=neutral, PublicKeyToken=31bf3856ad364e35, Version=7.0.5000.20" description="synchronize config" active="true">
<dataActions driver="MSSQL">
<dataAction type="Avicode.Intercept.Reporting.Transfer.DataActions.SyncPerfCountersAction, Aggregation, Culture=neutral, PublicKeyToken=31bf3856ad364e35, Version=7.0.5000.20">
<connection name="reporting"/>
</dataAction>
</dataActions>
</task>
<task name="Grooming" manager="Transfer" type="Avicode.Intercept.Reporting.Transfer.Task, Aggregation, Culture=neutral, PublicKeyToken=31bf3856ad364e35, Version=7.0.5000.20" description="grooming" active="true">
<dataActions driver="MSSQL">
<dataAction type="Avicode.Intercept.Reporting.Transfer.DataActions.GroomAction, Aggregation, Culture=neutral, PublicKeyToken=31bf3856ad364e35, Version=7.0.5000.20">
<connection name="reporting"/>
<maxAgeDays>
<add table="Event" value="%StoreEventPeriodInDays%"/>
<!-- store event period -->
<add table="PerfHourly" value="%StorePerformanceCountersIntervalInDays%"/>
<!-- store performance counters period -->
<add table="PerfDaily" value="182"/>
</maxAgeDays>
</dataAction>
<dataAction type="Avicode.Intercept.Reporting.Transfer.DataActions.GroomAction, Aggregation, Culture=neutral, PublicKeyToken=31bf3856ad364e35, Version=7.0.5000.20">
<connection name="connectionString"/>
<maxAgeDays>
<add table="PerfHourly" value="91"/>
<!-- Do we use it? -->
</maxAgeDays>
</dataAction>
</dataActions>
</task>
<!-- ApplyRule tasks-->
<task name="ApplyRule" manager="ApplyRule" type="Avicode.Intercept.Reporting.Transfer.Task, Aggregation, Culture=neutral, PublicKeyToken=31bf3856ad364e35, Version=7.0.5000.20" description="Applying PMRule to Advisor database" active="true">
<dataActions driver="MSSQL">
<dataAction type="Avicode.Intercept.Reporting.Transfer.DataActions.ApplyRuleAction, Aggregation, Culture=neutral, PublicKeyToken=31bf3856ad364e35, Version=7.0.5000.20">
<connection source="connectionString" target="reporting"/>
</dataAction>
</dataActions>
</task>
</tasks>
<managers>
<manager name="Transfer" class="Avicode.Intercept.Reporting.Transfer.Service.Manager.TransferManager, Aggregation, Culture=neutral, PublicKeyToken=31bf3856ad364e35, Version=7.0.5000.20" active="true">
<properties>
<add name="TransferInterval" value="%TransferIntervalInMin%"/>
</properties>
</manager>
<manager name="ApplyRule" class="Avicode.Intercept.Reporting.Transfer.Service.Manager.ApplyRuleManager, Aggregation, Culture=neutral, PublicKeyToken=31bf3856ad364e35, Version=7.0.5000.20" active="true">
<properties>
<add name="RefreshInterval" value="%LookupIntervalInSec%"/>
</properties>
</manager>
</managers>
</reportingOperations>
<favoriteCacheConfiguration>
<!-- The time on the server side (server timezone) which is used as start point for favorite cache creation -->
<add type="startTime" value="00:00:00"/>
<!-- The offset between two cache creation operation in seconds -->
<add type="offset" value="180"/>
</favoriteCacheConfiguration>
</reporting>
</configuration>
</WriteAction>
</WriteActions>
</Rule>