Log IO Percentage

Microsoft.SqlServer.Azure.UnitMonitor.ElasticPoolLogWriterUtil (UnitMonitor)

Monitors the Log Write Utilization consumed by all databases in Elastic Pool.
Note that in order to prevent incorrect data collection, the value of Interval (seconds) overridable parameter should not be set lower than the default value.

Knowledge Base article:

Summary

Monitors the total Log Write utilization of this Elastic Database Pool.

Note that in order to prevent incorrect data collection, the value of Interval (seconds) overridable parameter should not be set lower than the default value.

Causes

Unhealthy state is caused by the total amount of Log Write resources consumed approaching or exceeding the limit configured for the monitor.

Resolutions

Overrideable Parameters

Name

Description

Default Value

Alert Priority

Defines Alert Priority.

Normal

Alert Severity

Defines Alert Severity.

MatchMonitorHealth

Critical Threshold

The monitor will change the state to 'Critical' if the value reaches this threshold.

85

Enabled

Enables or disables the workflow.

Yes

Generates Alerts

Defines whether the workflow generates an Alert.

Yes

Interval (seconds)

The recurring interval of time in seconds in which to run the workflow.

900

Monitoring Mode

Defines monitoring mode.

$Target/Host/Property[Type="Microsoft.SqlServer.Azure.Server"]/MonitoringMode$

Request timeout (seconds)

Gets or sets the timespan to wait before the request times out.

60

Synchronization Time

The synchronization time specified by using a 24-hour format. May be omitted.

 

Timeout (seconds)

Specifies the time the workflow is allowed to run before being closed and marked as failed.

600

Timeout for database connection (seconds)

A period in which the workflow must establish connection to the database.

30

Warning Threshold

The monitor will change the state to 'Warning' if the value reaches this threshold.

75

Element properties:

TargetMicrosoft.SqlServer.Azure.ElasticPool
Parent MonitorSystem.Health.PerformanceState
CategoryPerformanceHealth
EnabledTrue
Alert GenerateTrue
Alert SeverityMatchMonitorHealth
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SqlServer.Azure.UnitMonitorType.ElasticPoolResourceStats
RemotableTrue
AccessibilityPublic
Alert Message
Low Write utilization exceeds the configured limit
The total Log Write utilization for Elastic Pool "{0}" on server "{1}" exceeds the configured limit by {2}\%.
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.SqlServer.Azure.UnitMonitor.ElasticPoolLogWriterUtil" TypeID="Microsoft.SqlServer.Azure.UnitMonitorType.ElasticPoolResourceStats" Target="Microsoft.SqlServer.Azure.ElasticPool" ParentMonitorID="Health!System.Health.PerformanceState" Remotable="true" Priority="Normal" Accessibility="Public" Enabled="true">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SqlServer.Azure.UnitMonitor.ElasticPoolLogWriterUtil.AlertMessage">
<AlertOnState>Warning</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>MatchMonitorHealth</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Property[Type="Microsoft.SqlServer.Azure.ElasticPool"]/ElasticPoolName$</AlertParameter1>
<AlertParameter2>$Target/Host/Property[Type="Microsoft.SqlServer.Azure.Server"]/ServerName$</AlertParameter2>
<AlertParameter3>$Data/Context/Property[@Name='Value']$</AlertParameter3>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="Healthy" MonitorTypeStateID="Healthy" HealthState="Success"/>
<OperationalState ID="Warning" MonitorTypeStateID="Warning" HealthState="Warning"/>
<OperationalState ID="Critical" MonitorTypeStateID="Critical" HealthState="Error"/>
</OperationalStates>
<Configuration>
<IntervalSeconds>900</IntervalSeconds>
<SyncTime/>
<TimeoutSeconds>600</TimeoutSeconds>
<ServerName>$Target/Host/Property[Type="Microsoft.SqlServer.Azure.Server"]/ServerName$</ServerName>
<ElasticPoolName>$Target/Property[Type="Microsoft.SqlServer.Azure.ElasticPool"]/ElasticPoolName$</ElasticPoolName>
<PricingTier>$Target/Property[Type="Microsoft.SqlServer.Azure.ElasticPool"]/PricingTier$</PricingTier>
<UseRest>$Target/Host/Property[Type="Microsoft.SqlServer.Azure.Server"]/UseREST$</UseRest>
<MonitoringMode>$Target/Host/Property[Type="Microsoft.SqlServer.Azure.Server"]/MonitoringMode$</MonitoringMode>
<AuthorityDetails>$Target/Host/Property[Type="Microsoft.SqlServer.Azure.Server"]/AuthorityDetails$</AuthorityDetails>
<SubscriptionId>$Target/Host/Property[Type="Microsoft.SqlServer.Azure.Server"]/Subscription$</SubscriptionId>
<ResourceGroupName>$Target/Host/Property[Type="Microsoft.SqlServer.Azure.Server"]/ResourceGroupName$</ResourceGroupName>
<SqlTimeoutSeconds>30</SqlTimeoutSeconds>
<HttpTimeoutSeconds>60</HttpTimeoutSeconds>
<ResourceName>$Target/Property[Type="Microsoft.SqlServer.Azure.ElasticPool"]/ElasticPoolName$</ResourceName>
<MetricName>log_write_percent</MetricName>
<WarningThreshold>75</WarningThreshold>
<CriticalThreshold>85</CriticalThreshold>
</Configuration>
</UnitMonitor>