M365 SharePoint - Site Read/Write Synthetic Test Performance Monitor

M365SSPO.SharePoint.Site.ReadWrite.Performance.Monitor (UnitMonitor)

Description for the new unit monitor.

Knowledge Base article:

Summary

Will perform synthetic tests to monitor SharePoint Online file upload/download availability. 

Resolutions

Additional

Use the corresponding agent task to test the service functionality.

M365 Supplemental - SharePoint File Upload/Download Test

External

https://MonitoringGuys.com

Overridable Parameters

Name

Description

Default Value

CD_CriticalStatusRegEx

A matching status string from the workflow will trigger this state.
[FAILURE|UNKNOWN] set to 'UNKNOWN' to trigger Critical health state upon script failure.

IGNORE_THIS_VALUE

CD_HighWarningThreshold

The high threshold at which the monitor condition detection will trigger a warning state. (milliseconds)

10000

CD_HighCriticalThreshold

The high threshold at which the monitor condition detection will trigger a critical state. (milliseconds)

20000

CD_LowWarningThreshold

The low threshold at which the monitor condition detection will trigger a warning state. (milliseconds) (-1 to ignore)

-1

CD_LowCriticalThreshold

The low threshold at which the monitor condition detection will trigger a critical state. (milliseconds) (-1 to ignore)

-1

EventIDFilter

This can be used to filter which EventIDs get written by the workflow to the Operations Manager event log. This is only relevant when logging is enabled. See 'WriteToEventLog'. Typically this is for customer support engineer use only.

 

MatchCount

This determines how many times the monitor condition detection must be matched before triggering a state change. This is only applicable to unhealthy condition detections and is used in union with SampleCount. If left empty or 0 (zero), both have the same effect as 1 (one); requiring only a single match regardless of SampleCount value.

0

PoshLibraryPath

For customer support engineer use only.

 

ProbeActionTimeoutSeconds

If the workflow module does not exit gracefully by this time limit, the module will be forced to terminate.

180

SampleCount

Indicates how many total samples to store while calculating matches. This value must be greater or equal to the MatchCount value. If it is not, or if it is missing, the sample count is automatically set equal to the MatchCount (therefore only consecutive matching samples will trigger output).

0

SyncTime

This can be set to force a workflow to synchronize its Interval to a specific start time. If no SyncTime value is provided to the workflow, the workflow will be initiated at the agent's earliest opportunity after receiving a configuration change or restarting. Typically no SyncTime is preferred. Format is 00:00. Example for 5:36pm: 17:36. Example for 2:15am: 02:15.

 

WorkflowName

This value gets passed into the datasource script and becomes noted in logged events (if logging is enabled). The value provided for this parameter gets appended to the ProbeAction/WriteAction name used for the datasource. If the datasource is used by more than one workflow an override value for this parameter could break cookdown. This could be used to differentiate/identify a specific instance of the scripted datasource. Typically this is for customer support engineer use only.

 

WriteToEventLog

This will enable/disable script logging to the Operations Manager event log.

false

Element properties:

TargetM365SSPO.SharePoint.Site
Parent MonitorM365SSPO.SharePoint.Aggregate.Performance.Monitor
CategoryAvailabilityHealth
EnabledTrue
Alert GenerateTrue
Alert SeverityMatchMonitorHealth
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeM365SSPO.3StateThreshold.MT
RemotableTrue
AccessibilityPublic
Alert Message
M365 SharePoint - Site Read/Write Synthetic Test Performance Monitor Alert
SharePoint file upload/download/delete operation Performance exceeded threshold.

FileUploadDurationMS: {0}
FileDownloadDurationMS: {1}
TotalDurationMS: {2}

Details: {3}
Display Name: {4}
Site Name: {5}
Site ID: {6}

TenantName: {7}
M365_AccountName: {8}
Client/Application ID: {9}
RunAsDefault

Source Code:

