DB Log File Space (rollup)

Microsoft.SQLServer.2016.Database.DBLogFileSpaceMonitorRollUp (DependencyMonitor)

The monitor oversees the space available in all transaction log files in the database and on related media. The space available on the media hosting transaction log files is only included as part of the free space if autogrowth is enabled for at least one transaction log file. This monitor is a dependency (rollup) monitor.

Knowledge Base article:

Summary

Note: This monitor is a dependency (rollup) monitor. The health state for this monitor is determined by the best state of any member monitor. Please also review the knowledge base article for related unit monitors.

The monitor oversees the space available in all transaction log files in the database and on related media. The space available on the media hosting the log files is only included as part of the space available if autogrowth is enabled for at least one of the files. This monitor is a dependency (rollup) monitor.

Causes

An unhealthy state is caused by having low free space across all log files. Low free space can be caused by:

This monitor aggregates the space available for each log file within a database depending on each file’s configuration:

No Autogrowth

For a file that is not configured to grow automatically, free space would be the difference between the size of the file and the used space (size of the data stored in the file).

Autogrowth Enabled

With autogrowth enabled, the available disk space is included as part of the free space. In addition to the difference between the file size and the used space, the free space for files with autogrowth enabled also includes the free space on the media (but not more than the difference between file max size and current file size).

Low free space for database files that have autogrowth could mean that the file is approaching the limits of the hosting logical drive. For files with autogrowth enabled with a max size, low free space could also mean that the file is approaching the max size specified for a file.

The free space calculations also take into account that the file can also fail to grow if the file growth step (in MB or %) is greater than the free space available on the media. The same logics applies to files, which have their growth limited by max size setting. In these situations, available free space left on disk is not included as part of the free space because further file expansion is impossible.

Resolutions

This issue may be resolved by either:

See SQL Server Books Online: Files and Filegroups Architecture

Overrideable Parameters

Name

Description

Default Value

Alert Priority

Defines Alert Priority.

Normal

Alert Severity

Defines Alert Severity.

MatchMonitorHealth

Enabled

Enables or disables the workflow.

Yes

Generates Alerts

Defines whether the workflow generates an Alert.

Yes

Element properties:

TargetMicrosoft.SQLServer.2016.Database
Parent MonitorMicrosoft.SQLServer.2016.Database.DBLogFileSpaceMonitor
AlgorithmBestOf
Source MonitorMicrosoft.SQLServer.2016.Monitoring.DBLogFileSpaceMonitor
RelationshipMicrosoft.SQLServer.2016.DBHostsLogFile
CategoryPerformanceHealth
EnabledTrue
Alert GenerateTrue
Alert SeverityMatchMonitorHealth
Alert PriorityNormal
Alert Auto ResolveTrue
RemotableTrue
AccessibilityPublic
Alert Message
MSSQL 2016: Log files are running out of space
The database {0} in SQL instance {1} on computer {2} is running out of log file space. See knowledge section for more details.

Source Code:

<DependencyMonitor ID="Microsoft.SQLServer.2016.Database.DBLogFileSpaceMonitorRollUp" Accessibility="Public" Enabled="true" Target="SQL2016Core!Microsoft.SQLServer.2016.Database" ParentMonitorID="Microsoft.SQLServer.2016.Database.DBLogFileSpaceMonitor" Remotable="true" Priority="Normal" RelationshipType="SQL2016Core!Microsoft.SQLServer.2016.DBHostsLogFile" MemberMonitor="Microsoft.SQLServer.2016.Monitoring.DBLogFileSpaceMonitor">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2016.Database.DBLogFileSpaceMonitorRollUp.AlertMessageResourceID">
<AlertOnState>Warning</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>MatchMonitorHealth</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Property[Type="SQL2016Core!Microsoft.SQLServer.2016.Database"]/DatabaseName$</AlertParameter1>
<AlertParameter2>$Target/Host/Property[Type="SQL2016Core!Microsoft.SQLServer.2016.ServerRole"]/InstanceName$</AlertParameter2>
<AlertParameter3>$Target/Host/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</AlertParameter3>
</AlertParameters>
</AlertSettings>
<Algorithm>BestOf</Algorithm>
<MemberUnAvailable>Error</MemberUnAvailable>
</DependencyMonitor>