Network Working S.E. Hardcastle-Kille Group ISODE Consortium INTERNET-DRAFT T.Lenggenhager SWITCH D. Partain University of Linkoping W. Yeong Performance October 17, 1992 Expires: April 1993 Application Monitoring MIB Status of this Memo This document is an Internet Draft. Internet Drafts are working documents of the Internet Engineering Task Force (IETF), its Areas, and its Working Groups. Note that other groups may also distribute working documents as Internet Drafts. Internet Drafts are draft documents valid for a maximum of six months. Internet Drafts may be updated, replaced, or obsoleted by other documents at any time. It is not appropriate to use Internet Drafts as reference material or to cite them other than as a "working draft" or "work in progress." Please check the I-D abstract listing contained in each Internet Draft directory to learn the current status of this or any other Internet Draft. Abstract This document defines a MIB for monitoring applications running on a system. It defines specific attributes for MTAs and DSAs, and this approach could be easily extended to other applications. This document is an agreed ISODE Consortium specification (IC 4 (Version 3.12)). INTERNET--DRAFT Application MIB October 17, 1992 1 Why? There is a substantial need to monitor applications, particularly distributed system components such as MTAs and DSAs, in order to determine heavy load, broken connectivity, system failure or congestion. Specific requirements are: o General monitoring of a large number of components (typical for a large organisation). o Integration with general network management. SNMP is the clear choice for this function. The main goal is very simple read-only access. Essentially to determine up/down status and indicate operational problems (typically heavy load). 1.1 Restricted Scope There is a lot more that could be done. For example: o General MTA reconfiguration o Examination and modification of mail queues o Probing to find location of messages which have left the local MTA but have not been delivered Whilst this is cute, to be effective, it requires security. It will also be a lot more contentious and have awkward choices between generic and implementation-specific aspects. There are also other reasonable approaches to this sort of problem. This document will religiously keep simple and focus on the basic monitoring aspect. 2 Relationship to Directory Use of (X.500) directory already is tied up with application management. There are clearly many things which could be dealt with by directory or management protocols. We take the line here that static configuration is dealt with in the directory, and dynamic by Hardcastle-Kille et at Expires: April 1993 Page 1 INTERNET--DRAFT Application MIB October 17, 1992 management protocols. By placing the static information in the directory, the richness and linkage of the directory information framework does not need to be repeated in the MIB. Static information is information which has a mean time to change of the order of days or longer. A linkage will be established, so that: o The managed object contains its own directory name. This allows all directory information to be obtained by reference. This will allow a Directory capable SNMP monitor to present this information to the manager. It is intended that this will be the normal case. o The directory will reference the location of the SNMP agent, so that an SNMP capable DUA could probe dynamic characteristics of the object. o This approach could be extended further, so that the SNMP attributes are modelled as directory attributes. This would allow an SNMP capable DSA to present this information to a standard DUA. 3 Application Objects This MIB starts with a set of general purpose attributes which would be appropriate for a range of network applications, both OSI and non-OSI. Subsequent sections give attributes specific to applications. A table is defined which will have one row for each application running on the system. The only static information held on the application is its distinguished name. All other static information can be determined from the directory. The Directory Name is an external key, which allows an SNMP MIB entry to be cleanly related to the X.500 Directory. In SNMP terms, the applications are grouped in a table (applicationTable), which is indexed by an integer key (applicationIndex). The type of the application will be determined by one or both of: o Additional MIB variables specific to the applications o An association to the application of a specific protocol applicationTable OBJECT-TYPE Hardcastle-Kille et at Expires: April 1993 Page 2 INTERNET--DRAFT Application MIB October 17, 1992 SYNTAX SEQUENCE OF ApplicationEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "The table holding objects which apply to all different kinds of applications. At present, it holds information for DSA's and MTA's" ::= {application-mib 1} applicationEntry OBJECT-TYPE SYNTAX ApplicationEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "Entry associated with application" INDEX { applicationIndex } ::= {applicationTable 1} ApplicationEntry ::= SEQUENCE { applicationIndex INTEGER, distinguishedName DisplayString, applicationStatus INTEGER, applicationUptime TimeTicks, inboundAssociations INTEGER, outboundAssociations INTEGER, accumulatedInboundAssociations Counter, accumulatedOutboundAssociations Counter, lastInboundActivity TimeTicks, lastOutboundActivity TimeTicks, failedOutboundAssociations Counter } Hardcastle-Kille et at Expires: April 1993 Page 3 INTERNET--DRAFT Application MIB October 17, 1992 applicationIndex OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory DESCRIPTION "Index to uniquely identify the application" ::= {applicationEntry 1} distinguishedName OBJECT-TYPE SYNTAX DisplayString ACCESS read-only STATUS mandatory DESCRIPTION "The string encoded distinguished name of the managed object using the format of OSI-DS 23" ::= {applicationEntry 2} applicationStatus OBJECT-TYPE SYNTAX INTEGER { down(1), running(2), halted(3), congested(4), restarting(5) } ACCESS read-only STATUS mandatory DESCRIPTION "Indicates the operational status of the application entity" ::= {applicationEntry 3} applicationUptime OBJECT-TYPE SYNTAX TimeTicks ACCESS read-only STATUS mandatory DESCRIPTION "The time since the application was initialised" ::= {applicationEntry 4} inboundAssociations OBJECT-TYPE SYNTAX INTEGER Hardcastle-Kille et at Expires: April 1993 Page 4 INTERNET--DRAFT Application MIB October 17, 1992 ACCESS read-only STATUS mandatory DESCRIPTION "The number of current associations to the application entity, where it is the responder. For dynamic single threaded processes, this will be the number of application instances" ::= {applicationEntry 5} outboundAssociations OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory DESCRIPTION "The number of current associations to the application entity, where it is the initiator. For dynamic single threaded processes, this will be the number of application instances" ::= {applicationEntry 6} accumulatedInboundAssociations OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The total number of associations to the application entity since application initialisation, where it is the responder. For dynamic single threaded processes, this will be the number of application instances" ::= {applicationEntry 7} accumulatedOutboundAssociations OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The total number of associations to the application entity since application initialisation, where it is the initiator. For dynamic single threaded processes, this will be the number of application instances" ::= {applicationEntry 8} Hardcastle-Kille et at Expires: April 1993 Page 5 INTERNET--DRAFT Application MIB October 17, 1992 lastInboundActivity OBJECT-TYPE SYNTAX TimeTicks ACCESS read-only STATUS mandatory DESCRIPTION "The time since this application has had an inbound association." ::= {applicationEntry 9} lastOutboundActivity OBJECT-TYPE SYNTAX TimeTicks ACCESS read-only STATUS mandatory DESCRIPTION "The time since this application has had an outbound association." ::= {applicationEntry 10} failedOutboundAssociations OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The total number associations where the application entity is initiator and association establishment has failed, since application initialisation" ::= {applicationEntry 11} The basic applicationTable contains a list of the application entities. A second table is maintained, which holds the list of associations. This is treated as a separate group to the basic application table. Where simplified appplication monitoring is needed, this group may be omitted. This table is indexed by applicationIndex and associationIndex, with the application index coming first. associationTable OBJECT-TYPE SYNTAX SEQUENCE OF AssociationEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "The table holding a set of all active application associations" ::= {application-mib 4} Hardcastle-Kille et at Expires: April 1993 Page 6 INTERNET--DRAFT Application MIB October 17, 1992 -- the table is indexed through a combination of the index into the -- application table and an index unique to this table. for instance, -- if you were to "get remoteApplication.0.0", it would be the instance -- associated with the first entry in the applicationTable and the first -- entry in this table for that application. associationEntry OBJECT-TYPE SYNTAX AssociationEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "Entry associated with association" INDEX { associationApplicationIndex, associationIndex } ::= {associationTable 1} AssociationEntry ::= SEQUENCE { associationApplicationIndex INTEGER, associationIndex INTEGER, remoteApplication DisplayString, applicationProtocol OBJECT IDENTIFIER, applicationType INTEGER, associationDuration TimeTicks } associationApplicationIndex OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory DESCRIPTION "Index into the application table to identify the (local) application associated with the association and also an index on this table" ::= {associationEntry 1} associationIndex OBJECT-TYPE Hardcastle-Kille et at Expires: April 1993 Page 7 INTERNET--DRAFT Application MIB October 17, 1992 SYNTAX INTEGER ACCESS read-only STATUS mandatory DESCRIPTION "Index to uniquely identify the association" ::= {associationEntry 2} remoteApplication OBJECT-TYPE SYNTAX DisplayString ACCESS read-only STATUS mandatory DESCRIPTION "The name of the remote application. For an internet application this should be a domain name. For an OSI application it should be the string encoded distinguished name of the managed object using the format of OSI-DS 23. For X.400(84) MTAs which do not have a Distinguished Name, the RFC 1327 syntax 'mta in globalid' should be used" ::= {associationEntry 3} applicationProtocol OBJECT-TYPE SYNTAX OBJECT IDENTIFIER ACCESS read-only STATUS mandatory DESCRIPTION "An identification of the protocol being used for the application. For an OSI Application, this will be the Application Context. For Internet applications, it should be an Object Identifier derived from the port ** see below ***" ::= {associationEntry 4} applicationType OBJECT-TYPE SYNTAX INTEGER { ua-initiator(1), ua-responder(2), peer-initiator(3), peer-responder(4) } ACCESS read-only STATUS mandatory DESCRIPTION "Shows whether the remote application is a User Agent, or a peer Hardcastle-Kille et at Expires: April 1993 Page 8 INTERNET--DRAFT Application MIB October 17, 1992 server, and whether the remote end is initiator or responder" ::= {associationEntry 5} associationDuration OBJECT-TYPE SYNTAX TimeTicks ACCESS read-only STATUS mandatory DESCRIPTION "The time that the association has been open" ::= {associationEntry 6} Editor's Note: It has been suggested that a table be kept of failed associations, in order to help detect remote applications which are unavailable. Comments are solicited for future versions of this document. A count of failed associations is used here. This does not have the potential growth problems of a table. If this count is excessive, the logs may be examined. 4 MTA Objects If there is an MTA on the host, the following mta group may be used to monitor it. Only one MTA may be monitored on a host. This restriction is made in order to simplify the MIB. In the rare case of running multiple MTAs on one host, they may both be monitored by monitoring one from a different host which has no MTA. The first parameters are per-MTA parameters. mta OBJECT IDENTIFIER ::= {application-mib 2} mtaApplicationIndex OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory DESCRIPTION "Reference into application table to allow correlation with general application parameters" ::= {mta 1} Hardcastle-Kille et at Expires: April 1993 Page 9 INTERNET--DRAFT Application MIB October 17, 1992 numberMessages OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory DESCRIPTION "The total number of messages in all the MTA queues" ::= {mta 2} volumeMessages OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory DESCRIPTION "The total volume of messages in all the MTA queues, measured in kbytes" ::= {mta 3} submittedMessages OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of messages submitted since application initialisation" ::= {mta 4} deliveredMessages OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of messages delivered since application initialisation" ::= {mta 5} lastInboundMtaActivity OBJECT-TYPE SYNTAX TimeTicks ACCESS read-only STATUS mandatory DESCRIPTION "Time since the last time that this MTA had an active inbound association from a remote MTA" Hardcastle-Kille et at Expires: April 1993 Page 10 INTERNET--DRAFT Application MIB October 17, 1992 ::= {mta 6} lastOutboundMtaActivity OBJECT-TYPE SYNTAX TimeTicks ACCESS read-only STATUS mandatory DESCRIPTION "Time since the last time that this MTA had an outbound association to a remote MTA" ::= {mta 7} In addition to representing the MTA, and per-MTA information, there is a table which holds information on every remote MTA for which the monitored MTA has messages queued. queuedMtaTable OBJECT-TYPE SYNTAX SEQUENCE OF QueuedMtaEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "The table holding information specific to each queue for a given remote MTA" ::= {application-mib 5} queuedMtaEntry OBJECT-TYPE SYNTAX QueuedMtaEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "Entry associated with each remote MTA" INDEX { mtaIndex } ::= {queuedMtaTable 1} QueuedMtaEntry ::= SEQUENCE { mtaIndex INTEGER, queuedMtaAssociationIndex INTEGER, numberMessagesForMTA INTEGER, volumeMessagesForMTA Hardcastle-Kille et at Expires: April 1993 Page 11 INTERNET--DRAFT Application MIB October 17, 1992 INTEGER, oldestMessageQueued TimeTicks, connectFailureReason DisplayString, lastInboundRemoteMtaActivity TimeTicks, lastOutboundRemoteMtaActivity TimeTicks, scheduledRetry TimeTicks, remoteMTA DisplayString, mailProtocol OBJECT IDENTIFIER } mtaIndex OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory DESCRIPTION "Index of queued MTAs" ::= {queuedMtaEntry 1} queuedMtaAssociationIndex OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory DESCRIPTION "Reference into association table to allow correlation with active association(s) on queue. If there is no active association for this MTA, it should be -1" ::= {queuedMtaEntry 2} numberMessagesForMTA OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory DESCRIPTION "The number of messages queued for the remote MTA" ::= {queuedMtaEntry 3} Hardcastle-Kille et at Expires: April 1993 Page 12 INTERNET--DRAFT Application MIB October 17, 1992 volumeMessagesForMTA OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory DESCRIPTION "The volume of messages queued for the remote MTA, measured in kbytes" ::= {queuedMtaEntry 4} oldestMessageQueued OBJECT-TYPE SYNTAX TimeTicks ACCESS read-only STATUS mandatory DESCRIPTION "The age of the oldest message queued for this MTA, relative to the time of query" ::= {queuedMtaEntry 5} connectFailureReason OBJECT-TYPE SYNTAX DisplayString ACCESS read-only STATUS mandatory DESCRIPTION "The failure reason, if any, for the last connect attempt to the MTA. An empty string implies that the last connection attempt was successful. If there was no connection since the application started it should contain 'never'" ::= {queuedMtaEntry 6} lastInboundRemoteMtaActivity OBJECT-TYPE SYNTAX TimeTicks ACCESS read-only STATUS mandatory DESCRIPTION "Time since the last time this remote MTA had an inbound association to the local MTA" ::= {queuedMtaEntry 7} Hardcastle-Kille et at Expires: April 1993 Page 13 INTERNET--DRAFT Application MIB October 17, 1992 lastOutboundRemoteMtaActivity OBJECT-TYPE SYNTAX TimeTicks ACCESS read-only STATUS mandatory DESCRIPTION "Time since the last time this remote MTA had an outbound association to the local MTA" ::= {queuedMtaEntry 8} scheduledRetry OBJECT-TYPE SYNTAX TimeTicks ACCESS read-only STATUS mandatory DESCRIPTION "The scheduled time at which the next connection will be attempted. This time is relative to the query time" ::= {queuedMtaEntry 9} remoteMTA OBJECT-TYPE SYNTAX DisplayString ACCESS read-only STATUS mandatory DESCRIPTION "The name of the remote MTA. For an internet application this should be a domain name. For an OSI application it should be the string encoded distinguished name of the managed object using the format of OSI-DS 23. For X.400(84) MTAs which do not have a Distinguished Name, the RFC 1327 syntax 'mta in globalid' should be used" ::= {queuedMtaEntry 10} mailProtocol OBJECT-TYPE SYNTAX OBJECT IDENTIFIER ACCESS read-only STATUS mandatory Hardcastle-Kille et at Expires: April 1993 Page 14 INTERNET--DRAFT Application MIB October 17, 1992 DESCRIPTION "An identification of the protocol that will be used for the connection. For an OSI Application, this will be the Application Context. For Internet applications, it should be an Object Identifier derived from the port ** see below ***" ::= {queuedMtaEntry 11} 5 DSA Objects If it is desired to monitor DSAs (Directory System Agents) in more detail, a group of objects is provided for this. The set of DSAs is represented as a table, keyed by dsaApplicationIndex, in order to allow multiple DSAs to be run and monitored on a single host. This situation is sufficiently common to justify this increase in complexity. This key is the same as the applicationIndex, so that generic information may be correlated to DSA information. dsaTable OBJECT-TYPE SYNTAX SEQUENCE OF DSAEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "The table holding information specific to a DSA" ::= {application-mib 3} dsaEntry OBJECT-TYPE SYNTAX DSAEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "Entry associated with each DSA" INDEX { dsaApplicationIndex } ::= {dsaTable 1} DSAEntry ::= SEQUENCE { dsaApplicationIndex INTEGER, masterEntries INTEGER, Hardcastle-Kille et at Expires: April 1993 Page 15 INTERNET--DRAFT Application MIB October 17, 1992 copyEntries INTEGER, cacheEntries INTEGER, readOperations Counter, searchOperations Counter, modifyOperations Counter } dsaApplicationIndex OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory DESCRIPTION "Reference into application table to allow correlation with general application parameters" ::= {dsaEntry 1} masterEntries OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory DESCRIPTION "Number of Entries mastered in the DSA" ::= {dsaEntry 2} copyEntries OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory DESCRIPTION "Number of Entries with systematic (slave) copies maintained in the DSA" ::= {dsaEntry 3} cacheEntries OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory Hardcastle-Kille et at Expires: April 1993 Page 16 INTERNET--DRAFT Application MIB October 17, 1992 DESCRIPTION "Number of Entries cached (non-systematic copies) in the DSA" ::= {dsaEntry 4} readOperations OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of read port (read, compare, abandon) operations since application initialisation" ::= {dsaEntry 5} searchOperations OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of search port (search, list) operations since application initialisation" ::= {dsaEntry 6} modifyOperations OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of modify port (add, delete, modify, modifydn) operations since application initialisation" ::= {dsaEntry 7} Hardcastle-Kille et at Expires: April 1993 Page 17 INTERNET--DRAFT Application MIB October 17, 1992 A Object Identifier Assignment ApplicationMib {iso(1) org(3) dod(6) internet(1) private(4) enterprises(1) isode-consortium (453) definitions (1) application-mib(1)} DEFINITIONS ::= BEGIN IMPORTS enterprises, OBJECT-TYPE, Counter, DisplayString, TimeTicks FROM RFC1151-SMI; isode-consortium OBJECT IDENTIFIER ::= {enterprises 453} application-mib OBJECT IDENTIFIER ::= {isode-consortium 2} -- *** REPEAT EARLIER DEFINITIONS HERE *** END A means will be defined to allocate an object identifier to each TCP application. This will be done in consultation with the IANA. Hardcastle-Kille et at Expires: April 1993 Page 18