-- *****************************************************************
-- CISCO-5800-HEALTH-MON-MIB.my:  CISCO Health Monitor MIB file
--
-- August 1997 Mark Szczesniak / Ashadevaki Hegde
--
-- Copyright (c) 1997-1998 by cisco Systems, Inc.
-- All rights reserved.
-- 
-- *****************************************************************
-- $Endlog$
--
CISCO-5800-HEALTH-MON-MIB DEFINITIONS ::= BEGIN

IMPORTS
	MODULE-IDENTITY,
	OBJECT-TYPE,
	NOTIFICATION-TYPE,
	Counter32,
	Gauge32,
	Integer32, 
	IpAddress
		FROM SNMPv2-SMI
	DisplayString,
	TruthValue
		FROM SNMPv2-TC
	MODULE-COMPLIANCE,
	OBJECT-GROUP
		FROM SNMPv2-CONF
	ciscoExperiment
		FROM CISCO-SMI;


cisco5800HealthMonMIB MODULE-IDENTITY
	LAST-UPDATED	"9708260000Z"
	ORGANIZATION	"Cisco Systems, Inc."
	CONTACT-INFO
		"       Cisco Systems
			Customer Service

		Postal: 170 W Tasman Drive
			San Jose, CA  95134
			USA

		   Tel: +1 800 553-NETS

		E-mail: cs-snmp@cisco.com"
	DESCRIPTION
		"This MIB provides a means to monitor the status of a
	system's health."

	::= { ciscoExperiment 28 }


cisco5800HealthMonObjects OBJECT IDENTIFIER ::= { cisco5800HealthMonMIB 1 }

