Windows 10 and above Aggregate Shell Performance Trends

Microsoft.Windows.Client.Win10.ComputerGroup.ShellPerfTrends (Rule)

Knowledge Base article:

Summary

This rule raises an alert when there is an alarming trend in the increase of shell performance issues in any given computer type in the enterprise

Causes

Shell performance degradation

Element properties:

TargetMicrosoft.SystemCenter.DataWarehouse
CategoryEventCollection
EnabledTrue
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
RemotableTrue
Alert Message
Windows 10 and above Computers of a certain computer type in your enterprise suffered 20\% more shell performance issues this week than last week
There has been a trend of increased Shell Performance Degradation detected in computers of a certain type. Please look at the Alert Context section to find out more about the computer type that is suffering. To get a bigger picture of the state of client performance health, and to get a list of the machines that are suffering, please view the Windows 10 and above Shell Performance Report.

Member Modules:

ID Module Type TypeId RunAs 
DS DataSource Microsoft.Windows.Client.Win10.SQLProvider Default
GenerateAlert WriteAction System.Health.GenerateAlert Default

Source Code:

<Rule ID="Microsoft.Windows.Client.Win10.ComputerGroup.ShellPerfTrends" Target="SCDW!Microsoft.SystemCenter.DataWarehouse" Enabled="true" ConfirmDelivery="true" DiscardLevel="60" Remotable="true" Priority="Normal">
<Category>EventCollection</Category>
<DataSources>
<DataSource ID="DS" TypeID="Microsoft.Windows.Client.Win10.SQLProvider">
<Query>
SELECT 1, Win10.ComputerData.Manufacturer + ' ' + Win10.ComputerData.Model
FROM Win10.vWin10ShellPerfAggregationComputer AS Result
JOIN Win10.ComputerData ON (Win10.ComputerData.ComputerDataRowId = Result.ComputerDataRowId)
WHERE (SELECT SUM(NumComputers)
FROM Win10.vWin10ShellPerfAggregationComputer AS ThisWeek
WHERE ThisWeek.ComputerDataRowId = Result.ComputerDataRowId
AND DATEDIFF(day, ThisWeek.DateTime, GETUTCDATE()) &lt;= 7
GROUP BY ThisWeek.ComputerDataRowId
)
&gt;= 1.2 *
(SELECT SUM(NumComputers)
FROM Win10.vWin10ShellPerfAggregationComputer AS LastWeek
WHERE LastWeek.ComputerDataRowId = Result.ComputerDataRowId
AND DATEDIFF(day, LastWeek.DateTime, GETUTCDATE()) &lt;= 14
AND DATEDIFF(day, LastWeek.DateTime, GETUTCDATE()) &gt; 7
GROUP BY LastWeek.ComputerDataRowId
)
GROUP BY Win10.ComputerData.Manufacturer + ' ' + Win10.ComputerData.Model
</Query>
</DataSource>
</DataSources>
<WriteActions>
<WriteAction ID="GenerateAlert" TypeID="SystemHealth!System.Health.GenerateAlert">
<Priority>1</Priority>
<Severity>1</Severity>
<AlertMessageId>$MPElement[Name="Microsoft.Windows.Client.Win10.ComputerGroup.ShellPerfTrends.AlertMessage"]$</AlertMessageId>
<AlertParameters/>
<Suppression>
<SuppressionValue/>
</Suppression>
</WriteAction>
</WriteActions>
</Rule>