Dell Helper Utility Unit Monitor Type

Dell.HelperUtilityAndLicensing.Monitor.UMT (UnitMonitorType)

Element properties:

RunAsDefault
AccessibilityPublic
Support Monitor RecalculateFalse

Member Modules:

ID Module Type TypeId RunAs 
MON DataSource Dell.HelperUtilityAndLicensing.Monitor.DSMT Default
CRITICAL ConditionDetection System.ExpressionFilter Default
OK ConditionDetection System.ExpressionFilter Default
WARNING ConditionDetection System.ExpressionFilter Default

Overrideable Parameters:

IDParameterTypeSelectorDisplay NameDescription
LogLevelint$Config/LogLevel$Log LevelDell Helper Utility And Licensing monitor logging level
IntervalSecondsint$Config/IntervalSeconds$IntervalDell Helper Utility And Licensing monitor interval seconds
TimeoutSecondsint$Config/TimeoutSeconds$TimeoutTimeout

Source Code:

<UnitMonitorType ID="Dell.HelperUtilityAndLicensing.Monitor.UMT" Accessibility="Public">
<MonitorTypeStates>
<MonitorTypeState ID="Ok" NoDetection="false"/>
<MonitorTypeState ID="Warning" NoDetection="false"/>
<MonitorTypeState ID="Critical" NoDetection="false"/>
</MonitorTypeStates>
<Configuration>
<xsd:element minOccurs="1" name="LogLevel" type="xsd:integer"/>
<xsd:element minOccurs="1" name="IntervalSeconds" type="xsd:integer"/>
<xsd:element minOccurs="1" name="TimeoutSeconds" type="xsd:integer"/>
<xsd:element minOccurs="1" name="InstanceIndex" type="xsd:string"/>
</Configuration>
<OverrideableParameters>
<OverrideableParameter ID="LogLevel" Selector="$Config/LogLevel$" ParameterType="int"/>
<OverrideableParameter ID="IntervalSeconds" Selector="$Config/IntervalSeconds$" ParameterType="int"/>
<OverrideableParameter ID="TimeoutSeconds" Selector="$Config/TimeoutSeconds$" ParameterType="int"/>
</OverrideableParameters>
<MonitorImplementation>
<MemberModules>
<DataSource ID="MON" TypeID="Dell.HelperUtilityAndLicensing.Monitor.DSMT">
<LogLevel>$Config/LogLevel$</LogLevel>
<IntervalSeconds>$Config/IntervalSeconds$</IntervalSeconds>
<TimeoutSeconds>$Config/TimeoutSeconds$</TimeoutSeconds>
<HelperUtilityCode>
'#################################################################################################################################
Dim omAPIHelper: Set omAPIHelper = New MOMAPIHelper
Dim mhlp : Set mhlp = New HelperUtility

mhlp.Name = "Dell Device Helper (OOB)"
mhlp.HelperInterface = "OOBHelper.Wsman"
mhlp.Version = "5.0.1"
mhlp.HelperDLLName = "DellDeviceHelper.dll"
mhlp.Helper32BitRegistryKey = "HKEY_LOCAL_MACHINE\SOFTWARE\Dell Computer Corporation\Dell Server Management Pack Suites\CurrentVersion"
mhlp.Helper64BitRegistryKey = "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Dell Computer Corporation\Dell Server Management Pack Suites\CurrentVersion"

Dim mhlpPresence, mhlpMessage, mhlpStatus: mhlpPresence = mhlp.IsPresent()
Dim iscompat: iscompat = mhlp.IsCompatible()

log.MOMDebugLog 1, "Is DellDeviceHelper compatible: " &amp; iscompat

