CURDEPTH
IBM.MQ.Queue.CURDEPTH (Rule)
Colelct Current Queue Depth
Element properties: Member Modules:
Source Code: <Rule ID="IBM.MQ.Queue.CURDEPTH" Enabled="false" Target="IBM.MQ.Queue" ConfirmDelivery="false" Remotable="true" Priority="Normal" DiscardLevel="100">
<Category>PerformanceCollection</Category>
<DataSources>
<DataSource ID="DS" TypeID="Windows!Microsoft.Windows.TimedScript.PerformanceProvider">
<IntervalSeconds>300</IntervalSeconds>
<SyncTime/>
<ScriptName>CollectCURDEPTH.vbs</ScriptName>
<Arguments>$Target/Property[Type="IBM.MQ.Queue"]/QueueManagerName$ $Target/Property[Type="IBM.MQ.Queue"]/QueueName$</Arguments>
<ScriptBody><Script> Dim oArgs
Set oArgs = WScript.Arguments
Dim QueueManagerName, QueueName
QueueManagerName= oArgs(0)
QueueName = oArgs(1)
CURDEPTH = 0
Set objShell = WScript.CreateObject("WScript.Shell")
QueueCommand = "cmd /c echo Display Queue("&QueueName&") CURDEPTH| runmqsc "&QueueManagerName
Set objExecObject = objShell.Exec(QueueCommand)
Do While Not objExecObject.StdOut.AtEndOfStream
MQText = objExecObject.StdOut.ReadLine()
IF INSTR(MQText,"CURDEPTH(") THEN
StatusArray = Split(MQText, "CURDEPTH(")
CURDEPTH= CDBL(TRIM(REPLACE(StatusArray(1),")","")))
END IF
Loop
Dim oAPI, oBag
Set oAPI = CreateObject("MOM.ScriptAPI")
Set oBag = oAPI.CreatePropertyBag()
Call oBag.AddValue("PerfValue",CURDEPTH)
Call oAPI.Return(oBag)</Script> </ScriptBody>
<TimeoutSeconds>60</TimeoutSeconds>
<ObjectName>Queue</ObjectName>
<CounterName>CURDEPTH</CounterName>
<InstanceName>$Target/Property[Type="IBM.MQ.Queue"]/QueueName$</InstanceName>
<Value>$Data/Property[@Name='PerfValue']$</Value>
</DataSource>
</DataSources>
<WriteActions>
<WriteAction ID="WriteToDB" TypeID="SC!Microsoft.SystemCenter.CollectPerformanceData"/>
<WriteAction ID="WriteToDW" TypeID="SCDW!Microsoft.SystemCenter.DataWarehouse.PublishPerformanceData"/>
</WriteActions>
</Rule>