Interface(s) in error-disable state-cisco-nxos

Interface(s) in error-disable state-cisco-nxos

Vendor: cisco

OS: nxos

Description:
Interfaces can be put in err-disable state if certain errors are detected by the devices. Indeni will alert if this happens.

Remediation Steps:
Review the causes why some interfaces were put in error-disable state.
|1. Use the “show interface” and “show interface status err-disabled” NX-OS commands to identify the reason for the err-disable interface state.
|2. View information about the internal state transitions of the port by using the “show system internal ethpm event-history interface X/X” NX-OS command.
|3. Review the logs for relevant findings by running the “show logging” NX-OS command.
|4. After fixing the issue, run the “shut/no shut” command on the port to re-enable it.
|5. It is possible to enable automatic periodic err-disable recovery by using the “errdisable recovery cause” NX-OS configuration command. For more information please review the following CISCO NX-OS guide:
|Enabling the Error-Disabled Detection.

How does this work?
This script logs into the Cisco Nexus switch using SSH and retrieves the output of the “show interface” command. The output includes all the interface related information and statistics.

Why is this important?
Capture the interface error-disable status. Interfaces can get automatically disabled (err-disable) if different error conditions are detected. For example link flaps, a connection loop or spanning tree BPDUs detected with BPDU guard.

Without Indeni how would you find this?
Error disabled interfaces would generate a syslog event. The user would have to login to the device and use the “show interface” command to identify the reason for the error disabled port.

nexus-show-interface

name: nexus-show-interface
description: Nexus Interface Information
type: monitoring
monitoring_interval: 1 minute
requires:
    vendor: cisco
    os.name: nxos