mhlpStatus = "Ok"
mhlpMessage = "Dell Device Helper Utility is found and is compatible with Dell Out-of-band Server Management Pack"
If not mhlpPresence Then
mhlpStatus = "Critical"
mhlpMessage = "Dell Device Helper Utility is not found. Expected Dell Helper Utility of version " &amp; mhlp.ReqVersion &amp; "."
ElseIf not iscompat Then
mhlpStatus = "Critical"
if mhlp.ReqVersion &lt; mhlp.Version Then
mhlpMessage = "Higher version of Dell Device Helper Utility is found. Expected " &amp; mhlp.ReqVersion &amp; ". Found " &amp; mhlp.Version
Else
mhlpMessage = "Lower version of Dell Device Helper Utility is found. Expected " &amp; mhlp.ReqVersion &amp; ". Found " &amp; mhlp.Version
End If
End If

Call omAPIHelper.CreateMOMScriptAPI()

Call omAPIHelper.CreatePropertyBag()
Call omAPIHelper.AddInstValue ("InstanceIndex", "HelperUtility")
Call omAPIHelper.AddInstValue ("Status", mhlpStatus)
Call omAPIHelper.AddInstValue ("Message", mhlpMessage)
Call omAPIHelper.AddDataItem()

'oInstAddValue oBag, "InstanceIndex", "HelperUtility"
'oInstAddValue oBag, "Status", mhlpStatus
'oInstAddValue oBag, "ExpectedVersion", mhlp.ReqVersion
'oInstAddValue oBag, "InstalledVersion", mhlp.Version
'oInstAddValue oBag, "Message", mhlpMessage

if mhlpPresence Then
Dim licenseConfigurationManagerObj: Set licenseConfigurationManagerObj = New LicenseConfigurationManager
licenseConfigurationManagerObj.HelperInterface = "OOBHelper.LicenseConfiguration"
Call licenseConfigurationManagerObj.LoadLicenseConfiguration()
Call licenseConfigurationManagerObj.SetProductName("SCOM-OOB")
Call licenseConfigurationManagerObj.SetProductVersion("")
Call licenseConfigurationManagerObj.SetFeatureName("Server Out-of-Band Monitoring")

Call omAPIHelper.CreatePropertyBag()
Call omAPIHelper.AddInstValue ("InstanceIndex", "LicenseServerConfiguration")
Dim isLicenseServerConfiguredFlag
isLicenseServerConfiguredFlag = licenseConfigurationManagerObj.IsLicenseServerConfigured()
If isLicenseServerConfiguredFlag = False Then
log.MOMDebugLog 1, "License server is not configured"
Call omAPIHelper.AddInstValue ("Status", "Critical")
Call omAPIHelper.AddInstValue ("Message", "Dell License Server is not configured. Install and configure License Server.")
Else
log.MOMDebugLog 1, "License server is configured properly."
Call omAPIHelper.AddInstValue ("Status", "Ok")
Call omAPIHelper.AddInstValue ("Message", "Dell License Server is configured properly.")
End If
Call omAPIHelper.AddDataItem()

log.MOMDebugLog 1, "Checking for license server reachability..."
Dim licenseServerReachable
licenseServerReachable = licenseConfigurationManagerObj.IsLicenseServerReachable()
Call omAPIHelper.CreatePropertyBag()
Call omAPIHelper.AddInstValue ("InstanceIndex", "LicenseServerReachability")
If isLicenseServerConfiguredFlag = True Then
log.MOMDebugLog 1, "License server is configured properly, checking license server reachability..."
If licenseServerReachable = False Then
log.MOMDebugLog 1, "License server is not reachable"
Call omAPIHelper.AddInstValue ("Status", "Critical")
Call omAPIHelper.AddInstValue ("Message", "Dell License Server is not reachable.")
Else
log.MOMDebugLog 1, "License server is reachable"
Call omAPIHelper.AddInstValue ("Status", "Ok")
Call omAPIHelper.AddInstValue ("Message", "Dell License Server is reachable.")
End If
Else
log.MOMDebugLog 1, "License server is not configured properly, but setting license server reachability status in prop bag as OK in order to not generate this alert"
Call omAPIHelper.AddInstValue ("Status", "Ok")
Call omAPIHelper.AddInstValue ("Message", "Unable to check license server reachability. Dell License Server is not configured properly.")
End If
Call omAPIHelper.AddDataItem()

