Huawei.Bmc.Snmp.Monitor.BBU

Huawei.RackServer.Huawei.Bmc.Snmp.Monitor.BBU (UnitMonitor)

Description for the new unit monitor.

Element properties:

TargetHuawei.Bmc.Snmp.BBU
Parent MonitorSystem.Health.AvailabilityState
CategoryAvailabilityHealth
EnabledTrue
Alert GenerateFalse
Alert Auto ResolveFalse
Monitor TypeMicrosoft.Windows.TimedScript.ThreeStateMonitorType
RemotableTrue
AccessibilityInternal
RunAsDefault

Source Code:

<UnitMonitor ID="Huawei.RackServer.Huawei.Bmc.Snmp.Monitor.BBU" Accessibility="Internal" Enabled="true" Target="Huawei.Bmc.Snmp.BBU" ParentMonitorID="Health!System.Health.AvailabilityState" Remotable="true" Priority="Normal" TypeID="Windows!Microsoft.Windows.TimedScript.ThreeStateMonitorType" ConfirmDelivery="false">
<Category>AvailabilityHealth</Category>
<OperationalStates>
<OperationalState ID="Error" MonitorTypeStateID="Error" HealthState="Error"/>
<OperationalState ID="Warning" MonitorTypeStateID="Warning" HealthState="Warning"/>
<OperationalState ID="Success" MonitorTypeStateID="Success" HealthState="Success"/>
</OperationalStates>
<Configuration>
<IntervalSeconds>1800</IntervalSeconds>
<SyncTime/>
<ScriptName>BBUUnitMonitor.vbs</ScriptName>
<Arguments>$MPElement$ $Target/Id$ $Target/Host/Property[Type="NetworkLibrary!System.NetworkManagement.LogicalDevice"]/Index$ $Target/Property[Type="Huawei.Bmc.Snmp.BBU"]/DeviceID$ $RunAs[Name="NetworkLibrary!System.NetworkManagement.Snmp.MonitoringAccount"]/CommunityString$ $Target/Host/Host/Property[Type="NetworkLibrary!System.NetworkManagement.Node"]/SNMPAddress$ $Target/Host/Host/Property[Type="NetworkLibrary!System.NetworkManagement.Node"]/PortNumber$</Arguments>
<ScriptBody><Script>
'**********************************************************************************
' Script Name - BBUUnitMonitor
' Author:
' Description:
' Determine Unit Monitor health for Server disk
'
' (c) Copyright Huawei Inc. 2013 - All rights reserved
'
'unknown(65535)
'bit0: 1 - voltage is low --- major
'bit1: 1 - need replace pack --- major
'bit2: 1 - learn cycle failed --- major
'bit3: 1 - learn cycle timeout ----unknow
'bit4: 1 - pack is about to fail --- major
'bit5: 1 - remaining capacity low --- minor
'bit6: 1 - no space for cache offload ---major
'
'**********************************************************************************
Option Explicit
On Error Resume Next

Dim oArgs
Dim exePath, snmpVer, arr, host, ws, debugFlag
Dim BBUStatus,BBUNum,community,ipAddr,BBU_HealthOID,BBU_Health,CurrentTime,prmDeviceID,BBU_Health1,port

Set oArgs = WScript.Arguments
prmDeviceID = oArgs(1)
RaidNum = oArgs(2)
BBUNum = oArgs(3)
community = oArgs(4)
ipAddr = oArgs(5)
port = oArgs(6)

exePath = "C:\"&amp;"Program Files"&amp;"\Huawei\snmp\snmpget.exe"
snmpVer = "2c"
debugFlag = 0

Set ws = CreateObject("WScript.Shell")
host = WScript.FullName

