Checking State of spanning tree proto. on Network Switches


I finally figured it out. There wasn’t a check command or plugin available at nagios exchange so I had to modify an existing one.

Interested in trying this…this will save you a ton of time.

./ Returns number of times a certain value is not matched in an SNMP table column.

Usage: ./ <hostname> <warn# of conflicts> <crit# of conflicts> "<service id>" <oid> <normal value> <..> <..>

from checkcommands.cfg

       command_name    check_stp
       command_line    $USER1$/ $HOSTADDRESS$ 3 3 "STP" . 3 4 5 6

from services.cfg

define service{
        use                             generic-service
        host_name                   host,host,host
        service_description       check_stp
        is_volatile                     0
        check_period                    24x7
        max_check_attempts              3
        normal_check_interval           5
        retry_check_interval            1
#        contact_groups
        notification_interval           240
        notification_period             24x7
        notification_options            c,w,r
        check_command                   check_stp
        } $HOSTADDRESS$ = check command on host
3 if this value is exceeded, it’s warning, send notification
3 if this value is exceeded, it’s critical, send notification (they are the same because it is either ok, or not).
“STP” is the friendly name, required by the check command
. is the OID of the table. See rcStgPortState below
3 is a normal value. 3 is for listening.
4 is a normal value. 4 is for learning.
5 is a normal value. 5 is for forwarding
6 is a normal value. 6 is for broken
If the check command finds non normal values, it adds each event. If the number of events exceeds the warning/critical value, it will
send a notification. I left disabled(1) and blocking(2) out as a normal value because I want to know when STP is disabled or a loop has been detected.

from RAPID-CITY.mib but the default snmp.mib file SNMP-MPD-MIB.txt will work just fine.

rcStgPortState OBJECT-TYPE
        SYNTAX          INTEGER {
        ACCESS          read-only
        STATUS          mandatory
        DESCRIPTION     "The port's current state as defined by
                        application of the Spanning Tree Protocol.  This
                        state controls what action a port takes on
                        reception of a frame.  If the bridge has detected
                        a port that is malfunctioning it will place that
                        port into the broken(6) state.  For ports which
                        are disabled (see rcStgPortEnable), this object
                        will have a value of disabled(1)."
        REFERENCE       "IEEE 802.1D-1990: Section"
        ::= { rcStgPortEntry 4 }