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