comments:
    network-interface-state:
        why: |
            Capture the interface state. If an interface transitions from up to down an alert would be raised.
        how: |
            This script logs into the Cisco Nexus switch using SSH and retrieves the output of the "show interface" command. The output includes all the interface related information and statistics.
        without-indeni: |
            It is possible to poll this data through SNMP. Interface state transitions will generate a syslog event.
        can-with-snmp: true
        can-with-syslog: true
    network-interface-admin-state:
        why: |
            Capture the interface administrative state.
        how: |
            This script logs into the Cisco Nexus switch using SSH and retrieves the output of the "show interface" command. The output includes all the interface related information and statistics.
        without-indeni: |
            It is possible to poll this data through SNMP. Interface state transitions will generate a syslog event.
        can-with-snmp: true
        can-with-syslog: true
    network-interface-description:
        why: |
            Capture the interface description.
        how: |
            This script logs into the Cisco Nexus switch using SSH and retrieves the output of the "show interface" command. The output includes all the interface related information and statistics.
        without-indeni: |
            It is possible to poll this data through SNMP.
        can-with-snmp: true
        can-with-syslog: false
    network-interface-speed:
        why: |
            Capture the interface speed in human readable format such as 1G, 10G, etc.
        how: |
            This script logs into the Cisco Nexus switch using SSH and retrieves the output of the "show interface" command. The output includes all the interface related information and statistics.
        without-indeni: |
            It is possible to poll this data through SNMP.
        can-with-snmp: true
        can-with-syslog: false
    network-interface-duplex:
        why: |
            Capture the interface duplex in human readable format such as full or half. In modern network environments it is very uncommon to see half-duplex interfaces, and that should be an indication for a potential exception.
        how: |
            This script logs into the Cisco Nexus switch using SSH and retrieves the output of the "show interface" command. The output includes all the interface related information and statistics.
        without-indeni: |
            It is possible to poll this data through SNMP. If a duplex mismatch is detected on a port syslog messages will be generated.
        can-with-snmp: true
        can-with-syslog: true
    network-interface-rx-frame:
        why: |
            Capture the interface Receive Errors (CRC) counter. If this counter increases an alarm will be raised.
        how: |
            This script logs into the Cisco Nexus switch using SSH and retrieves the output of the "show interface" command. The output includes all the interface related information and statistics.
        without-indeni: |
            It is possible to poll this data through SNMP.
        can-with-snmp: true
        can-with-syslog: false
    network-interface-tx-overruns:
        why: |
            Capture the interface Transmit Overrun errors counter.
        how: |
            This script logs into the Cisco Nexus switch using SSH and retrieves the output of the "show interface" command. The output includes all the interface related information and statistics.
        without-indeni: |
            It is possible to poll this data through SNMP.
        can-with-snmp: true
        can-with-syslog: false
    network-interface-mac:
        why: |
            Capture the interface MAC address.
        how: |
            This script logs into the Cisco Nexus switch using SSH and retrieves the output of the "show interface" command. The output includes all the interface related information and statistics.
        without-indeni: |
            It is possible to poll this data through SNMP.
        can-with-snmp: true
        can-with-syslog: false
    network-interface-type:
        why: |
            Capture the interface type, for example "1000/10000 Ethernet".
        how: |
            This script logs into the Cisco Nexus switch using SSH and retrieves the output of the "show interface" command. The output includes all the interface related information and statistics.
        without-indeni: |
            It is possible to poll this data through SNMP.
        can-with-snmp: true
        can-with-syslog: false
    network-interface-rx-bytes:
        why: |
            Capture the interface Received Bytes counter. Knowing the amount of bytes and packets flowing through an interface can help estimate an interface's performance and utilization.
        how: |
            This script logs into the Cisco Nexus switch using SSH and retrieves the output of the "show interface" command. The output includes all the interface related information and statistics.
        without-indeni: |
            It is possible to poll this data through SNMP.
        can-with-snmp: true
        can-with-syslog: false
    network-interface-rx-dropped:
        why: |
            Capture the interface Received Errors counter. Packet loss may impact traffic performance.
        how: |
            This script logs into the Cisco Nexus switch using SSH and retrieves the output of the "show interface" command. The output includes all the interface related information and statistics.
        without-indeni: |
            It is possible to poll this data through SNMP.
        can-with-snmp: true
        can-with-syslog: false
    network-interface-rx-packets:
        why: |
            Capture the interface Received Packets counter. Knowing the amount of bytes and packets flowing through an interface can help estimate an interface's performance and utilization.
        how: |
            This script logs into the Cisco Nexus switch using SSH and retrieves the output of the "show interface" command. The output includes all the interface related information and statistics.
        without-indeni: |
            It is possible to poll this data through SNMP.
        can-with-snmp: true
        can-with-syslog: false
    network-interface-ipv4-address:
        why: |
            Capture the interface IPv4 address. Only relevant for layer 3 interfaces, including Vlan interfaces (SVI).
        how: |
            This script logs into the Cisco Nexus switch using SSH and retrieves the output of the "show interface" command. The output includes all the interface related information and statistics.
        without-indeni: |
            It is possible to poll this data through SNMP.
        can-with-snmp: true
        can-with-syslog: false
    network-interface-ipv4-subnet:
        why: |
            Capture the interface IPv4 subnet mask. Only relevant for layer 3 interfaces, including Vlan interfaces (SVI).
        how: |
            This script logs into the Cisco Nexus switch using SSH and retrieves the output of the "show interface" command. The output includes all the interface related information and statistics.
        without-indeni: |
            It is possible to poll this data through SNMP.
        can-with-snmp: true
        can-with-syslog: false
    network-interface-tx-carrier:
        why: |
            Capture the interface carrier state change counter. It would increase every time the interface changes state from up to down.
        how: |
            This script logs into the Cisco Nexus switch using SSH and retrieves the output of the "show interface" command. The output includes all the interface related information and statistics.
        without-indeni: |
            It is possible to poll this data through SNMP.
        can-with-snmp: true
        can-with-syslog: false
    network-interface-mtu:
        why: |
            Capture the interface MTU (Maximum Transmit Unit).
        how: |
            This script logs into the Cisco Nexus switch using SSH and retrieves the output of the "show interface" command. The output includes all the interface related information and statistics.
        without-indeni: |
            It is possible to poll this data through SNMP.
        can-with-snmp: true
        can-with-syslog: false
    network-interface-tx-bytes:
        why: |
            Capture the interface Transmitted Bytes counter. Knowing the amount of bytes and packets flowing through an interface can help estimate an interface's performance and utilization.
        how: |
            This script logs into the Cisco Nexus switch using SSH and retrieves the output of the "show interface" command. The output includes all the interface related information and statistics.
        without-indeni: |
            It is possible to poll this data through SNMP.
        can-with-snmp: true
        can-with-syslog: false
    network-interface-tx-errors:
        why: |
            Capture the interface Transmit Errors counter. Transmission errors indicate an issue with duplex/speed matching.
        how: |
            This script logs into the Cisco Nexus switch using SSH and retrieves the output of the "show interface" command. The output includes all the interface related information and statistics.
        without-indeni: |
            It is possible to poll this data through SNMP.
        can-with-snmp: true
        can-with-syslog: false
    network-interface-tx-packets:
        why: |
            Capture the interface Transmitted Packets counter. Knowing the amount of bytes and packets flowing through an interface can help estimate an interface's performance and utilization.
        how: |
            This script logs into the Cisco Nexus switch using SSH and retrieves the output of the "show interface" command. The output includes all the interface related information and statistics.
        without-indeni: |
            It is possible to poll this data through SNMP.
        can-with-snmp: true
        can-with-syslog: false
    network-interface-rx-overruns:
        why: |
            Capture the interface Receive Overrun errors counter.
        how: |
            This script logs into the Cisco Nexus switch using SSH and retrieves the output of the "show interface" command. The output includes all the interface related information and statistics.
        without-indeni: |
            It is possible to poll this data through SNMP.
        can-with-snmp: true
        can-with-syslog: false
    network-interface-invalid-sfp:
        why: |
            Capture interface SFP verification errors.
            Interface SFP verification can happen if the interface speed is configured incorrectly or the SFP module is an incompatible non-cisco hardware.
        how: |
            This script logs into the Cisco Nexus switch using SSH and retrieves the output of the "show interface" command. The output includes all the interface related information and statistics.
        without-indeni: |
            Invalid detected SFPs would generate a Syslog message. The user would have to login to the device and use the "show interface" command to identify the reason for the invalid SFP.
        can-with-snmp: true
        can-with-syslog: true
    network-interface-err-disable:
        why: |
            Capture the interface error-disable status.
            Interfaces can get automatically disabled (err-disable) if different error conditions are detected. For example link flaps, a connection loop or spanning tree BPDUs detected with BPDU guard.
        how: |
            This script logs into the Cisco Nexus switch using SSH and retrieves the output of the "show interface" command. The output includes all the interface related information and statistics.
        without-indeni: |
            Error disabled interfaces would generate a syslog event. The user would have to login to the device and use the "show interface" command to identify the reason for the error disabled port.
        can-with-snmp: true
        can-with-syslog: true
    network-interface-err-disable-description:
        why: |
            Capture additional data on the reason the interface is in error-disable status.
            Interfaces can get automatically disabled (err-disable) if different error conditions are detected. For example link flaps, a connection loop or spanning tree BPDUs detected with BPDU guard.
        how: |
            This script logs into the Cisco Nexus switch using SSH and retrieves the output of the "show interface" command. The output includes all the interface related information and statistics.
        without-indeni: |
            Error disabled interfaces would generate a syslog event. The user would have to login to the device and use the "show interface" command to identify the reason for the error disabled port.
        can-with-snmp: true
        can-with-syslog: true
