System.NetworkManagement.MemoryPerfProvider

Applies To: System Center 2012 - Operations Manager, System Center 2012 R2 Operations Manager, System Center 2012 SP1 - Operations Manager

The System.NetworkManagement.MemoryPerfProvider data source module type provides System.Performance.Data type data regarding an SNMP node’s memory performance.

Usage

This module retrieves performance information regarding the memory on the specified SNMP node. Not all devices provide the information necessary to use this module; you need to know the OIDs for the free memory, the total memory, and the valid memory. In addition, you need to know the valid memory value, so that you can validate the value returned.

Type Definition

<DataSourceModuleType ID="System.NetworkManagement.MemoryPerfProvider" Accessibility="Public" Batching="false">
  <Configuration>
    <IncludeSchemaTypes>
      <SchemaType>System!System.ParamListSchema</SchemaType>
      <SchemaType>System.ExpressionEvaluatorSchema</SchemaType>
      <SchemaType>Snmp!System.SnmpVarBindsSchema</SchemaType>
    </IncludeSchemaTypes>
    <xsd:element minOccurs="1" maxOccurs="1" default="240" name="Interval" type="xsd:integer" xmlns:xsd="http://www.w3.org/2001/XMLSchema" />
    <xsd:element minOccurs="1" maxOccurs="1" default="3" name="NoOfRetries" type="xsd:unsignedInt" xmlns:xsd="http://www.w3.org/2001/XMLSchema" />
    <xsd:element minOccurs="1" maxOccurs="1" default="1500" name="Timeout" type="xsd:unsignedInt" xmlns:xsd="http://www.w3.org/2001/XMLSchema" />
    <xsd:element minOccurs="1" maxOccurs="1" name="FreeMemoryOID" type="xsd:string" xmlns:xsd="http://www.w3.org/2001/XMLSchema" />
    <xsd:element minOccurs="1" maxOccurs="1" name="UsedMemoryOID" type="xsd:string" xmlns:xsd="http://www.w3.org/2001/XMLSchema" />
    <xsd:element minOccurs="1" maxOccurs="1" name="ValidMemoryOID" type="xsd:string" xmlns:xsd="http://www.w3.org/2001/XMLSchema" />
    <xsd:element minOccurs="1" maxOccurs="1" name="ValidMemoryValue" type="xsd:unsignedInt" xmlns:xsd="http://www.w3.org/2001/XMLSchema" />
    <xsd:element minOccurs="1" name="ObjectName" type="xsd:string" xmlns:xsd="http://www.w3.org/2001/XMLSchema" />
    <xsd:element minOccurs="1" name="CounterName" type="xsd:string" xmlns:xsd="http://www.w3.org/2001/XMLSchema" />
  </Configuration>
  <OverrideableParameters>
    <OverrideableParameter ID="Interval" Selector="$Config/Interval$" ParameterType="int" />
    <OverrideableParameter ID="NoOfRetries" Selector="$Config/NoOfRetries$" ParameterType="int" />
    <OverrideableParameter ID="Timeout" Selector="$Config/Timeout$" ParameterType="int" />
  </OverrideableParameters>
  <ModuleImplementation Isolation="Any">
    <Composite>
      <MemberModules>
        <DataSource ID="SnmpDataSource" TypeID="System.NetworkManagement.Host.ExtendedSnmpQueryProvider">
          <Interval>$Config/Interval$</Interval>
          <NoOfRetries>$Config/NoOfRetries$</NoOfRetries>
          <Timeout>$Config/Timeout$</Timeout>
          <SnmpVarBinds>
            <SnmpVarBind>
              <OID>$Config/FreeMemoryOID$</OID>
              <Syntax>0</Syntax>
              <Value VariantType="8" />
            </SnmpVarBind>
            <SnmpVarBind>
              <OID>$Config/UsedMemoryOID$</OID>
              <Syntax>0</Syntax>
              <Value VariantType="8" />
            </SnmpVarBind>
            <SnmpVarBind>
              <OID>$Config/ValidMemoryOID$</OID>
              <Syntax>0</Syntax>
              <Value VariantType="8" />
            </SnmpVarBind>
          </SnmpVarBinds>
          <OutputOnError>false</OutputOnError>
        </DataSource>
        <ConditionDetection ID="MemoryValidityFilter" TypeID="System.NetworkManagement.ExpressionFilter">
          <Expression>
            <SimpleExpression>
              <ValueExpression>
                <NumericValue>
                  <XPathQuery Type="Double">SnmpVarBinds/SnmpVarBind[OID="$Config/ValidMemoryOID$"]/Value</XPathQuery>
                </NumericValue>
              </ValueExpression>
              <Operator>Equal</Operator>
              <ValueExpression>
                <Value Type="Double">$Config/ValidMemoryValue$</Value>
              </ValueExpression>
            </SimpleExpression>
          </Expression>
          <SuppressionSettings>
            <MatchCount>1</MatchCount>
            <SampleCount>1</SampleCount>
          </SuppressionSettings>
        </ConditionDetection>
        <ConditionDetection ID="ComputePerfValue" TypeID="System.NetworkManagement.Computation">
          <NumericValue>
            <BranchValueExpression>
              <Expression>
                <SimpleExpression>
                  <ValueExpression>
                    <Value Type="Double">0.0</Value>
                  </ValueExpression>
                  <Operator>Equal</Operator>
                  <ValueExpression>
                    <NumericValue>
                      <Summation>
                        <NumericValue>
                          <XPathQuery Type="Double">SnmpVarBinds/SnmpVarBind[OID="$Config/FreeMemoryOID$"]/Value</XPathQuery>
                        </NumericValue>
                        <NumericValue>
                          <XPathQuery Type="Double">SnmpVarBinds/SnmpVarBind[OID="$Config/UsedMemoryOID$"]/Value</XPathQuery>
                        </NumericValue>
                      </Summation>
                    </NumericValue>
                  </ValueExpression>
                </SimpleExpression>
              </Expression>
              <TrueValueExpression>
                <NumericValue>
                  <Value>0</Value>
                </NumericValue>
              </TrueValueExpression>
              <FalseValueExpression>
                <NumericValue>
                  <Division>
                    <NumericValue>
                      <Product>
                        <NumericValue>
                          <XPathQuery Type="Double">SnmpVarBinds/SnmpVarBind[OID="$Config/FreeMemoryOID$"]/Value</XPathQuery>
                        </NumericValue>
                        <NumericValue>
                          <Value>100.0</Value>
                        </NumericValue>
                      </Product>
                    </NumericValue>
                    <NumericValue>
                      <Summation>
                        <NumericValue>
                          <XPathQuery Type="Double">SnmpVarBinds/SnmpVarBind[OID="$Config/FreeMemoryOID$"]/Value</XPathQuery>
                        </NumericValue>
                        <NumericValue>
                          <XPathQuery Type="Double">SnmpVarBinds/SnmpVarBind[OID="$Config/UsedMemoryOID$"]/Value</XPathQuery>
                        </NumericValue>
                      </Summation>
                    </NumericValue>
                  </Division>
                </NumericValue>
              </FalseValueExpression>
            </BranchValueExpression>
          </NumericValue>
        </ConditionDetection>
        <ConditionDetection ID="Mapper" TypeID="Performance!System.Performance.DataGenericMapper">
          <ObjectName>$Config/ObjectName$</ObjectName>
          <CounterName>$Config/CounterName$</CounterName>
          <InstanceName />
          <Value>$Data/Value$</Value>
        </ConditionDetection>
      </MemberModules>
      <Composition>
        <Node ID="Mapper">
          <Node ID="ComputePerfValue">
            <Node ID="MemoryValidityFilter">
              <Node ID="SnmpDataSource" />
            </Node>
          </Node>
        </Node>
      </Composition>
    </Composite>
  </ModuleImplementation>
  <OutputType>Performance!System.Performance.Data</OutputType>
