Monitoring of free disk space for the 'indexDir' path configured in rtsplatformrc.xml (using script).
There are two different indexer disk space monitors. One monitor checks the 'FAST Search Indexer/Disk low state' performance counter that is reported by the indexer, while the other monitor uses a script to monitor free disk space for the 'indexDir' path configured in the file rtsplatformrc.xml that is located in the \etc folder of your FAST Search Server 2010 for SharePoint installation directory. .
The script version of the monitor has a warning level when there is less than 20% free disk space, and a critical level for when there is less than 10% free disk space. The 'Disk low state' performance counter is controlled by the configuration entry 'diskspaceMBWarning' in the configuration file rtsearchrc.xml (typical path: <FAST Search Server 2010 for SharePoint installation directory>\etc\config_data\RTSearch\webcluster\rtsearchrc.xml).
The system can run out of disk space for several reasons:
The indexed data has consumed all available disk space
The size of the index can increase quickly if the associated search process is not running
Another process or application is filling up the index data partition
The following actions might help you to fix the problem:
Make sure the associated search process is running
Manually delete old unused indexes
Free up space in the index data partition
Increase the available disk space
Target | Microsoft.FASTSearch.MP.Entity.RTSIndexer | ||
Parent Monitor | System.Health.AvailabilityState | ||
Category | AvailabilityHealth | ||
Enabled | True | ||
Alert Generate | True | ||
Alert Severity | MatchMonitorHealth | ||
Alert Priority | Normal | ||
Alert Auto Resolve | True | ||
Monitor Type | Microsoft.Windows.TimedScript.ThreeStateMonitorType | ||
Remotable | False | ||
Accessibility | Public | ||
Alert Message |
| ||
RunAs | Default |
<UnitMonitor ID="Microsoft.FASTSearch.MP.Monitor.RTSIndexer.DiskSpaceScript" Accessibility="Public" Enabled="true" Target="Microsoft.FASTSearch.MP.Entity.RTSIndexer" ParentMonitorID="Health!System.Health.AvailabilityState" Remotable="false" Priority="Normal" TypeID="Windows!Microsoft.Windows.TimedScript.ThreeStateMonitorType" ConfirmDelivery="false">
<Category>AvailabilityHealth</Category>
<AlertSettings AlertMessage="Microsoft.FASTSearch.MP.Monitor.RTSIndexer.DiskSpaceScript_AlertMessageResourceID">
<AlertOnState>Warning</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>MatchMonitorHealth</AlertSeverity>
</AlertSettings>
<OperationalStates>
<OperationalState ID="DiskSpaceCrit" MonitorTypeStateID="Error" HealthState="Error"/>
<OperationalState ID="DiskSpaceOk" MonitorTypeStateID="Success" HealthState="Success"/>
<OperationalState ID="DiskSpaceWarn" MonitorTypeStateID="Warning" HealthState="Warning"/>
</OperationalStates>
<Configuration>
<IntervalSeconds>2110</IntervalSeconds>
<SyncTime/>
<ScriptName>IndexerDiskSpaceCheck.vbs</ScriptName>
<Arguments/>
<ScriptBody> On Error Resume Next
SetLocale("en-us")
Const SetupKey = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\FAST Search Server\Setup\"
Dim oAPI, oBag
Set oAPI = CreateObject("MOM.ScriptAPI")
Dim freePct, freeSpace, totalSize, strIndexDir, strPath
freePct = 100
freeSpace = -1
totalSize = -1
strIndexDir = ""
strPath = ""
Dim WSHShell
Set WSHShell = WScript.CreateObject("WScript.Shell")
strPath = WSHShell.RegRead(SetupKey & "Path")
If (strPath <> "") Then
Dim oXmlDoc
Set oXmlDoc = CreateObject("Msxml2.DOMDocument")
oXmlDoc.load(strPath & "\etc\rtsplatformrc.xml")
Dim oCommonNode
Set oCommonNode = oXmlDoc.selectSingleNode("platform/common")
strIndexDir = oCommonNode.getAttribute("indexDir")
End If
If (strIndexDir <> "") Then
Set oFSO = CreateObject("Scripting.FileSystemObject")
set oDrive = oFSO.GetDrive(oFSO.GetDriveName(strIndexDir))
freeSpace = oDrive.FreeSpace
totalSize = oDrive.TotalSize
End If
If (freeSpace > -1) And (totalSize > 0) Then
freePct = Int(100 * freeSpace / totalSize)
End If
Set oBag = oAPI.CreatePropertyBag()
Call oBag.AddValue("IndexDir", strIndexDir)
Call oBag.AddValue("FreeSpace", Int(freeSpace / 1024 / 1024))
Call oBag.AddValue("TotalSize", Int(totalSize / 1024 / 1024))
Call oBag.AddValue("FreePercentage", freePct)
Call oAPI.Return(oBag)
</ScriptBody>
<TimeoutSeconds>300</TimeoutSeconds>
<ErrorExpression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="Integer">Property[@Name='FreePercentage']</XPathQuery>
</ValueExpression>
<Operator>Less</Operator>
<ValueExpression>
<Value Type="Integer">10</Value>
</ValueExpression>
</SimpleExpression>
</ErrorExpression>
<WarningExpression>
<And>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="Integer">Property[@Name='FreePercentage']</XPathQuery>
</ValueExpression>
<Operator>Less</Operator>
<ValueExpression>
<Value Type="Integer">20</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="Integer">Property[@Name='FreePercentage']</XPathQuery>
</ValueExpression>
<Operator>GreaterEqual</Operator>
<ValueExpression>
<Value Type="Integer">10</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
</And>
</WarningExpression>
<SuccessExpression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="Integer">Property[@Name='FreePercentage']</XPathQuery>
</ValueExpression>
<Operator>GreaterEqual</Operator>
<ValueExpression>
<Value Type="Integer">20</Value>
</ValueExpression>
</SimpleExpression>
</SuccessExpression>
</Configuration>
</UnitMonitor>