<ManagementPack ContentReadable="true" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <Manifest>
    <Identity>
      <ID>Microsoft.SystemCenter.NetworkDevice.Custom</ID>
      <Version>6.0.6278.0</Version>
    </Identity>
    <Name>Microsoft.SystemCenter.NetworkDevice.Custom</Name>
    <References>
      <Reference Alias="NetworkDeviceLibrary">
        <ID>Microsoft.SystemCenter.NetworkDevice.Library</ID>
        <Version>6.0.6278.0</Version>
        <PublicKeyToken>31bf3856ad364e35</PublicKeyToken>
      </Reference>
      <Reference Alias="Health">
        <ID>System.Health.Library</ID>
        <Version>6.0.6278.0</Version>
        <PublicKeyToken>31bf3856ad364e35</PublicKeyToken>
      </Reference>
    </References>
  </Manifest>
  <Monitoring>
    <Monitors>
      <UnitMonitor ID="Microsoft.SystemCenter.NetworkDevice.CheckDeviceStatus.Custom" Accessibility="Public" Target="NetworkDeviceLibrary!Microsoft.SystemCenter.NetworkDevice" Enabled="true" TypeID="NetworkDeviceLibrary!Microsoft.SystemCenter.NetworkDevice.CheckDeviceState" ParentMonitorID="Health!System.Health.AvailabilityState">
        <Category>AvailabilityHealth</Category>
        <AlertSettings AlertMessage="Microsoft.SystemCenter.NetworkDevice.CheckDeviceStatus.Custom.AlertMessageResourceID">
          <AlertOnState>Error</AlertOnState>
          <AutoResolve>true</AutoResolve>
          <AlertPriority>Normal</AlertPriority>
          <AlertSeverity>MatchMonitorHealth</AlertSeverity>
          <AlertParameters>
            <AlertParameter1>$Target/Property[Type="NetworkDeviceLibrary!Microsoft.SystemCenter.NetworkDevice"]/Name$</AlertParameter1>
            <AlertParameter2>$Target/Property[Type="NetworkDeviceLibrary!Microsoft.SystemCenter.NetworkDevice"]/IPAddress$</AlertParameter2>
        </AlertParameters>
        </AlertSettings>
        <OperationalStates>
          <OperationalState HealthState="Success" MonitorTypeStateID="DeviceUp" ID="Success" />
          <OperationalState HealthState="Error" MonitorTypeStateID="DeviceDown" ID="Error" />
        </OperationalStates>
        <Configuration>
          <Interval>120</Interval>
          <IsWriteAction>false</IsWriteAction>
          <IP>$Target/Property[Type="NetworkDeviceLibrary!Microsoft.SystemCenter.NetworkDevice"]/IPAddress$</IP>
          <CommunityString>$Target/Property[Type="NetworkDeviceLibrary!Microsoft.SystemCenter.NetworkDevice"]/CommunityString$</CommunityString>
          <Version>$Target/Property[Type="NetworkDeviceLibrary!Microsoft.SystemCenter.NetworkDevice"]/Version$</Version>
          <SnmpVarBinds>
            <SnmpVarBind>
              <OID>.1.3.6.1.2.1.1.5.0</OID>
              <Syntax>1</Syntax>
              <Value VariantType="8" />
            </SnmpVarBind>
          </SnmpVarBinds>
        </Configuration>
      </UnitMonitor>
    </Monitors>
    <Overrides>
      <!-- disable original monitor -->
      <MonitorPropertyOverride ID="MonitorPropertyOverrideEnabled" Context="NetworkDeviceLibrary!Microsoft.SystemCenter.NetworkDevice" Enforced="false" Monitor="NetworkDeviceLibrary!Microsoft.SystemCenter.NetworkDevice.CheckDeviceStatus" Property="Enabled">
        <Value>false</Value>
      </MonitorPropertyOverride>
    </Overrides>
  </Monitoring>
  <Presentation>
    <StringResources>
      <StringResource ID="Microsoft.SystemCenter.NetworkDevice.CheckDeviceStatus.Custom.AlertMessageResourceID" />
    </StringResources>
  </Presentation>
  <LanguagePacks>
    <LanguagePack ID="ENU" IsDefault="true">
      <DisplayStrings>
        <DisplayString ElementID="Microsoft.SystemCenter.NetworkDevice.Custom">
          <Name>Network Device Customs</Name>
          <Description>Microsoft System Center Network Device Customs: This Management Pack contains the definitions for custom monitoring that apply to Network Devices.</Description>
        </DisplayString>
        <DisplayString ElementID="Microsoft.SystemCenter.NetworkDevice.CheckDeviceStatus.Custom">
          <Name>Device Status Check (Custom)</Name>
          <Description>This monitor checks the state of a device.</Description>
        </DisplayString>
        <DisplayString ElementID="Microsoft.SystemCenter.NetworkDevice.CheckDeviceStatus.Custom.AlertMessageResourceID">
          <Name>Network device is down</Name>
          <Description>Network device with name {0} and IP Address {1} is down.</Description>
        </DisplayString>
      </DisplayStrings>
      <KnowledgeArticles>
        <KnowledgeArticle ElementID="Microsoft.SystemCenter.NetworkDevice.CheckDeviceStatus.Custom">
          <MamlContent>
            <maml:section xmlns:maml="http://schemas.microsoft.com/maml/2004/10">
              <maml:title>Summary</maml:title>
              <maml:para>The device currently being monitored is not responding to an SNMP GET for the System Name of the device.</maml:para>
            </maml:section>
            <maml:section xmlns:maml="http://schemas.microsoft.com/maml/2004/10">
              <maml:title>Causes</maml:title>
              <maml:para>This monitor is configured to get the System Name for this device is null. Below are the details of the Object Identifier (OID) that is queried via an SNMP GET</maml:para>
              <maml:para />
              <maml:table>
                <maml:row>
                  <maml:headerEntry>
                    <maml:para>Symbolic Name</maml:para>
                  </maml:headerEntry>
                  <maml:headerEntry>
                    <maml:para>OID</maml:para>
                  </maml:headerEntry>
                  <maml:headerEntry>
                    <maml:para>Description</maml:para>
                  </maml:headerEntry>
                </maml:row>
                <maml:row>
                  <maml:entry>
                    <maml:para>iso.org.dod.internet.mgmt.mib-2.system.sysName</maml:para>
                  </maml:entry>
                  <maml:entry>
                    <maml:para>.1.3.6.1.2.1.1.5.0</maml:para>
                  </maml:entry>
                  <maml:entry>
                    <maml:para>An administratively-assigned name for this managed node.  By convention, this is the node's fully-qualified domain name.</maml:para>
                    <maml:para>
                      This is defined in<maml:navigationLink>
                        <maml:linkText>RFC 1213</maml:linkText>
                        <maml:uri href="http://www.ietf.org/rfc/rfc1213.txt?number=1213" />
                      </maml:navigationLink>
                    </maml:para>
                  </maml:entry>
                </maml:row>
              </maml:table>
              <maml:para />
              <maml:para>This can happen when:</maml:para>
              <maml:list>
                <maml:listItem>
                  <maml:para>The device is offline</maml:para>
                </maml:listItem>
                <maml:listItem>
                  <maml:para>The device is not responding to SNMP GET</maml:para>
                </maml:listItem>
                <maml:listItem>
                  <maml:para>The community string has changed and this Monitor has not been updated</maml:para>
                </maml:listItem>
              </maml:list>
            </maml:section>
            <maml:section xmlns:maml="http://schemas.microsoft.com/maml/2004/10">
              <maml:title>Resolutions</maml:title>
              <maml:para>Below are some basic troubleshooting steps to determine if the device is online</maml:para>
              <maml:para />
              <maml:procedure>
                <maml:step>
                  <maml:para>Ping the target device. If the device is not pingable, the device may be offline or there may be a firewall blocking ICMP communication.</maml:para>
                </maml:step>
                <maml:step>
                  <maml:para>If pinging the device was successful, try to ensure you have the correct community string for the device. You will have to contact the Network Administrator for the community string for this device.</maml:para>
                </maml:step>
              </maml:procedure>
            </maml:section>
          </MamlContent>
        </KnowledgeArticle>
      </KnowledgeArticles>
    </LanguagePack>
  </LanguagePacks>
</ManagementPack>