<UnitMonitor ID="M365SSPO.SharePoint.Site.ReadWrite.Performance.Monitor" Accessibility="Public" Enabled="true" Target="M365SSPO.SharePoint.Site" ParentMonitorID="M365SSPO.SharePoint.Aggregate.Performance.Monitor" Remotable="true" Priority="Normal" TypeID="M365SSPO.3StateThreshold.MT" ConfirmDelivery="false">
<Category>AvailabilityHealth</Category>
<AlertSettings AlertMessage="M365SSPO.SharePoint.Site.ReadWrite.Performance.Monitor.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>MatchMonitorHealth</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Data/Context/Property[@Name='FileUploadDurationMS']$</AlertParameter1>
<AlertParameter2>$Data/Context/Property[@Name='FileDownloadDurationMS']$</AlertParameter2>
<AlertParameter3>$Data/Context/Property[@Name='TotalDurationMS']$</AlertParameter3>
<AlertParameter4>$Data/Context/Property[@Name='Message']$</AlertParameter4>
<AlertParameter5>$Data/Context/Property[@Name='DisplayName']$</AlertParameter5>
<AlertParameter6>$Data/Context/Property[@Name='Name']$</AlertParameter6>
<AlertParameter7>$Data/Context/Property[@Name='ID']$</AlertParameter7>
<AlertParameter8>$Data/Context/Property[@Name='TenantName']$</AlertParameter8>
<AlertParameter9>$Data/Context/Property[@Name='M365_AccountName']$</AlertParameter9>
<AlertParameter10>$Data/Context/Property[@Name='M365_ClientID']$</AlertParameter10>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="CriteriaHealthy" MonitorTypeStateID="CriteriaHealthy" HealthState="Success"/>
<OperationalState ID="CriteriaWarning" MonitorTypeStateID="CriteriaWarning" HealthState="Warning"/>
<OperationalState ID="CriteriaError" MonitorTypeStateID="CriteriaError" HealthState="Error"/>
</OperationalStates>
<Configuration>
<CD_InstanceFilterCategory>FileTest</CD_InstanceFilterCategory>
<CD_InstanceFilterPBPropertyName>ID</CD_InstanceFilterPBPropertyName>
<CD_InstanceFilterPBPropertyValue>$Target/Property[Type="M365SSPO.SharePoint.Site"]/ID$</CD_InstanceFilterPBPropertyValue>
<!-- [FAILURE|UNKNOWN] set to 'UNKNOWN' to trigger Critical health state upon script failure-->
<CD_CriticalStatusRegEx>IGNORE_THIS_VALUE</CD_CriticalStatusRegEx>
<CD_HealthStatusPropertyName>Result</CD_HealthStatusPropertyName>
<CD_HighWarningThreshold>10000</CD_HighWarningThreshold>
<CD_HighCriticalThreshold>20000</CD_HighCriticalThreshold>
<CD_LowWarningThreshold>-1</CD_LowWarningThreshold>
<CD_LowCriticalThreshold>-1</CD_LowCriticalThreshold>
<CD_MetricPropertyName>TotalDurationMS</CD_MetricPropertyName>
<ApiTokenScopeURL>$Target/Host/Property[Type="M365SL!M365SL.WatcherNode"]/ApiTokenScopeURL$</ApiTokenScopeURL>
<ApiTokenURL>$Target/Host/Property[Type="M365SL!M365SL.WatcherNode"]/ApiTokenURL$</ApiTokenURL>
<ApiURL>$Target/Host/Property[Type="M365SL!M365SL.WatcherNode"]/ApiURL$</ApiURL>
<M365_AccountName>$Target/Property[Type="M365SL!M365SL.M365ServiceComponent"]/M365_AccountName$</M365_AccountName>
<M365_AccountPassword>$Target/Property[Type="M365SL!M365SL.M365ServiceComponent"]/M365_AccountPassword$</M365_AccountPassword>
<M365_ClientID>$Target/Property[Type="M365SL!M365SL.M365ServiceComponent"]/M365_ClientID$</M365_ClientID>
<M365_ClientSecret>$Target/Property[Type="M365SL!M365SL.M365ServiceComponent"]/M365_ClientSecret$</M365_ClientSecret>
<EventIDFilter/>
<IntervalSeconds>$Target/Property[Type="M365SL!M365SL.M365ServiceComponent"]/IntervalSeconds$</IntervalSeconds>
<MatchCount>0</MatchCount>
<PoshLibraryPath/>
<ProbeActionTimeoutSeconds>180</ProbeActionTimeoutSeconds>
<SampleCount>0</SampleCount>
<SiteDisplayName>$Target/Property[Type="System!System.Entity"]/DisplayName$</SiteDisplayName>
<SiteID>$Target/Property[Type="M365SSPO.SharePoint.Site"]/ID$</SiteID>
<SyncTime/>
<TenantName>$Target/Property[Type="M365SL!M365SL.M365ServiceComponent"]/TenantName$</TenantName>
<TLSVersion>$Target/Host/Property[Type="M365SL!M365SL.WatcherNode"]/TLSVersion$</TLSVersion>
<WorkflowName/>
<WriteToEventLog>false</WriteToEventLog>
</Configuration>
</UnitMonitor>