steps:
-   run:
        type: SSH
        command: show interface | xml | no-more
    parse:
        type: XML
        file: show_interface.parser.1.xml.yaml

CrossVendorInterfaceErrorDisableState

// Deprecation warning : Scala template-based rules are deprecated. Please use YAML format rules instead.

package com.indeni.server.rules.library.templatebased.crossvendor

import com.indeni.server.rules.RuleContext
import com.indeni.ruleengine.expressions.core._
import com.indeni.server.rules.library.templates.StateDownTemplateRule
import com.indeni.server.sensor.models.managementprocess.alerts.dto.AlertSeverity
import com.indeni.server.rules.RemediationStepCondition


case class CrossVendorInterfaceErrorDisableState() extends StateDownTemplateRule(
  ruleName = "CrossVendorInterfaceErrorDisableState",
  ruleFriendlyName = "All Devices: Interface(s) in error-disable state",
  ruleDescription = "Interfaces can be put in err-disable state if certain errors are detected by the devices. Indeni will alert if this happens.",
  metricName = "network-interface-err-disable",
  applicableMetricTag = "name",
  alertIfDown = false,
  alertItemsHeader = "Affected Interfaces",
  alertDescription = "Interfaces can be put in err-disable state if certain errors are detected by the devices.\nThis includes:\n* Flapping links\n* Spanning Tree BPDUs detected with BPDU Guard enabled\n* Detected a physical loop\n* Uni-directional link detected by UDLD",
  baseRemediationText = "Review the causes why some interfaces were put in error-disable state."
)(RemediationStepCondition.VENDOR_CISCO ->
  """|1. Use the "show interface" and "show interface status err-disabled" NX-OS commands to identify the reason for the err-disable interface state.
     |2. View information about the internal state transitions of the port by using the "show system internal ethpm event-history interface X/X" NX-OS command.
     |3. Review the logs for relevant findings by running the "show logging" NX-OS command.
     |4. After fixing the issue, run the "shut/no shut" command on the port to re-enable it.
     |5. It is possible to enable automatic periodic err-disable recovery by using the "errdisable recovery cause" NX-OS configuration command. For more information please review  the following CISCO  NX-OS guide:
     |<a target="_blank" href="https://www.cisco.com/c/en/us/td/docs/switches/datacenter/nexus5000/sw/layer2/421_n1_1/b_Cisco_n5k_layer2_config_gd_rel_421_n1_1/Cisco_n5k_layer2_config_gd_rel_421_n1_1_chapter3.html#task_3B5CB60B4E8746FA900E16679C66B437">Enabling the Error-Disabled Detection</a>.""".stripMargin,
  RemediationStepCondition.VENDOR_JUNIPER ->
    """|1. On the device command line interface execute the "show ethernet-switching interfaces" command to review the status of interfaces.
       |2. Check if the MAC limit or MAC move limit is not exceeded.
       |3. Check if the storm control is in effect.
       |4. Review whether multiple devices are connected to the port.
       |5. Check if the device is not moving too frequently or rate-limiting is not exceeded.
       |6. Review the following article on Juniper tech support site: <a target="_blank" href="https://www.juniper.net/documentation/en_US/junos/topics/reference/command-summary/show-ethernet-switching-interfaces-qfx-series.html">Ethernet Switching Feature Guide: show ethernet-switching interfaces</a>.""".stripMargin
)