M365 Teams Performance Chat Total Time Monitor

Microsoft.SystemCenter.M365.Monitor.TeamsPerformance.ChatTotalTime.Monitor (UnitMonitor)

This monitor evaluates whether it takes an acceptable time to send and verify Teams Chat messages.

Knowledge Base article:

Summary

This monitor sends and verifies a Teams Chat message. This monitor has two health states, healthy and critical. The health state is determined if the Teams Chat send and verify takes less than the threshold.

This monitor contains the following overridable parameters.

-Interval (seconds)- Default Value: 900 seconds - This sets how long the monitor waits until running the monitor again. The default value can be left or can be adjusted to fit the environment.

-Threshold Value- Default Value: 5,000 milliseconds - This sets upper threshold for chat send/verify time (must be less than the threshold). The default value can be left or can be adjusted to fit the environment.

Causes

An error state is caused by having issues with connecting to Microsoft 365 or sending/fetching data. It can be caused by the following:

Resolutions

Resolution depends on the specific error. Verify and/or fix the following:

Element properties:

TargetMicrosoft.SystemCenter.M365.WatcherNodeApplication.Teams
Parent MonitorMicrosoft.SystemCenter.M365.Monitor.Performance.WatcherNode.Teams
CategoryPerformanceHealth
EnabledTrue
Alert GenerateTrue
Alert SeverityMatchMonitorHealth
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SystemCenter.M365.Monitor.TeamsPerformance.Value.UnitMonitorType
RemotableTrue
AccessibilityPublic
Alert Message
M365 Teams Performance Chat Total Time Monitor: Failure
This monitor has detected an unacceptable chat send/verify total time ({0} milliseconds).
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.SystemCenter.M365.Monitor.TeamsPerformance.ChatTotalTime.Monitor" Accessibility="Public" Enabled="true" Target="Microsoft.SystemCenter.M365.WatcherNodeApplication.Teams" ParentMonitorID="Microsoft.SystemCenter.M365.Monitor.Performance.WatcherNode.Teams" Remotable="true" Priority="Normal" TypeID="Microsoft.SystemCenter.M365.Monitor.TeamsPerformance.Value.UnitMonitorType" ConfirmDelivery="false">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SystemCenter.M365.Monitor.TeamsPerformance.ChatTotalTime.Monitor.Alert.Message">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>MatchMonitorHealth</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Data/Context/Property[@Name='Chat Total Duration in ms']$</AlertParameter1>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="Success" MonitorTypeStateID="Healthy" HealthState="Success"/>
<OperationalState ID="Error" MonitorTypeStateID="Critical" HealthState="Error"/>
</OperationalStates>
<Configuration>
<IntervalSeconds>900</IntervalSeconds>
<AzureADEndpoint>$Target/Host/Property[Type="Microsoft.SystemCenter.M365.WatcherNodeApplication"]/AzureADEndpoint$</AzureADEndpoint>
<GraphEndpoint>$Target/Host/Property[Type="Microsoft.SystemCenter.M365.WatcherNodeApplication"]/GraphEndpoint$</GraphEndpoint>
<TenantId>$Target/Host/Property[Type="Microsoft.SystemCenter.M365.WatcherNodeApplication"]/TenantId$</TenantId>
<ApplicationClientId>$RunAs[Name="Microsoft.SystemCenter.M365.RunAsProfile.ApplicationClient"]/UserName$</ApplicationClientId>
<ApplicationClientCredentials>$RunAs[Name="Microsoft.SystemCenter.M365.RunAsProfile.ApplicationClient"]/Password$</ApplicationClientCredentials>
<DelegatedUserId>$RunAs[Name="Microsoft.SystemCenter.M365.RunAsProfile.DelegatedTeamsUser"]/UserName$</DelegatedUserId>
<DelegatedUserCredentials>$RunAs[Name="Microsoft.SystemCenter.M365.RunAsProfile.DelegatedTeamsUser"]/Password$</DelegatedUserCredentials>
<TeamsTeamName>$Target/Host/Property[Type="Microsoft.SystemCenter.M365.WatcherNodeApplication"]/TeamsTeamName$</TeamsTeamName>
<TeamsChannelName>$Target/Host/Property[Type="Microsoft.SystemCenter.M365.WatcherNodeApplication"]/TeamsChannelName$</TeamsChannelName>
<Property>Chat Total Duration in ms</Property>
<Threshold>5000</Threshold>
<MatchCount>1</MatchCount>
</Configuration>
</UnitMonitor>