log.MOMDebugLog 1, "Checking for license usage..."
Call omAPIHelper.CreatePropertyBag()
Call omAPIHelper.AddInstValue ("InstanceIndex", "LicenseUsage")

If isLicenseServerConfiguredFlag = True And licenseServerReachable = True Then
log.MOMDebugLog 1, "License server is reachable, checking license availability status..."
Dim licenseUsagePercentageMessaage
licenseUsagePercentageMessaage = "License usage is " &amp; licenseConfigurationManagerObj.getInUseLicensePercentage() &amp; "%."
Select Case licenseConfigurationManagerObj.LicenseAvailabilityStatus
Case "good":
log.MOMDebugLog 1, "License availability is good"
Call omAPIHelper.AddInstValue ("Status", "Ok")
Call omAPIHelper.AddInstValue ("Message", "Dell License usage is within limits.")
Case "bad":
log.MOMDebugLog 1, "License availability is bad"
Call omAPIHelper.AddInstValue ("Status", "Warning")
Call omAPIHelper.AddInstValue ("Message", licenseUsagePercentageMessaage &amp; " License usage has reached warning levels.")
Case "ugly":
log.MOMDebugLog 1, "License availability is ugly"
Call omAPIHelper.AddInstValue ("Status", "Critical")
Call omAPIHelper.AddInstValue ("Message", licenseUsagePercentageMessaage &amp; " Dell License usage has crossed acceptable limits.")
Case "worse":
log.MOMDebugLog 1, "License availability is worse"
Call omAPIHelper.AddInstValue ("Status", "Critical")
Call omAPIHelper.AddInstValue ("Message", "No Licenses are available for this feature.")
Case Else:
log.MOMDebugLog 1, "Internal error during processing the license availability."
Call omAPIHelper.AddInstValue ("Status", "Critical")
Call omAPIHelper.AddInstValue ("Message", "Internal error during processing the license availability.")
End Select
Else
log.MOMDebugLog 1, "License server is not configured/reachable, but setting license usage status in prop bag as OK in order to not generate this alert"
Call omAPIHelper.AddInstValue ("Status", "Ok")
Call omAPIHelper.AddInstValue ("Message", "Unable to calculate license usage. Dell License Server is not configured/reachable.")
End If
Call omAPIHelper.AddDataItem()

End If
log.MOMDebugLog 1, "Returning PropertyBag items"
Call omAPIHelper.ReturnDataItems()
'#################################################################################################################################
</HelperUtilityCode>
</DataSource>
<ConditionDetection ID="OK" TypeID="System!System.ExpressionFilter">
<Expression>
<And>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery>Property[@Name='InstanceIndex']</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="String">$Config/InstanceIndex$</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery>Property[@Name='Status']</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="String">Ok</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
</And>
</Expression>
</ConditionDetection>
<ConditionDetection ID="WARNING" TypeID="System!System.ExpressionFilter">
<Expression>
<And>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery>Property[@Name='InstanceIndex']</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="String">$Config/InstanceIndex$</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery>Property[@Name='Status']</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="String">Warning</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
</And>
</Expression>
</ConditionDetection>
<ConditionDetection ID="CRITICAL" TypeID="System!System.ExpressionFilter">
<Expression>
<And>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery>Property[@Name='InstanceIndex']</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="String">$Config/InstanceIndex$</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery>Property[@Name='Status']</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="String">Critical</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
</And>
</Expression>
</ConditionDetection>
</MemberModules>
<RegularDetections>
<RegularDetection MonitorTypeStateID="Ok">
<Node ID="OK">
<Node ID="MON"/>
</Node>
</RegularDetection>
<RegularDetection MonitorTypeStateID="Warning">
<Node ID="WARNING">
<Node ID="MON"/>
</Node>
</RegularDetection>
<RegularDetection MonitorTypeStateID="Critical">
<Node ID="CRITICAL">
<Node ID="MON"/>
</Node>
</RegularDetection>
</RegularDetections>
</MonitorImplementation>
</UnitMonitorType>