--
-- This mib gives you the status of the health monitoring subsystem
-- running on the system controller. Health monitoring allows the user
-- to configure three types of utilization on the system
-- controller. Namely modem, trunk, and io-mem. When io-mem monitoring
-- type is configured on the system controller, health moniotoring sets
-- up the expressions, RMON alarms, RMON events on the known
-- shelves. RMON alarm is asked to monitor the result from the set
-- expression and if it's value exceeds the configured threshold value
-- an event trap is sent to the system-controller. This trap is converted
-- into the healthmon MIB format and sent to the management
-- station. For the other two monitoring types, health monitor sets up
-- the utilization calculation on the system controller based on the info
-- available on this mib.
--
-- Trunk Utilization = (ciscoHealthMonNumActiveDS0 * 100)/
--			(ciscoHealthMonNumTotalDS0)
-- Modem Utilization = (ciscoHealthMonNumModemsInUse * 100)/
--			(ciscoHealthMonNumTotalModems)
--
--
-- 1.  ciscoHealthMonStatusTable - This has the status of the configured
-- monitoring types.
--
-- 2.  ciscoHealthMonCountTable - This table keeps track of following
-- info from each router shelf:
--
-- o # T1/E1 lines up 
-- o # T1/E1 lines with operational status down and admin status up 
-- o # of Active DS0's (cpmActiveDS0 from CISCO-POP-MGMT-MIB.my)
-- o # of Total DS0's  (#of t1 - 1* 24) + 23 + (#of e1 * 30)
-- o # of Installed modems 
--	(cmSystemInstalledModem from CISCO-MODEM-MGMT-MIB.my)
-- o # of Inuse Modems(cmSystemModemsInUse from CISCO-MODEM-MGMT-MIB.my
-- o # of Bad modems (cmSystemModemsUnavailable from CISCO-MODEM-MGMT-MIB.my)
-- o # of IOmem free (IO-mem ciscoMemoryPoolUsed from CISCO-MEMORY-POOL-MIB.my)
-- o # of IOmem used (IO-mem ciscoMemoryPoolFree from CISCO-MEMORY-POOL-MIB.my)
-- o % CPU avgBusy5  (avgBusy5 from cisco-10-mib.my)
-- o % Utilization of ifOutOctets of egress ports
-- A port is considered as an egress port if it's ifSpeed > 1544000
-- % Utilization of ifOutOctets = (diff_total_ifOutoctets*100)/
--				   (time * total_speed)
-- o % Utilization of ifInOctets of egress ports
--
-- % Utilization of ifInOctets = (diff_total_ifInOctets*100)/
--				   (time * total_speed)
--
-- The above values are collected from a single shelf. They are added
-- together to get the total number in the nitro complex.
-- Example:
-- #T1 & E1 lines UP = (T1 & E1 Lines up on shelf#1) + 
--		       (T1 & E1 Lines up on shelf#2) + 
--		    :
--		    :
--		    (T1 & E1 Lines up on shelf#n) 
-- 
-- NOTE: 
-- Monitored shelf - A shelf is discovered by the system controller using 
-- the Shelf Discovery Protocol

ciscoHealthMonNumShelves OBJECT-TYPE
	SYNTAX     Integer32 
	MAX-ACCESS read-only
	STATUS     current
	DESCRIPTION
		"The total number of shelves monitored by the health monitor."
	::= { cisco5800HealthMonObjects 3 }

ciscoHealthMonNumT1E1LinesUp OBJECT-TYPE
	SYNTAX     Gauge32
	MAX-ACCESS read-only
	STATUS     current
	DESCRIPTION
		"This is the total number of active T1/E1 lines across
	all the monitored shelves."
	::= { cisco5800HealthMonObjects 4 }

ciscoHealthMonNumT1E1LinesDown OBJECT-TYPE
	SYNTAX     Gauge32
	MAX-ACCESS read-only
	STATUS     current
	DESCRIPTION
		"This is the total number of inactive T1/E1 lines
	across all the monitored shelves."
	::= { cisco5800HealthMonObjects 5 }

ciscoHealthMonNumActiveDS0 OBJECT-TYPE
	SYNTAX     Gauge32
	MAX-ACCESS read-only
	STATUS     current
	DESCRIPTION
		"The total number of DS0's in use across all the monitored 
	shelves."
	::= { cisco5800HealthMonObjects 6 }

ciscoHealthMonNumTotalDS0 OBJECT-TYPE
	SYNTAX     Gauge32
	MAX-ACCESS read-only
	STATUS     current
	DESCRIPTION
		"The total number of DS0's from all the monitored shelves."
	::= { cisco5800HealthMonObjects 7 }

ciscoHealthMonNumTotalModems OBJECT-TYPE
	SYNTAX     Gauge32
	MAX-ACCESS read-only
	STATUS     current
	DESCRIPTION
		"This is the total number of ciscoHealthMonTotalModems
	from all the monitored shelves."
	::= { cisco5800HealthMonObjects 8 }

ciscoHealthMonNumModemsInUse OBJECT-TYPE
	SYNTAX     Gauge32
	MAX-ACCESS read-only
	STATUS     current
	DESCRIPTION
		"This is the total number of ciscoHealthMonModemsInUse
	from all the monitored shelves ."
	::= { cisco5800HealthMonObjects 9 }

ciscoHealthMonNumUnavailableModems OBJECT-TYPE
	SYNTAX     Gauge32 
	MAX-ACCESS read-only
	STATUS     current
	DESCRIPTION
		"This is the total number of ciscoHealthMonUnavailableModems
	from all the monitored shelves."
	::= { cisco5800HealthMonObjects 10 }

ciscoHealthMonStatusTable OBJECT-TYPE
	SYNTAX     SEQUENCE OF CiscoHealthMonStatusEntry
	MAX-ACCESS not-accessible
	STATUS     current
	DESCRIPTION
		"The table of status maintained by the health monitor."
	::= { cisco5800HealthMonObjects 1 }

ciscoHealthMonStatusEntry OBJECT-TYPE
	SYNTAX     CiscoHealthMonStatusEntry
	MAX-ACCESS not-accessible
	STATUS     current
	DESCRIPTION
		"An entry in the status table, containing the
	information about the status of the health monitoring setup
	commands. Depending on the configured monitoring type these commands
	are setup on the shelf or on the system controller. Monitoring iomem
	is done on the shelf where as monitoring modem and trunk is done on
	system controller. ciscoHealthMonShelfId, ciscoHealthMonAddress 
	doesn't exist for the modem and trunk monitoring types since 
	they are done on the system controller. "
	INDEX      { ciscoHealthMonStatusIndex, ciscoHealthMonStatusType }
	::= { ciscoHealthMonStatusTable 1 }

CiscoHealthMonStatusEntry ::=
	SEQUENCE {
		ciscoHealthMonStatusIndex	Integer32,
		ciscoHealthMonStatusType	Integer32 (1..3),
		ciscoHealthMonShelfId 		Integer32,
		ciscoHealthMonAddress 		IpAddress,
		ciscoHealthMonDescr		DisplayString,
		ciscoHealthMonValue	 	Gauge32,
		ciscoHealthMonThreshold		Integer32 (1..100),
		ciscoHealthMonThresholdExceedCount Integer32 
	}


ciscoHealthMonStatusIndex OBJECT-TYPE
	SYNTAX     Integer32(0..2147483647)
	MAX-ACCESS not-accessible
	STATUS     current
	DESCRIPTION
		"Unique index for indexing the ciscoHealthMonStatusTable.
	This index is for SNMP purposes only, and has no intrinsic meaning."
	::= { ciscoHealthMonStatusEntry 1 }

ciscoHealthMonStatusType OBJECT-TYPE
	SYNTAX	    Integer32 (1..3)
	MAX-ACCESS  read-only
	STATUS	    current
	DESCRIPTION
		"Monitoring type
		 modemUtil(1), trunkUtil(2), iomemUtil(3)"
	::= { ciscoHealthMonStatusEntry 2 }

ciscoHealthMonShelfId OBJECT-TYPE
	SYNTAX	    Integer32 
	MAX-ACCESS  read-only
	STATUS	    current
	DESCRIPTION
		"This is the shelf-id of the monitored shelf."
	::= { ciscoHealthMonStatusEntry 3 }

ciscoHealthMonAddress OBJECT-TYPE
	SYNTAX	    IpAddress
	MAX-ACCESS  read-only
	STATUS	    current
	DESCRIPTION
		"This is the IP address of the monitored shelf."
	::= { ciscoHealthMonStatusEntry 4 }

ciscoHealthMonDescr OBJECT-TYPE
	SYNTAX     DisplayString(SIZE (0..32))
	MAX-ACCESS read-only
	STATUS     current
	DESCRIPTION
		"Textual description of the utilization type being
	monitored on a shelf. This description is a short textual label, 
	suitable as a human-sensible identification for the rest of the 
	information in the entry."
	::= { ciscoHealthMonStatusEntry 5 }

ciscoHealthMonValue OBJECT-TYPE
	SYNTAX     Gauge32
	MAX-ACCESS read-only
	STATUS     current
	DESCRIPTION
		"The current value for the monitoring type on a
	monitored shelf."
	::= { ciscoHealthMonStatusEntry 6 }

ciscoHealthMonThreshold OBJECT-TYPE
	SYNTAX     Integer32 (1..100)
	MAX-ACCESS read-only
	STATUS     current
	DESCRIPTION
		"This is the monitoring threshold value configured
	through the command line. 
	
	If the configured monitoring type is io-mem, rmon alarm on the
	shelf will use this value as the threshold for generating the
	event. Shelf will be asked to send this generated event trap to the
	system controller. Once the system controller receives this trap, 
	trap will converted to the health monitor mib format and sent to the
	management station.

	If the configured monitoring types are trunk and/or modem,
	ciscoHealthMonValue is compared with this value and if
	ciscoHealthMonValue exceeds this value, a notification is sent to the
	configured management station. Also, a notification will be sent to
	the management station if the current monitoring value is less than
	the configured threshold and the previous monitored value is greater
	than the configured threshold value."
	::= { ciscoHealthMonStatusEntry 7 }

ciscoHealthMonThresholdExceedCount OBJECT-TYPE
	SYNTAX     Integer32 
	MAX-ACCESS read-only
	STATUS     current
	DESCRIPTION
		"Number of times monitoring value exceeded the
	configured threshold value."
	::= { ciscoHealthMonStatusEntry 8 }



--
-- HealthMonCount Table
--

ciscoHealthMonCountTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF CiscoHealthMonCountEntry
	MAX-ACCESS not-accessible
	STATUS     current
	DESCRIPTION
		"The table of mib entries maintained by the health monitor."
	::= { cisco5800HealthMonObjects 2 }

ciscoHealthMonCountEntry OBJECT-TYPE
	SYNTAX     CiscoHealthMonCountEntry
	MAX-ACCESS not-accessible
	STATUS     current
	DESCRIPTION
		"An entry in the count table represents the polled data
	of ceratin mib variables for a router shelf. System controller will do
	the polling of the mib variables only if system controller can
	talk to that particular router shelf."
	INDEX      { ciscoHealthMonCountIndex }
	::= { ciscoHealthMonCountTable 1 }

CiscoHealthMonCountEntry ::=
	SEQUENCE {
		ciscoHealthMonCountIndex		Integer32,
		ciscoHealthMonT1E1LinesUp		Gauge32,
		ciscoHealthMonT1E1LinesDown		Gauge32,
		ciscoHealthMonActiveDS0			Gauge32,
		ciscoHealthMonTotalDS0			Gauge32,
		ciscoHealthMonTotalModems		Gauge32,
		ciscoHealthMonModemsInUse		Gauge32,
		ciscoHealthMonUnavailableModems		Gauge32,
		ciscoHealthMonIOMemUsed			Gauge32,
		ciscoHealthMonIOMemFree			Gauge32,
		ciscoHealthMonCPUavgBusy5 		Integer32 (1..100),
		ciscoHealthMonUtilEgressInOctet		Counter32,
		ciscoHealthMonUtilEgressOutOctet	Counter32,
		ciscoHealthMonShelfLastUpdate		DisplayString
	}

ciscoHealthMonCountIndex OBJECT-TYPE
	SYNTAX     Integer32 (0..9999)
	MAX-ACCESS not-accessible
	STATUS     current
	DESCRIPTION
		"Unique index for indexing the
	ciscoHealthMonCountTable. This unique index represents the shelf-id of
	the monitored shelf."
	::= { ciscoHealthMonCountEntry 1 }

ciscoHealthMonT1E1LinesUp OBJECT-TYPE
	SYNTAX     Gauge32
	MAX-ACCESS read-only
	STATUS     current
	DESCRIPTION
		"The number of active T1 and E1 lines on a shelf. A
	line is considered as an active line if it is operationally up."
	::= { ciscoHealthMonCountEntry 2 }

ciscoHealthMonT1E1LinesDown OBJECT-TYPE
	SYNTAX     Gauge32
	MAX-ACCESS read-only
	STATUS     current
	DESCRIPTION
		"The number of inactive T1 and E1 lines on a
	shelf. This is the special case where a line is counted as down if it
	is operationally down and administratively up."
	::= { ciscoHealthMonCountEntry 3 }

ciscoHealthMonActiveDS0 OBJECT-TYPE
	SYNTAX     Gauge32 
	MAX-ACCESS read-only
	STATUS     current
	DESCRIPTION
		"The number of DS0's that are currently in use."
	::= { ciscoHealthMonCountEntry 4 }

ciscoHealthMonTotalDS0 OBJECT-TYPE
	SYNTAX     Gauge32
	MAX-ACCESS read-only
	STATUS     current
	DESCRIPTION
		"The total number of DS0's on a shelf. This is based
	on the number of T1 and E1 lines present on the router shelf.

	Total DS0 = (# of T1 lines - 1 * 24) + 23 + (# of E1 lines*30)."
	::= { ciscoHealthMonCountEntry 5 }

ciscoHealthMonTotalModems OBJECT-TYPE
	SYNTAX     Gauge32
	MAX-ACCESS read-only
	STATUS     current
	DESCRIPTION
		"The total number of modems installed on a shelf. This
	is the polled value for cmSystemInstalledModem from the router shelf."
	::= { ciscoHealthMonCountEntry 6 }

ciscoHealthMonModemsInUse OBJECT-TYPE
	SYNTAX     Gauge32
	MAX-ACCESS read-only
	STATUS     current
	DESCRIPTION
		"The number of modems on a shelf that are in the
	following states: connected, offHook, loopback, or
	downloadFirmware. This the polled value for cmSystemModemsInUse from
	the router shelf."
	::= { ciscoHealthMonCountEntry 7 }

ciscoHealthMonUnavailableModems OBJECT-TYPE
	SYNTAX     Gauge32
	MAX-ACCESS read-only
	STATUS     current
	DESCRIPTION
              "The number of modems on a shelf that cannot accept the
	calls. They are in the following states: unknown, onHook, busiedOut,
	disabled, bad, or downloadFirmwareFailed. This is the polled value for
	cmSystemModemsUnavailable from the router shelf."
	::= { ciscoHealthMonCountEntry 8 }
ciscoHealthMonIOMemUsed OBJECT-TYPE
	SYNTAX	    Gauge32
	UNITS	    "bytes"
	MAX-ACCESS  read-only
	STATUS	    current
	DESCRIPTION
		"The number of bytes of IO memory that are currently
	in use by the applications on the shelf. This is the polled value for
	ciscoMemoryPoolUsed of io-mem type on the router shelf."
	::= { ciscoHealthMonCountEntry 9 }

ciscoHealthMonIOMemFree OBJECT-TYPE
	SYNTAX	    Gauge32
	UNITS	    "bytes"
	MAX-ACCESS  read-only
	STATUS	    current
	DESCRIPTION
		"The number of bytes of IO memory that are currently
	available to use on the shelf.This is the polled value for
	ciscoMemoryPoolFree of io-mem type on the router shelf."
	::= { ciscoHealthMonCountEntry 10 }

ciscoHealthMonCPUavgBusy5 OBJECT-TYPE
	SYNTAX	    Integer32 (1..100)
	MAX-ACCESS  read-only
	STATUS	    current
	DESCRIPTION
		"5 minute exponentially-decayed moving average of the
	CPU busy percentage. This is the polled value for avgBusy5 from the
	router shelf."
	::= { ciscoHealthMonCountEntry 11 }

ciscoHealthMonUtilEgressInOctet OBJECT-TYPE
	SYNTAX	    Counter32
	MAX-ACCESS  read-only
	STATUS	    current
	DESCRIPTION
		"This is the percentage utilization of total number of
	octets received on all the active egress interface, including framing
	characters.

	 A port is considered as an egress port if it's ifSpeed > 1544000
	 % Utilization of ifInOctets = (diff_total_ifInoctets*100)/
					   (time in seconds * total_speed)
	."
	::= { ciscoHealthMonCountEntry 12 }

ciscoHealthMonUtilEgressOutOctet OBJECT-TYPE
	SYNTAX	    Counter32
	MAX-ACCESS  read-only
	STATUS	    current
	DESCRIPTION
		"This is the percentage utilization of the total
	number of octets transmitted out on all the active egress interface,
	including framing characters.

	A port is considered as an egress port if it's ifSpeed > 1544000
	% Utilization of ifOutOctets = (diff_total_ifOutoctets*100)/
					   (time in seconds * total_speed)
	."
	::= { ciscoHealthMonCountEntry 13 }

ciscoHealthMonShelfLastUpdate OBJECT-TYPE
	SYNTAX     DisplayString (SIZE (0..32))
	MAX-ACCESS read-only
	STATUS     current
	DESCRIPTION
              "This is the last time at which the system-controller
	has polled the mib entries from a shelf. However, if system-controller
	can not talk to that shelf, this entry will have the same time as the
	last update and a string Lost Contact. All the mib entries
	corresponding to this shelf will remain as it is until
	system-controller can talk to this shelf again."
	::= { ciscoHealthMonCountEntry 14 }




ciscoHealthMonMIBNotificationEnables OBJECT IDENTIFIER ::= { cisco5800HealthMonMIB 2 }


ciscoHealthMonEnableNotification OBJECT-TYPE
        SYNTAX 	    TruthValue
        MAX-ACCESS  read-write
        STATUS      current
        DESCRIPTION
               "This variable indicates whether the system produces
	the ciscoHealthNotification.  A false value will prevent notifications
	from being generated by this system."
        DEFVAL { false }
        ::= { ciscoHealthMonMIBNotificationEnables 1 }

-- the following two OBJECT IDENTIFIERS are used to define SNMPv2 Notifications
-- that are backward compatible with SNMPv1 Traps.
ciscoHealthMonMIBNotificationPrefix OBJECT IDENTIFIER ::= { cisco5800HealthMonMIB 3 }
ciscoHealthMonMIBNotifications OBJECT IDENTIFIER ::= { ciscoHealthMonMIBNotificationPrefix 0 }

ciscoHealthMonNotification NOTIFICATION-TYPE
	OBJECTS	{
		ciscoHealthMonStatusType,
		ciscoHealthMonShelfId,
		ciscoHealthMonAddress,
		ciscoHealthMonDescr,
		ciscoHealthMonValue,
		ciscoHealthMonThreshold
		}
	STATUS	current
	DESCRIPTION
		"A ciscoHealthMonNotification is sent if the measured
	utilization has crossed the threshold value. It will be generated
	when the value rises above the threshold. ciscoHealthMonShelfId and
	ciscoHealthMonAddress are optional entries. This entry is valid only
	if the notification generated for the monitoring types set on the
	router shelf. This entry will not have anything if notification is
	generated for the monitoring types set on the system controller."
	::= { ciscoHealthMonMIBNotifications 1 }

-- conformance information

cisco5800HealthMonMIBConformance OBJECT IDENTIFIER ::= { cisco5800HealthMonMIB 4 }
cisco5800HealthMonMIBCompliances OBJECT IDENTIFIER ::= { cisco5800HealthMonMIBConformance 1 }
cisco5800HealthMonMIBGroups      OBJECT IDENTIFIER ::= { cisco5800HealthMonMIBConformance 2 }


-- compliance statements

cisco5800HealthMonMIBCompliance MODULE-COMPLIANCE
        STATUS  current
        DESCRIPTION
                "The compliance statement for entities which implement
                the Cisco Health Monitor MIB"
        MODULE  -- this module
                MANDATORY-GROUPS { cisco5800HealthMonMIBGroup }
        ::= { cisco5800HealthMonMIBCompliances 1 }

-- units of conformance

cisco5800HealthMonMIBGroup OBJECT-GROUP
        OBJECTS {
		ciscoHealthMonStatusType,
		ciscoHealthMonShelfId,
		ciscoHealthMonAddress,
		ciscoHealthMonDescr,
		ciscoHealthMonValue,
		ciscoHealthMonThreshold,
		ciscoHealthMonThresholdExceedCount,
		ciscoHealthMonT1E1LinesUp,
		ciscoHealthMonT1E1LinesDown,
		ciscoHealthMonActiveDS0,
		ciscoHealthMonTotalDS0,
		ciscoHealthMonTotalModems,
		ciscoHealthMonModemsInUse,
		ciscoHealthMonUnavailableModems,
		ciscoHealthMonIOMemUsed,
		ciscoHealthMonIOMemFree,
		ciscoHealthMonCPUavgBusy5,
		ciscoHealthMonUtilEgressInOctet,
		ciscoHealthMonUtilEgressOutOctet,
		ciscoHealthMonShelfLastUpdate,
		
		ciscoHealthMonNumShelves,	
		ciscoHealthMonNumT1E1LinesUp,	
		ciscoHealthMonNumT1E1LinesDown,
		ciscoHealthMonNumActiveDS0,	
		ciscoHealthMonNumTotalDS0,	
		ciscoHealthMonNumTotalModems,
		ciscoHealthMonNumModemsInUse,
		ciscoHealthMonNumUnavailableModems,
		
		ciscoHealthMonEnableNotification
	}
	STATUS  current
	DESCRIPTION
		"A collection of objects providing health monitoring
		capability to a cisco chassis."
        ::= { cisco5800HealthMonMIBGroups 1 }

END