</DataSourceModuleType>

Parameters

The System.NetworkManagement.MemoryPerfProvider module supports the following configuration parameters:

Parameter Type Overrideable Description

Interval

Integer

True

Required parameter. Contains the interval, in seconds, at which the probe performs the SNMP operation. Defaults to 240.

NoOfRetries

Integer

True

Optional parameter. The number of times that an SNMP GET operation will retry if it times out. Defaults to 3.

Timeout

Integer

True

Optional parameter. The amount of time (in milliseconds) before an SNMP GET operation times out. Defaults to 1500.

FreeMemoryOID

String

False

Required parameter. The OID for the free memory on the SNMP node.

UsedMemoryOID

String

False

Required parameter. The OID for the used memory on the SNMP node.

ValidMemoryOID

String

False

Required parameter. The OID for the valid memory on the SNMP node.

ValidMemoryValue

Integer

False

Required parameter. A number that determines whether the information returned from the node is valid for memory.

ObjectName

String

False

Required parameter. Specifies the performance object name.

CounterName

String

False

Required parameter. Specifies the name of the performance counter.

Composition

The System.NetworkManagement.MemoryPerfProvider module is a composite module that contains the member modules described in the following table.

Workflow Run Order Module Type Usage

1

System.NetworkManagement.Host.ExtendedSnmpQueryProvider

