Description for the new unit monitor.
Target | Huawei.Server.ControllerVirtualDisk |
Parent Monitor | System.Health.AvailabilityState |
Category | AvailabilityHealth |
Enabled | True |
Alert Generate | False |
Alert Auto Resolve | True |
Monitor Type | Huawei.Server.EventTriggeredScriptMonitorType.3StateScriptMonitorType |
Remotable | True |
Accessibility | Public |
RunAs | Default |
<UnitMonitor ID="Huawei.Server.ConnectorVirtualDiskEventUnitMonitor" Accessibility="Public" Enabled="true" Target="Huawei.Server.ControllerVirtualDisk" ParentMonitorID="Health!System.Health.AvailabilityState" Remotable="true" Priority="Normal" TypeID="Huawei.Server.EventTriggeredScriptMonitorType.3StateScriptMonitorType" ConfirmDelivery="false">
<Category>AvailabilityHealth</Category>
<OperationalStates>
<OperationalState ID="Success" MonitorTypeStateID="Success" HealthState="Success"/>
<OperationalState ID="Warning" MonitorTypeStateID="Warning" HealthState="Warning"/>
<OperationalState ID="Critical" MonitorTypeStateID="Critical" HealthState="Error"/>
</OperationalStates>
<Configuration>
<ComputerName>$Target/Host/Host/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/PrincipalName$</ComputerName>
<LogName>Application</LogName>
<EventExpression>
<And>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery>EventDisplayNumber</XPathQuery>
</ValueExpression>
<Operator>GreaterEqual</Operator>
<ValueExpression>
<Value>2003</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery>EventDisplayNumber</XPathQuery>
</ValueExpression>
<Operator>LessEqual</Operator>
<ValueExpression>
<Value>2004</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery>PublisherName</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value>Huawei BMA</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
</And>
</EventExpression>
<ScriptName>ConnectorPhysicalDiskUnitMonitor.vbs</ScriptName>
<Arguments>$MPElement$ $Target/Id$ $Config/Computer$ $Target/Host/Host/Property[Type="Windows!Microsoft.Windows.LogicalDevice"]/DeviceID$ $Target/Property[Type="Huawei.Server.ControllerVirtualDisk"]/ID$</Arguments>
<ScriptBody>
'**********************************************************************************
' Script Name - DellServerMemoryUnit
' Author: Vignesh Pandian
'
' Description:
' Determine Unit Monitor health for ServerMemory
'
' (c) Copyright Huawei Inc. 2007 - All rights reserved
'**********************************************************************************
Option Explicit
On Error Resume Next
Dim oArgs
Set oArgs = WScript.Arguments
if oArgs.Count < 4 Then
Wscript.Quit -1
End If
Dim strComputer, objDellConnection, LogMessage, sQuery, colItems, objItemMemory, DiskStatus, TargetComputer, prmDeviceID
TargetComputer = oArgs(2)
prmDeviceID = oArgs(4)
strComputer = "."
set objDellConnection = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2\huawei")
If Err.Number <> 0 Then
LogMessage = "WMI Cimv2Dell Error Number : " & Err.Number & ". Description :" & Err.Description
Err.Clear
Else
If IsEmpty(objDellConnection) Then
LogMessage = "Unable to open WMI Namespace root-cimv2-dell. Check to see if the WMI service is enabled and running, and Install/Re-Install ServerAdministrator to ensure this WMI namespace exists. " & Err
Else
sQuery = "Select * from Huawei_LogicDiskInfo WHERE ld_id = '" & prmDeviceID & "'"
MOMDebugLog(sQuery)
Set colItems = objDellConnection.ExecQuery(sQuery)
If Err.Number <> 0 Then
LogMessage = sQuery & " Error Number:" & Err.Number & "Description:" & Err.Description
If Err.Number = -2147023169 Then
LogMessage = "RPC Failure occurred for namespace root-cimv2-dell"
End If
Err.Clear
MOMDebugLog(DiskStatus)
End If
If colItems is Nothing Then
LogMessage = "Unable to retrieve CIM_PhysicalMemory object"
Else
LogMessage = "CIM_PhysicalMemory object retrieved"
MOMDebugLog(DiskStatus)
For Each objItemMemory in colItems
If Err.Number <> 0 Then
If Err.Number = -2147023169 Then
LogMessage = "RPC Failure occurred for cimv2\dell - bmc info : " & Err.Number
ElseIf Err.Number = -2147217389 Then
LogMessage = "If PWS present, Please Install/Re-Install ServerAdministrator on Dell Server : " & Err.Number
Else
LogMessage = "Object RetrievalLoop Error Number:" & Err.Number & "Description:" & Err.Description
End If
Err.Clear
End If
If Not objItemMemory is Nothing Then
DiskStatus = objItemMemory.ld_state
End If
MOMDebugLog(DiskStatus)
Next
End If 'colItems is nothing
Set colItems = Nothing
End If 'dellconnection is noting
On Error GoTo 0
End If
If DiskStatus = "OPTIMAL" Then
DiskStatus = "OK"
ElseIf DiskStatus = "DEGRADED" OR DiskStatus = "PARTIALLY_DEGRADED" Then
DiskStatus = "Warning"
else if DiskStatus = "OFFLINE"
DiskStatus = "Critical"
else
DiskStatus = "OK"
End If
MOMDebugLog(DiskStatus)
Dim oAPI, oBag
Set oAPI = CreateObject("MOM.ScriptAPI")
Set oBag = oAPI.CreatePropertyBag()
Call oBag.AddValue("Status",DiskStatus)
Call oAPI.Return(oBag)
'*****************************************************************
' Function MOMDebugLog
' Add LogMessage Header - ScriptName and Time and Logging it.
'*****************************************************************
Public Function MOMDebugLog (ByVal strMessage)
Const ForReading = 1, ForWriting = 2, ForAppending = 8
Dim fso, f
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile("c:\Storage.txt", ForAppending, True)
f.WriteLine strMessage
f.Close
End Function
</ScriptBody>
<TimeoutSeconds>300</TimeoutSeconds>
<SuccessExpression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="String">Property[@Name='Status']</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="String">OK</Value>
</ValueExpression>
</SimpleExpression>
</SuccessExpression>
<WarningExpression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="String">Property[@Name='Status']</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="String">Warning</Value>
</ValueExpression>
</SimpleExpression>
</WarningExpression>
<CriticalExpression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="String">Property[@Name='Status']</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="String">Critical</Value>
</ValueExpression>
</SimpleExpression>
</CriticalExpression>
</Configuration>
</UnitMonitor>