If LCase( right(host, len(host)-InStrRev(host,"\")) ) = "wscript.exe" Then
ws.run "cscript """ &amp; WScript.ScriptFullName &amp; chr(34), 0
WScript.Quit
End If

CurrentTime = Hour(Now)&amp; ":" &amp; Minute(Now) &amp;":" &amp;Second(Now)
BBU_HealthOID = "1.3.6.1.4.1.2011.2.235.1.1.36.50.1.18."&amp;BBUNum
BBU_Health = getOidResult( BBU_HealthOID)

BBUStatus = BBU_Health

BBU_Health1 = BBU_Health\2\2\2
IF (BBU_Health1 Mod 2) =1 Then
BBUStatus = 0
End IF

BBU_Health1 = BBU_Health\2\2\2\2\2
IF (BBU_Health1 Mod 2) =1 Then
BBUStatus = 2
End IF

IF (BBU_Health Mod 2) =1 Then
BBUStatus = 3
End IF

BBU_Health1 = BBU_Health\2
IF (BBU_Health1 Mod 2) =1 Then
BBUStatus = 3
End IF

BBU_Health1 = BBU_Health\2\2
IF (BBU_Health1 Mod 2) =1 Then
BBUStatus = 3
End IF


BBU_Health1 = BBU_Health\2\2\2\2
IF (BBU_Health1 Mod 2) =1 Then
BBUStatus = 3
End IF


BBU_Health1 = BBU_Health\2\2\2\2\2\2
IF (BBU_Health1 Mod 2) =1 Then
BBUStatus = 3
End IF


If BBUStatus = 2 Then
BBUStatus = "Warning"
ElseIf BBUStatus = 3 OR BBUStatus = 4 Then
BBUStatus = "Error"
else
BBUStatus = "OK"
End If
MOMDebugLog("time now :" &amp; CurrentTime &amp; " SNMPAddr:" &amp; ipAddr &amp; " BBUNum:" &amp; BBUNum &amp;" BBU_Health:" &amp; BBU_Health &amp;" BBUStatus: " &amp; BBUStatus )

Dim oAPI, oBag
Set oAPI = CreateObject("MOM.ScriptAPI")
Set oBag = oAPI.CreatePropertyBag()
Call oBag.AddValue("Status",BBUStatus)
Call oAPI.Return(oBag)
oBag = Nothing
'*****************************************************************
' Function getOidResult
' query OID value through snmp interface.
'*****************************************************************
Public Function getOidResult (ByVal Oid)
Dim cmd, result, getResult, arr

cmd = exePath &amp; " -v " &amp; snmpVer &amp; " -c " &amp; community &amp; " -r 3 -t 20 -O vq " &amp; ipAddr &amp;":"&amp;port &amp; " " &amp; Oid
Set getResult = ws.Exec(cmd)
result = getResult.StdOut.ReadAll
Set getResult = Nothing
IF len(result )&gt;1 Then
IF (Mid(result ,1,1)=chr(34) And Mid(result ,len(result )-1,1)=chr(34)) Then
result = Mid(result ,2,len(result)-3) &amp; chr(32)
End IF
End IF
getOidResult = result

End Function


'*****************************************************************
' Function MOMDebugLog
' Add LogMessage Header - ScriptName and Time and Logging it.
'*****************************************************************
Public Function MOMDebugLog (ByVal strMessage)
IF debugFlag = 1 then
Const ForReading = 1, ForWriting = 2, ForAppending = 8
Set fso=CreateObject("Scripting.FileSystemObject")
if fso.folderExists("C:\scomLog") then
Dim fso, f
Set f = fso.OpenTextFile("c:\scomLog\RunTimeMonitorBBU.txt", ForAppending, True)
f.WriteLine strMessage
f.Close
End if
End if
End Function

</Script></ScriptBody>
<TimeoutSeconds>600</TimeoutSeconds>
<ErrorExpression>
<SimpleExpression>
<ValueExpression>
<XPathQuery>Property[@Name='Status']</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="String">Error</Value>
</ValueExpression>
</SimpleExpression>
</ErrorExpression>
<WarningExpression>
<SimpleExpression>
<ValueExpression>
<XPathQuery>Property[@Name='Status']</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="String">Warning</Value>
</ValueExpression>
</SimpleExpression>
</WarningExpression>
<SuccessExpression>
<SimpleExpression>
<ValueExpression>
<XPathQuery>Property[@Name='Status']</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="String">OK</Value>
</ValueExpression>
</SimpleExpression>
</SuccessExpression>
</Configuration>
</UnitMonitor>