Retrieves data from the specified SNMP node, in this case the free and used memory amounts.

2

System.NetworkManagement.ExpressionFilter

Compares the value returned from the valid memory OID to the configured value.

3

System.NetworkManagement.Computation

Calculates the amount of free memory in the device pool, expressed as a percentage.

4

System.Performance.DataGenericMapper

Maps the retrieved information to System.Performance.Data.

Module Type Usage

System.NetworkManagement.LargestFreeBufferProvider

Retrieves information about the largest area of contiguous bytes from the memory pool that are currently unused, expressed as a percentage of the free memory in the memory pool.

External Module References

None

Sample

The following XML example shows how System.NetworkManagement.MemoryPerfProvider is used in a rule to retrieve the amount of free memory on a Cisco device. Note that the OIDs for the free memory, used memory, and valid memory are already known, and a value for validating the memory data is provided.

<Rule ID="System.NetworkManagement.Cisco.Memory.FreeMemoryPct" Enabled="true" Target="NetworkLibrary!System.NetworkManagement.Cisco_Performance_Memory" ConfirmDelivery="false" Remotable="true" Priority="Normal" DiscardLevel="100">
  <Category>PerformanceCollection</Category>
  <DataSources>
    <DataSource ID="DS" TypeID="System.NetworkManagement.MemoryPerfProvider">
      <Interval>300</Interval>
      <NoOfRetries>3</NoOfRetries>
      <Timeout>3500</Timeout>
      <FreeMemoryOID>.1.3.6.1.4.1.9.9.48.1.1.1.6.$Target/Property[Type="NetworkLibrary!System.NetworkManagement.LogicalDevice"]/Index$</FreeMemoryOID>
      <UsedMemoryOID>.1.3.6.1.4.1.9.9.48.1.1.1.5.$Target/Property[Type="NetworkLibrary!System.NetworkManagement.LogicalDevice"]/Index$</UsedMemoryOID>
      <ValidMemoryOID>.1.3.6.1.4.1.9.9.48.1.1.1.4.$Target/Property[Type="NetworkLibrary!System.NetworkManagement.LogicalDevice"]/Index$</ValidMemoryOID>
      <ValidMemoryValue>1</ValidMemoryValue>
      <ObjectName>Memory</ObjectName>
      <CounterName>Free Memory %</CounterName>
    </DataSource>
  </DataSources>
  <ConditionDetection ID="CollectionFilter" TypeID="System.NetworkManagement.ExpressionFilter">
    <Expression />
    <SuppressionSettings>
      <MatchCount>3</MatchCount>
      <SampleCount>3</SampleCount>
    </SuppressionSettings>
  </ConditionDetection>
  <WriteActions>
    <WriteAction ID="WriteToDB" TypeID="SystemCenter!Microsoft.SystemCenter.CollectPerformanceData" />
    <WriteAction ID="WriteToDW" TypeID="SCDW!Microsoft.SystemCenter.DataWarehouse.PublishPerformanceData" />
  </WriteActions>
</Rule>

Information

   

Module Type

DataSourceModuleType

Input Type

None

Output Type

System.Performance.Data

Implementation

Composite

Library

System.NetworkManagement.Monitoring