<?xml version="1.0" standalone="yes"?>

<!--

  $Id: //depot/DEV/NetVigil/src/plugin/monitors/typedef/95_ent_nimble.xml#1 $
  
  NOTICE:
    Copyright 2013 Zyrion, Inc. All Rights Reserved. 
    This software is the proprietary information of  
    Zyrion, Inc. Use is subject to license terms.    
                                                                
  DESCRIPTION:
    Configuration file for automatically discovering and monitoring 
    Nimble storage arrays using enterprise MIB
  
-->
        
<NetVigil>
  <monitor type="snmp">

    <onLoad>
      <verify type="oid" 
        object=".1.3.6.1.2.1.1.2.0"
        pattern="^\.1\.3\.6\.1\.4\.1\.37447" 
        action="accept"/>
    </onLoad>

    <!-- volume stats -->

    <probeConfig>
      <subType name="disk" enabled="true">
        <snmpOid>
          <prefix>.1.3.6.1.4.1.37447.1.2.1</prefix>
          <poll name="objectIndex" index="2"/>
          <poll name="objectName" index="3"/>
          <poll name="volumeStatus" index="10"/>
          <poll name="maximumValue" index="4"/>
          <poll name="input" index="6"/>
        </snmpOid>
        <filter name="volumeStatus"
          pattern="^1$"
          action="accept"/>
        <postProcess
          testName="Volume [[$objectName]] Space Utilization"
          displayUnit="%"
          directive="percent"/>
      </subType>
    </probeConfig>

    <probeConfig>
      <subType name="nimble_conn" enabled="true">
        <snmpOid>
          <prefix>.1.3.6.1.4.1.37447.1.2.1</prefix>
          <poll name="objectIndex" index="2"/>
          <poll name="objectName" index="3"/>
          <poll name="volumeStatus" index="10"/>
          <poll name="input" index="11"/>
        </snmpOid>
        <filter name="volumeStatus"
          pattern="^1$"
          action="accept"/>
        <postProcess
          testName="Volume [[$objectName]] iSCSI Connections"
          directive="none"/>
      </subType>
    </probeConfig>

    <testtype>
      <displayName>Nimble: Number of iSCSI Connections</displayName>
      <subType>nimble_conn</subType>
      <displayCategory>system</displayCategory>
      <units>conn(s)</units>
      <severity_ascends_with_value>true</severity_ascends_with_value>
      <defaultWarningThreshold>50</defaultWarningThreshold>
      <defaultCriticalThreshold>150</defaultCriticalThreshold>
      <shadowWarningThreshold>50</shadowWarningThreshold>
      <shadowCriticalThreshold>150</shadowCriticalThreshold>
      <slaThreshold>50</slaThreshold>
      <testInterval>600</testInterval>
      <testField>
        <fieldName>snmpOID</fieldName>
        <fieldDisplayName>SNMP Object ID</fieldDisplayName>
        <isRequired>true</isRequired>
        <isPassword>false</isPassword>
        <defaultValue></defaultValue>
      </testField>
      <testField>
        <fieldName>resultMultiplier</fieldName>
        <fieldDisplayName>Result Multiplier</fieldDisplayName>
        <isRequired>false</isRequired>
        <isPassword>false</isPassword>
        <defaultValue>1</defaultValue>
      </testField>
      <testField>
        <fieldName>maxValue</fieldName>
        <fieldDisplayName>Maximum Value</fieldDisplayName>
        <isRequired>false</isRequired>
        <isPassword>false</isPassword>
        <defaultValue></defaultValue>
      </testField>
      <testField>
        <fieldName>resultProcessDirective</fieldName>
        <fieldDisplayName>Post Processing Directive</fieldDisplayName>
        <isRequired>false</isRequired>
        <isPassword>false</isPassword>
        <defaultValue>0</defaultValue>
      </testField>
    </testtype>

    <!-- global stats -->

    <probeConfig>
      <subType name="nimble_io_ops" enabled="true">
        <snmpOid>
          <prefix>.1.3.6.1.4.1.37447.1.3</prefix>
          <poll name="objectIndex" index="2"/>
          <poll name="input64" index="2"/>
        </snmpOid>
        <postProcess
          testName="Combined Read"
          directive="rate"/>
      </subType>
    </probeConfig>

    <testtype>
      <displayName>Nimble: Number Of Read/Write Operations</displayName>
      <subType>nimble_io_ops</subType>
      <displayCategory>network</displayCategory>
      <units>oper/sec</units>
      <severity_ascends_with_value>true</severity_ascends_with_value>
      <defaultWarningThreshold>5000</defaultWarningThreshold>
      <defaultCriticalThreshold>25000</defaultCriticalThreshold>
      <shadowWarningThreshold>5000</shadowWarningThreshold>
      <shadowCriticalThreshold>25000</shadowCriticalThreshold>
      <slaThreshold>5000</slaThreshold>
      <testInterval>300</testInterval>
      <testField>
        <fieldName>snmpOID</fieldName>
        <fieldDisplayName>SNMP Object ID</fieldDisplayName>
        <isRequired>true</isRequired>
        <isPassword>false</isPassword>
        <defaultValue></defaultValue>
      </testField>
      <testField>
        <fieldName>resultMultiplier</fieldName>
        <fieldDisplayName>Result Multiplier</fieldDisplayName>
        <isRequired>false</isRequired>
        <isPassword>false</isPassword>
        <defaultValue>1</defaultValue>
      </testField>
      <testField>
        <fieldName>maxValue</fieldName>
        <fieldDisplayName>Maximum Value</fieldDisplayName>
        <isRequired>false</isRequired>
        <isPassword>false</isPassword>
        <defaultValue>100000</defaultValue>
      </testField>
      <testField>
        <fieldName>resultProcessDirective</fieldName>
        <fieldDisplayName>Post Processing Directive</fieldDisplayName>
        <isRequired>false</isRequired>
        <isPassword>false</isPassword>
        <defaultValue>3</defaultValue>
      </testField>
    </testtype>

    <probeConfig>
      <subType name="nimble_io_ops" enabled="true">
        <snmpOid>
          <prefix>.1.3.6.1.4.1.37447.1.3</prefix>
          <poll name="objectIndex" index="4"/>
          <poll name="input64" index="4"/>
        </snmpOid>
        <postProcess
          testName="Combined Write"
          directive="rate"/>
      </subType>
    </probeConfig>

    <probeConfig>
      <subType name="nimble_io_ops" enabled="true">
        <snmpOid>
          <prefix>.1.3.6.1.4.1.37447.1.3</prefix>
          <poll name="objectIndex" index="3"/>
          <poll name="input64" index="3"/>
        </snmpOid>
        <postProcess
          testName="Sequential Read"
          directive="rate"/>
      </subType>
    </probeConfig>

    <probeConfig>
      <subType name="nimble_io_ops" enabled="true">
        <snmpOid>
          <prefix>.1.3.6.1.4.1.37447.1.3</prefix>
          <poll name="objectIndex" index="5"/>
          <poll name="input64" index="5"/>
        </snmpOid>
        <postProcess
          testName="Sequential Write"
          directive="rate"/>
      </subType>
    </probeConfig>

    <probeConfig>
      <subType name="nimble_io_traffic" enabled="true">
        <snmpOid>
          <prefix>.1.3.6.1.4.1.37447.1.3</prefix>
          <poll name="objectIndex" index="8"/>
          <poll name="input64" index="8"/>
          <poll name="output64" index="10"/>
        </snmpOid>
        <postProcess
          testName="Combined Data Traffic"
          resultMultiplier="1/1000"
          directive="rate"/>
      </subType>
    </probeConfig>

    <testtype>
      <displayName>Nimble: I/O Data Traffic</displayName>
      <subType>nimble_io_traffic</subType>
      <displayCategory>network</displayCategory>
      <units>kbps</units>
      <showAsGroup>false</showAsGroup>
      <severity_ascends_with_value>true</severity_ascends_with_value>
      <defaultWarningThreshold>50000</defaultWarningThreshold>
      <defaultCriticalThreshold>85000</defaultCriticalThreshold>
      <shadowWarningThreshold>50000</shadowWarningThreshold>  
      <shadowCriticalThreshold>85000</shadowCriticalThreshold>  
      <slaThreshold>75000</slaThreshold>
      <testInterval>300</testInterval>
      <testField>
        <fieldName>snmpOID</fieldName>  
        <fieldDisplayName>SNMP Object ID</fieldDisplayName>
        <isRequired>true</isRequired> 
        <isPassword>false</isPassword>
        <defaultValue></defaultValue>
      </testField>
      <testField>
        <fieldName>resultMultiplier</fieldName>
        <fieldDisplayName>Result Multiplier</fieldDisplayName>
        <isRequired>false</isRequired>
        <isPassword>false</isPassword>
        <defaultValue>1</defaultValue>
      </testField>
      <testField>
        <fieldName>maxValue</fieldName>
        <fieldDisplayName>Maximum Value</fieldDisplayName>
        <isRequired>false</isRequired>
        <isPassword>false</isPassword> 
        <defaultValue></defaultValue>
      </testField>
      <testField>
        <fieldName>resultProcessDirective</fieldName>
        <fieldDisplayName>Post Processing Directive</fieldDisplayName>
        <isRequired>false</isRequired>
        <isPassword>false</isPassword>
        <defaultValue>3</defaultValue>
      </testField>
    </testtype>

    <probeConfig>
      <subType name="nimble_io_traffic" enabled="true">
        <snmpOid>
          <prefix>.1.3.6.1.4.1.37447.1.3</prefix>
          <poll name="objectIndex" index="8"/>
          <poll name="input64" index="9"/>
          <poll name="output64" index="11"/>
        </snmpOid>
        <postProcess
          testName="Sequential Data Traffic"
          resultMultiplier="1/1000"
          directive="rate"/>
      </subType>
    </probeConfig>
    
    <probeConfig>
      <subType name="nimble_io_latency" enabled="true">
        <snmpOid>
          <prefix>.1.3.6.1.4.1.37447.1.3</prefix>
          <poll name="objectIndex" index="6"/>
          <poll name="input64" index="6"/>
        </snmpOid>
        <postProcess
          displayUnit="ms"
          resultMultiplier="1/1000"
          testName="I/O Read Time"
          directive="delta"/>
      </subType>
    </probeConfig>

    <probeConfig>
      <subType name="nimble_io_latency" enabled="true">
        <snmpOid>
          <prefix>.1.3.6.1.4.1.37447.1.3</prefix>
          <poll name="objectIndex" index="7"/>
          <poll name="input64" index="7"/>
        </snmpOid>
        <postProcess
          displayUnit="ms"
          resultMultiplier="1/1000"
          testName="I/O Write Time"
          directive="delta"/>
      </subType>
    </probeConfig>
    
    <testtype>
      <displayName>Nimble: I/O Latency</displayName>
      <subType>nimble_io_latency</subType>
      <displayCategory>network</displayCategory>
      <units>ms</units>
      <showAsGroup>true</showAsGroup>
      <severity_ascends_with_value>true</severity_ascends_with_value>
      <defaultWarningThreshold>9999</defaultWarningThreshold>
      <defaultCriticalThreshold>9999</defaultCriticalThreshold>
      <shadowWarningThreshold>9999</shadowWarningThreshold>
      <shadowCriticalThreshold>9999</shadowCriticalThreshold>
      <slaThreshold>9999</slaThreshold>
      <testInterval>300</testInterval>
      <testField>
        <fieldName>snmpOID</fieldName>  
        <fieldDisplayName>SNMP Object ID</fieldDisplayName>
        <isRequired>true</isRequired>
        <isPassword>false</isPassword>
        <defaultValue></defaultValue>
      </testField>
      <testField>
        <fieldName>resultMultiplier</fieldName>
        <fieldDisplayName>Result Multiplier</fieldDisplayName>
        <isRequired>false</isRequired>
        <isPassword>false</isPassword>
        <defaultValue>1</defaultValue>
      </testField>
      <testField>
        <fieldName>maxValue</fieldName>
        <fieldDisplayName>Maximum Value</fieldDisplayName>
        <isRequired>false</isRequired>
        <isPassword>false</isPassword> 
        <defaultValue></defaultValue>
      </testField>
      <testField>
        <fieldName>resultProcessDirective</fieldName>
        <fieldDisplayName>Post Processing Directive</fieldDisplayName>
        <isRequired>false</isRequired>
        <isPassword>false</isPassword>
        <defaultValue>3</defaultValue>
      </testField>
    </testtype>

    <probeConfig>
      <subType name="nimble_io_ops_latency" enabled="true">
        <snmpOid>
          <prefix>.1.3.6.1.4.1.37447.1.3</prefix>
          <poll name="objectIndex" index="2"/>
          <poll name="input64" index="2"/>
        </snmpOid>
        <postProcess
          displayUnit="reads"
          resultMultiplier="1"
          testName="I/O Reads for Latency"
          directive="delta"/>
      </subType>
    </probeConfig>

    <probeConfig>
      <subType name="nimble_io_ops_latency" enabled="true">
        <snmpOid>
          <prefix>.1.3.6.1.4.1.37447.1.3</prefix>
          <poll name="objectIndex" index="4"/>
          <poll name="input64" index="4"/>
        </snmpOid>
        <postProcess
          displayUnit="writes"
          resultMultiplier="1"
          testName="I/O Writes for Latency"
          directive="delta"/>
      </subType>
    </probeConfig>
    
    <testtype>
      <displayName>Nimble: I/O Operations for Latency</displayName>
      <subType>nimble_io_ops_latency</subType>
      <displayCategory>network</displayCategory>
      <units>ops</units>
      <showAsGroup>true</showAsGroup>
      <severity_ascends_with_value>true</severity_ascends_with_value>
      <defaultWarningThreshold>9999</defaultWarningThreshold>
      <defaultCriticalThreshold>9999</defaultCriticalThreshold>
      <shadowWarningThreshold>9999</shadowWarningThreshold>
      <shadowCriticalThreshold>9999</shadowCriticalThreshold>
      <slaThreshold>9999</slaThreshold>
      <testInterval>300</testInterval>
      <testField>
        <fieldName>snmpOID</fieldName>  
        <fieldDisplayName>SNMP Object ID</fieldDisplayName>
        <isRequired>true</isRequired>
        <isPassword>false</isPassword>
        <defaultValue></defaultValue>
      </testField>
      <testField>
        <fieldName>resultMultiplier</fieldName>
        <fieldDisplayName>Result Multiplier</fieldDisplayName>
        <isRequired>false</isRequired>
        <isPassword>false</isPassword>
        <defaultValue>1</defaultValue>
      </testField>
      <testField>
        <fieldName>maxValue</fieldName>
        <fieldDisplayName>Maximum Value</fieldDisplayName>
        <isRequired>false</isRequired>
        <isPassword>false</isPassword> 
        <defaultValue></defaultValue>
      </testField>
      <testField>
        <fieldName>resultProcessDirective</fieldName>
        <fieldDisplayName>Post Processing Directive</fieldDisplayName>
        <isRequired>false</isRequired>
        <isPassword>false</isPassword>
        <defaultValue>3</defaultValue>
      </testField>
    </testtype>
    
    <probeConfig>
      <subType name="nimble_hits" enabled="true">
        <snmpOid>
          <prefix>.1.3.6.1.4.1.37447.1.3</prefix>
          <poll name="objectIndex" index="16"/>
          <poll name="input64" index="16"/>
        </snmpOid>
        <postProcess
          testName="Total Cache Hits"
          directive="rate"/>
      </subType>
    </probeConfig>
    
    <testtype>
      <displayName>Nimble: Total Cache Hits (Non-Sequential Read I/O)</displayName>
      <subType>nimble_hits</subType>
      <displayCategory>network</displayCategory>
      <units>hits/s</units>
      <showAsGroup>true</showAsGroup>
      <severity_ascends_with_value>true</severity_ascends_with_value>
      <defaultWarningThreshold>100</defaultWarningThreshold>
      <defaultCriticalThreshold>500</defaultCriticalThreshold>
      <shadowWarningThreshold>100</shadowWarningThreshold>
      <shadowCriticalThreshold>500</shadowCriticalThreshold>
      <slaThreshold>500</slaThreshold>
      <testInterval>300</testInterval>
      <testField>
        <fieldName>snmpOID</fieldName>  
        <fieldDisplayName>SNMP Object ID</fieldDisplayName>
        <isRequired>true</isRequired>
        <isPassword>false</isPassword>
        <defaultValue></defaultValue>
      </testField>
      <testField>
        <fieldName>resultMultiplier</fieldName>
        <fieldDisplayName>Result Multiplier</fieldDisplayName>
        <isRequired>false</isRequired>
        <isPassword>false</isPassword>
        <defaultValue>1</defaultValue>
      </testField>
      <testField>
        <fieldName>maxValue</fieldName>
        <fieldDisplayName>Maximum Value</fieldDisplayName>
        <isRequired>false</isRequired>
        <isPassword>false</isPassword> 
        <defaultValue></defaultValue>
      </testField>
      <testField>
        <fieldName>resultProcessDirective</fieldName>
        <fieldDisplayName>Post Processing Directive</fieldDisplayName>
        <isRequired>false</isRequired>
        <isPassword>false</isPassword>
        <defaultValue>3</defaultValue>
      </testField>
    </testtype>

  </monitor>

  <applicationProfile>
    <name>Nimble Storage Array</name>
    <description>
      Availability and performance metrics from Nimble devices
      (network attached system/iSCSI) using proprietery SNMP MIB
    </description>
    <testList type="snmp">
      <subType>nimble_conn</subType>
      <subType>nimble_io_ops</subType>
      <subType>nimble_io_traffic</subType>
      <subType>nimble_io_latency</subType>
      <subType>nimble_hits</subType>
      <subType>nimble_vol_free</subType>
      <subType>nimble_io_ops_latency</subType>
      <!-- standard resource metrics -->
      <subType>disk</subType>
      <subType>cpu</subType>
      <subType>phymemory</subType>
      <subType>virtmemory</subType>
      <subType>sys_uptime</subType>
      <subType>interface_status</subType>
      <subType>bandwidth</subType>
      <subType>interface_pkt_rate</subType>
      <subType>interface_bytes_rate</subType>
    </testList>
    <testList type="ping">
      <subType>pl</subType>
      <subType>rtt</subType>
    </testList>
  </applicationProfile>

</NetVigil>
